簡體   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