java - Maven + Sonar + Findbugs : Findbugs needs sources to be compiled

标签 java maven sonarqube findbugs

在几个月来第一次从事我的一个项目之后,我想运行 Sonar 来检查我是否引入了任何新的违规行为。正如我之前做过很多次一样,我首先下载了最新的稳定版 Sonar (sonarqube-4.5.2) 然后使用 mvn sonar:sonar

运行项目

一切都适用于 Sonar Way 配置文件,因此我决定切换到 Findbugs 配置文件。然而,在分析项目时,我收到以下警告:

[WARN] [13:21:45.287] Findbugs needs sources to be compiled. Please build project before executing sonar or check the location of compiled classes to make it possible for Findbugs to analyse your project.

我以前从未遇到过这个问题(在同一个项目上,但使用的是旧版本的sonar),所以我在网上搜索了一下,发现我可能需要定义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 属性
    • 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 生命周期编译项目

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

最佳答案

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

  • sonar.sources
  • sonar.tests
  • sonar.libraries
  • Sonar 二进制文件

,因为 SonarQube Maven 会为您做这件事。

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

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

关于java - Maven + Sonar + Findbugs : Findbugs needs sources to be compiled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28011038/

相关文章:

jenkins - 如何从 Jenkins 管道中选择sonarqube质量门?

java - 由于参数无效,SPRING XD -SQOOP 作业失败

java - Is Class<T> immutable in Java,也就是 Class<T> 是 HashMap 的安全键吗?

java - 从父 pom 的插件执行中删除一个目标

java - Maven:简单的 classpathLayoutType 正在生成类似于存储库 classpathLayoutType 的类路径

java - 使用 XPath.compile() 容易受到 XPath 注入(inject)

c# - 如何为 SonarQube.Scanner.MSBuild.exe 提供参数?

java - 阻塞 DBCP 连接池(打开和关闭连接)。 OpenEJB 中的数据库连接池是可插拔的吗?

java - Android ActionBar 不显示在代码中设置的标题

maven - 从 jar (Maven) 中排除依赖项的未使用部分