繁体   English   中英

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

[英]Maven + Sonar + Findbugs: Findbugs needs sources to be compiled

在几个月来第一次参与我的一个项目之后,我想运行Sonar来检查我是否引入了任何新的违规行为。 正如我以前做过很多次,我首先下载了最新稳定版的Sonar(sonarqube-4.5.2)然后用mvn sonar:sonar运行了这个项目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 - >指向src / org / myproject
    • sonar.binaries - >指向target / classes / org / myproject
    • sonar.java.binaries - >指向target / classes / org / myproject
    • sonar.tests - >指向test / org / myproject
  • 尝试相同的属性,但使用绝对路径。 我还尝试只指定父文件夹(src,test,target)的路径。 没有成功
  • 我已经为项目添加了一个包含各种属性的sonar-project.properties文件,没有任何成功
  • 在运行mvn sonar:sonar之前使用各种Maven生命周期编译项目mvn sonar:sonar

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

使用Maven运行SonarQube分析时,您无需指定以下属性:

  • sonar.sources
  • sonar.tests
  • sonar.libraries
  • sonar.binaries

,因为SonarQube Maven为您做到了这一点。

显然你可以尝试覆盖它们,但你所做的是错误的,因为Maven编译成“目标/类”,所以“sonar.binaries”应该设置为这个文件夹(而不是“target / classes / org / myproject”)。

因此,为了简化(事实上也更简单),只需从POM中删除这些属性即可。

还有另一个java库设置,上面没有提到:

  • sonar.java.libraries

例如

sonar.java.libraries=lib/*.jar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM