@Nullable和SonarQube'有条件执行的块应该可以访问'警告

时间:2017-10-19 18:20:23

标签: java sonarqube nullable notnull

包有以下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):

enter image description here

我怎样才能说服SonarQube代码实际上是正确的?

有趣的是,Idea中的SonarLint插件(3.0.0.2041)不会生成相同的警告。

2 个答案:

答案 0 :(得分:8)

显然,此问题是由我们使用sonar-scanner而未指定sonar.java.libraries引起的。由于它的多模块maven项目,我们不清楚如何正确指定sonar.java.libraries

来自SonarSource的Nicolas Peru建议我们应该使用声纳maven插件而不是sonar-scanner,因为插件可以访问构建项目的类路径。确实,这为我们解决了这个问题。

答案 1 :(得分:-2)

JavaDoc of @Nullable说(强调我的)

  

此注释主要用于覆盖Nonnull注释。 静态分析工具通常应将带注释的项目视为没有注释,除非它们配置为最小化误报。

相应地,SonarJava忽略了注释。

如果您想挑战SonarJava采取的行动,请open a thread: - )