2014-02-16 132 views
6

我正在分析已經過單元測試和Cobertura coverage.xml報告的Java項目。我使用的是SonarQube 4.1.1和最新的Sonar Runner。我已經成功地將Cobertura覆蓋結果導入Sonar 3.2和Ant分析器,但是使用這個新版本我遇到了問題。在新的Sonar分析執行中(通過Jenkins),我沒有在日誌中看到它會啓動任何Cobertura引擎或任何東西。我在亞軍詹金斯項目設置:SonarQube無法獲取Cobertura代碼覆蓋範圍

sonar.dynamicAnalysis=reuseReports 
sonar.java.coveragePlugin=cobertura 
sonar.cobertura.reportPath=[mypath]/coverage.xml 
sonar.junit.reportsPath=[mypath]/ 

的Cobertura在分析輸出(除了我自己的屬性值)不提和SonarQube頁面顯示「 - 」中的覆蓋率報告。單元測試結果顯示正常。

我還添加了所有源代碼,bin和測試目錄。有任何想法嗎?謝謝。

更新 不知爲什麼沒有SonarQube頁面上報道的Cobertura覆蓋的原因,是因爲在我的詹金斯項目SonarQube克隆(克隆插件)的從以前的項目工作建設?如果coverage.xml文件包含靜態路徑,那麼它可能會出錯。

回答

4

好的解決方案很明顯。 SonarCube 4.1.1沒有預裝Cobertura,所以我安裝了它,現在它工作:)也許它已預裝在3.2版本,我不記得了。

+1

你如何安裝它......以及你遵循什麼步驟獲得聲納覆蓋。 –

+1

解決方案可能聽起來很明顯,但症狀肯定不明顯......日誌中應該有某種警告或錯誤消息。 @amit_kumar作爲SQ的管理員,轉到更新中心並查找Cobertura插件。 (適用於服務器,不適用於客戶端) – Phil

0

對於SonarQube中的任何「重用報告」功能(可能是代碼覆蓋,測試執行或任何其他生成中間報告的第三方工具),報告必須基於相同的源文件生成(在文件系統位置的條款)比用於SonarQube分析的條件更好。否則,SonarQube插件將無法將報告中的路徑與分析源的路徑進行匹配。

所以你猜對了:克隆工作空間並在這個克隆上運行SonarQube分析是無法計算覆蓋率的原因。

+0

嗯我認爲它仍然無法正常工作。我現在構建,測試並運行代碼覆蓋。然後我運行了SonarQube分析,但它仍然沒有覆蓋範圍。關鍵字「Cobertura」甚至沒有出現在Sonar Runner輸出中,這讓我覺得別的東西是錯的。 – user1340582