2014-10-30 211 views
2

我已經在intellij中安裝了SonarQube插件並將我的項目關聯到了我們的聲納服務器。服務器告訴我每個類的分支覆蓋率,並在我提交單元測試時更新。然而,當我運行一個本地分析(右鍵點擊項目 - >分析 - >按名稱運行檢查 - > SonarQube)時,SonarQube告訴我所有類的X more branches need to be covered by unit tests to reach the minimum threshold of 65.0% branch coverage,即使添加更多單元測試,它也不會在本地更改但它確實在服務器上發生變化)intellij中的SonarQube在運行分析時沒有采用單元測試分支覆蓋

任何想法爲什麼會發生這種情況?

回答

4

這是一個已知的當前限制(實際上適用於IntelliJ和Eclipse插件):本地分析不能自動執行單元測試,因此它們無法獲得覆蓋結果併爲您提供正確的信息。

原因是本地分析只是「標準」分析,不會將數據推送到服務器。根據定義,SonarQube分析不會執行任何外部工具,它們只是在需要時重複使用以前生成的報告。

如果它是基於Maven的項目,那麼您有一個解決方案:在啓動本地分析之前運行mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true。這應該在默認位置生成覆蓋率報告,因此應該起作用。

+0

謝謝,絕對好知道。我想我的後續行動將是:如何在啓動本地分析之前生成報告,以及我將在哪裏放置這些報告? – 2014-10-31 15:40:17

+1

那麼,如果它是基於Maven的項目,在啓動本地分析之前運行「mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore = true」。這應該在默認位置生成覆蓋率報告,因此應該起作用。但我從來沒有測試過它。 – 2014-10-31 16:37:00

+0

太棒了,工作。你可以編輯你的答案,包括這一點,我可以接受它? :) – 2014-11-03 16:26:39

相關問題