Maven + Sonar + Findbugs:Findbugs需要编译源代码

时间:2015-01-18 14:52:54

标签: java maven sonarqube findbugs

在几个月来第一次参与我的一个项目之后,我想运行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

我尝试过的目标:

  • 下载了完全不起作用的sonarqube-5.0
  • 修改了我的pom.xml以包含以下声纳属性
    • sonar.sources - &gt;指向src / org / myproject
    • sonar.binaries - &gt;指向目标/ classes / org / myproject
    • sonar.java.binaries - &gt;指向目标/ classes / org / myproject
    • sonar.tests - &gt;指向test / org / myproject
  • 尝试使用相同的属性,但使用绝对路径。我还尝试只指定父文件夹(src,test,target)的路径。没有成功
  • 我已经为项目添加了一个包含各种属性的sonar-project.properties文件,但没有任何成功
  • 在运行mvn sonar:sonar
  • 之前使用各种Maven生命周期编译项目

我真的很困惑,因为这在过去就像一个魅力。

2 个答案:

答案 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库设置,上面没有提到:

  • sonar.java.libraries

e.g。

sonar.java.libraries=lib/*.jar