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

max*_*dim 9 java nullable notnull sonarqube

包有以下package-info.java:

@ParametersAreNonnullByDefault
package foo;
import javax.annotation.ParametersAreNonnullByDefault;
Run Code Online (Sandbox Code Playgroud)

类具有以下方法:

private static String toIsoString(@Nullable Instant dateTime) {
  return dateTime == null ? null : dateTime.toString();
}
Run Code Online (Sandbox Code Playgroud)

SonarQube(版本6.2,SonarJava 4.14.0.11784)在其上发出以下警告(squid:S2583):

在此输入图像描述

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

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

max*_*dim 8

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

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