2016-03-30 75 views
0

根據問題Sonar + Clover only runs on src-instrumented,建議先使用mvn clean clover2:setup install clover2:clover,然後:mvn sonar:sonar 。爲什麼要先運行mvn clean clover2:setup install clover2:clover,然後:mvn sonar:sonar

只是想知道爲什麼我們不能使用mvn clean clover2:setup install clover2:三葉草聲納:聲納?

+0

恭喜您的第一篇文章!歡迎來到這個美好的社區。 - 莎拉:P(是的,我們知道其他每個) – sarahTheButterFly

回答

1

過去,推薦單獨運行目標sonar:sonar的方法。這是沒有更多的情況下,因爲Maven的SonarQube掃描儀停止嘗試運行單元測試+通過分派新的Maven生命週期來收集您的覆蓋範圍。

一般建議現在是在單個命令中運行目標。例如mvn clean package sonar:sonar

在Clover的情況下,clover:setup的目標將改變Maven模型以使所有其他插件(如surefire)使用儀器化類而不是原始源代碼。這確實是一個問題,因爲它會阻止SonarQube匹配類文件。所以在你的情況下,你應該堅持兩個不同的目標,或者手動配置sonar.sources來引用原始源代碼。

+0

感謝您的回答。但我的問題是如果我在一個命令中運行所有目標,單元測試覆蓋在儀表板中是空白的。我必須分別運行它們以確保顯示單元測試覆蓋率。這是與SonarQube版本還是聲納maven插件版本有關?從聲納文檔中可以看出,如果在4.5之前使用SonarQube實例,則應該使用maven-sonar-plugin 2.6,而我們公司正在使用SonarQube版本4.3.2。 – Ken

+0

謝謝,這個解釋真的很有道理! – Ken

0

相比Maven的日誌,發現可能的原因:

的「MVN清潔clover2:安裝程序安裝clover2:三葉草聲納:聲納」似乎有問題,尋源迪爾斯。日誌顯示它使用$ {project} \ target \ clover \ src-instrumented和$ {project} \ target \ generated-sources \ annotations作爲源目錄。

如果明確指定src/main/java,那麼這個單個命令就可以正常工作。唯一棘手的是爲什麼單獨運行目標不需要指定sonar.sources,但插件仍然可以爲源代碼目錄找到正確的文件夾。

+0

sonar:sonar將從Maven模型(Maven插件API)中獲得'sonar.sources'的默認值。三葉草正在改變模型(可能使像surefire這樣的其他插件使用插裝類)。所以我會更新我的答案。 –

相關問題