【发布时间】:2018-05-08 13:08:10
【问题描述】:
在 Maven 构建中,如何配置 Nullaway 以排除测试类?现在它正在触发专门检查 NullPointerExceptions 是否在正确位置抛出的代码。
要排除的代码位于通常的 src/test/java 目录中,但与模型代码位于相同的包中。
【问题讨论】:
在 Maven 构建中,如何配置 Nullaway 以排除测试类?现在它正在触发专门检查 NullPointerExceptions 是否在正确位置抛出的代码。
要排除的代码位于通常的 src/test/java 目录中,但与模型代码位于相同的包中。
【问题讨论】:
您可以像这样从 Errorprone 检查(包括 Nullaway)中排除测试源路径:
<compilerArgs>
<arg>-Xep:NullAway:ERROR</arg>
<arg>-XepOpt:NullAway:AnnotatedPackages=[...]</arg>
<arg>-XepExcludedPaths:.*/src/test/java/.*</arg>
</compilerArgs>
【讨论】:
NullAway 是一个容易出错的插件。 Error Prone 在其自己的编译器(Maven 编译器 ID javac-with-errorprone)的帮助下工作。我看到有两种方法可以避免对测试类应用 Error Prone/NullAway:
如果所有相关类都包含 @Test 注释,那么您可以使用 NullAway Maven plugin 的 -XepOpt:NullAway:ExcludedClassAnnotations=depends.on.junit.version.Test 选项。
通过在目标 testCompile 的 maven-compiler-plugin 配置中提供标准编译器 ID (<compilerId>javac</compilerId>) 来尝试在编译测试类时使用标准编译器来禁用容易出错的功能。
有关如何为测试编译提供配置的示例,请参阅接受的答案 here。
【讨论】: