在几个月来第一次参与我的一个项目之后,我想运行Sonar来检查我是否引入了任何新的违规行为。正如我以前做过很多次,我首先下载了Sonar的最新稳定版本(sonarqube-4.5.2)然后用mvn sonar:sonar
一切都与Sonar方式配置文件一起使用,因此我决定切换到Findbugs配置文件。然而,在分析项目时,我收到了以下警告:
[WARN] [13:21:45.287] Findbugs需要编译源代码。请在执行声纳之前构建项目或检查已编译类的位置,以使Findbugs能够分析您的项目。
我在(在同一个项目上,但是使用旧版声纳)之前从未遇到过这个问题,所以我在互联网上搜索,发现我可能需要定义sonar.binaries
将Sonar指向已编译的类。 (看起来在我的情况下,Sonar过去自动发现了这个)。不过我在pom.xml
添加了以下属性:
<sonar.sources>${basedir}/src/org/myproject</sonar.sources>
<sonar.binaries>${basedir}/target/classes/org/myproject</sonar.binaries>
<sonar.java.binaries>${basedir}/target/classes/org/myproject</sonar.java.binaries>
<sonar.tests>${basedir}/test/org/myproject</sonar.tests>
但是,在看到sonar.binaries
现在明确指向Maven的目标文件夹时,我仍然会收到同样的错误。
[INFO] [15:18:46.496] Source paths: src/org/myproject
[INFO] [15:18:46.496] Test paths: test/org/myproject
[INFO] [15:18:46.496] Binary dirs: target/classes/org/myproject
我尝试过的目标:
pom.xml
以包含以下声纳属性
sonar-project.properties
文件,但没有任何成功mvn sonar:sonar
我真的很困惑,因为这在过去就像一个魅力。
答案 0 :(得分:0)
使用Maven运行SonarQube分析时,您无需指定以下属性:
sonar.sources
sonar.tests
sonar.libraries
sonar.binaries
,因为SonarQube Maven为您做到了这一点。
显然你可以尝试覆盖它们,但是你所做的是错误的,因为Maven编译成“目标/类”,所以“sonar.binaries”应该设置为这个文件夹(而不是“target / classes / org / myproject”) )。
因此,为了简化(事实上也更简单),只需从POM中删除这些属性即可。
答案 1 :(得分:0)
还有另一个java库设置,上面没有提到:
e.g。
sonar.java.libraries=lib/*.jar