包有以下package-info.java:
@ParametersAreNonnullByDefault
package foo;
import javax.annotation.ParametersAreNonnullByDefault;
Class有以下方法:
private static String toIsoString(@Nullable Instant dateTime) {
return dateTime == null ? null : dateTime.toString();
}
SonarQube(6.2版,SonarJava 4.14.0.11784)发出以下警告(鱿鱼:S2583):
我怎样才能说服SonarQube代码实际上是正确的?
有趣的是,Idea中的SonarLint插件(3.0.0.2041)不会生成相同的警告。
答案 0 :(得分:8)
显然,此问题是由我们使用sonar-scanner
而未指定sonar.java.libraries
引起的。由于它的多模块maven项目,我们不清楚如何正确指定sonar.java.libraries
。
sonar-scanner
,因为插件可以访问构建项目的类路径。确实,这为我们解决了这个问题。
答案 1 :(得分:-2)
JavaDoc of @Nullable
说(强调我的)
此注释主要用于覆盖Nonnull注释。 静态分析工具通常应将带注释的项目视为没有注释,除非它们配置为最小化误报。
相应地,SonarJava忽略了注释。
如果您想挑战SonarJava采取的行动,请open a thread: - )