我的设置:
错误示例:
16:00:54 [INFO] [23:00:54.219] Sensor JavaSquidSensor
16:00:55 [INFO] [23:00:55.030] Java Main Files AST scan...
16:00:55 [INFO] [23:00:55.030] 1532 source files to be analyzed
16:00:58 [ERROR] [23:00:57.927] Class not found: javax.annotation.Nullable
16:00:58 [ERROR] [23:00:57.928] Class not found: javax.annotation.CheckReturnValue
16:00:58 [ERROR] [23:00:58.114] Class not found: javax.annotation.Nullable
根据这个stackoverflow question,javax.annotation应该是java 1.7及更高版本的一部分。此外,我已经尝试将其放在本地maven存储库中,但这没有帮助。
那么Sonar试图找到这个包裹在哪里?有什么帮助?!?
更新
答案 0 :(得分:9)
根据http://docs.oracle.com/javase/7/docs/api/index.html?javax/annotation/package-summary.html,您期望的类不是JDK 7的一部分。
您正在寻找的课程是Google JSR-305实施的一部分,该实施是在https://code.google.com/p/jsr-305/source/browse/trunk/ri/src/main/java/javax/annotation/Nullable.java?r=24启动并转移到Findbugs:
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
根据https://jcp.org/en/jsr/detail?id=305,JSR-305已完成,但处于休眠状态,尚未添加到JDK版本中。
希望它有所帮助。
答案 1 :(得分:9)
为避免将SonarQube特定依赖项添加到项目中,请定义如下配置文件:
<profile>
<id>sonarqube</id>
<dependencies>
<dependency>
<groupId>org.joda</groupId>
<artifactId>joda-convert</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
</profile>
然后使用类似
的命令运行声纳分析mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar -Psonarqube,sonarqube-dev
sonarqube-dev配置文件在我的〜/ .m2 / settings.xml中定义,它只是指定我的开发环境SonarQube安装的位置
<profile>
<id>sonarqube-dev</id>
<properties>
<!-- no direct db connections in new sonar -->
<sonar.host.url>
http://localhost:9000/
</sonar.host.url>
</properties>
</profile>
这一切取得了什么成果?
答案 2 :(得分:2)
这是最新答案的附录:
我看到类似的问题,并将google findbugs依赖项添加到项目依赖项有帮助。类似的问题发生在像joda转换
[ERROR] [20:44:25.247] Class not found: org.joda.convert.ToString
因此我也添加了
`<dependency>
<groupId>org.joda</groupId>
<artifactId>joda-convert</artifactId>
<version>1.8.1</version>
<scope>provided</scope>
</dependency>`
但请注意,我将范围设置为提供,以防止将这些新依赖项添加到生成的war文件中。
但是,我仍然想知道为什么会出现这些错误,因为所分析的类似乎都没有使用这些注释?