2017-08-21 50 views
1

我已經創建了Maven項目並創建了surefire-report以及jacoco報告。 jacoco.exec也生成了,如果我將我的項目上傳到編譯類的服務器上,那麼我可以看到我的代碼覆蓋率,但作爲最佳實踐,如果我省略類文件,我無法看到代碼覆蓋率。有人可以幫我嗎? 可以參考以下屏幕截圖,這將有助於您輕鬆理解我的問題。 如果我上傳的服務器我編譯的類文件,然後正常工作如下, enter image description here聲納代碼覆蓋不反映在沒有類文件的服務器上

但我不希望我的上傳遵守類文件,因爲它是不是最好的做法,因爲這樣的,我得到這個結果 enter image description here

+0

像** jacoco **這樣的工具通常需要類文件。事實上,不需要在服務器上保留類文件(BTW類文件應該打包成WAR,EAR,JAR等等)。只需將覆蓋率分析轉換爲單獨的Maven目標。並且在測試之後但部署之前執行它(如[使用JaCoCo Maven插件創建代碼覆蓋率報告以進行單元和集成測試](https://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports -for-the-unit-and-integration-tests-with-the-the-jacoco-maven-plugin /)文章)。 – flaz14

回答

3

SonarQube以及JaCoCo只需要在分析時使用類文件,但不要將它們存儲在任何地方。雖然沒有類文件SonarQube可以產生一些結果(部分甚至是錯誤的),JaCoCo絕對不能並且需要類文件。

另外需要注意的是,在它的UI中SonarQube和沒有SonarQube的原生報告中的JaCoCo都會顯示源代碼。因此很奇怪你上傳源代碼很好,但不想上傳類,但這是另一回事,因爲它們在分析後不會被上傳/使用。

+1

感謝您的快速回復。 但是如果我的jacoco擁有測試用例的報告,那麼爲什麼需要再次使用類文件來分析測試用例。我們可以從jacoco.exec獲取報告嗎? 是否必須在sonar.properties文件中包含sonar.java.binaries? –

+0

@DeepakKumbhar不知道我是否明白「爲什麼類文件需要再次用於分析測試用例」的意思,但是當您使用JaCoCo執行測試時,會得到只包含執行信息的'jacoco.exec',所以它應該是結合類文件創建關於代碼覆蓋率的html和xml JaCoCo本機報告。 SonarQube不會導入這樣的html/xml報告,而是需要jacoco.exec並與類文件結合來創建自己的報告,同時SonarQube也會根據他的目的進行類文件分析 - 查找錯誤。 – Godin

+0

謝謝...你可以發給我sonar.properties配置文件,因爲我導入sonar.java.binaries = <類文件路徑>,所以我沒有得到它正確的我做錯了什麼。 –

相關問題