2012-01-14 52 views
7

我將我的工作從單個Hudson機器轉移到多個從屬Jenkins環境,現在JaCoCo覆蓋範圍不再有效。「項目覆蓋率設置爲0%」 - JaCoCo和聲吶在Jenkins與螞蟻

工作(舊): 哈德森2.0.1, 詹金斯聲納插件1.7.1, 聲納2.1.2

壞了(新): 詹金斯1.446, 詹金斯聲納插件1.7.2, Sonar 2.1.2

我的Hudson作業被稱爲Pinnacle,它用於在同一臺機器上使用Sonar在單個Hudson服務器上運行。我通過執行以下操作來設置我的(NO MAVEN)版本。

1)增加了一個Ant目標我的build.xml稱爲test-with-coverage

2)配置在哈德森品尼高作業 「援引獨立的聲納研究」 具有這些屬性:

sonar.projectKey=com.skyboximaging:pinnacle 
sonar.projectName="Pinnacle" 
sonar.projectVersion=1.0 
sources=Pinnacle/src/java 
tests=Pinnacle/test/java 
binaries=Pinnacle/classes 
sonar.jacoco.reportPath=Pinnacle/jacoco.exec 
sonar.jacoco.antTargets=test-with-coverage 

(請注意,代碼被檢出到品尼高目錄中的詹金斯工作的工作區。)

3)配置的聲納「常規設置」使用JaCoCo代碼覆蓋

一切都很棒!

但在新的環境詹金斯,我看到這個錯誤在詹金斯建立輸出:

23:15:17.863 INFO Sensor JaCoCoSensor... 
23:15:17.868 INFO Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/workspace/Pinnacle/Pinnacle/jacoco.exec 

該文件不上的地方跑構建從存在。 (目錄/ var/lib中/詹金斯/工作區/品尼高/品尼高確實存在。)

所有其他傳感器(FindBugs的,PMD等)似乎是工作確定。只是JaCoCo壞了。

Sonar/JaCoCo甚至可以在多從屬Jenkins環境中工作嗎?

我懷疑Ant任務test-with-coverage沒有運行。 Sonar如何找到build.xml?新舊裝置有什麼不同?

回答

9

我最近設置併成功地將Sonar和Jacoco一起運行。由於我最近的話題,我想我會檢查類似的問題stackoverflow和幫助。我從Jacoco得到結果,卻發現你必須明確地設置以下參數除了你已經在您的文章中列出的屬性:你必須設置sonar.core.codeCoveragePlugin = jacoco如果

sonar.core.codeCoveragePlugin=jacoco 
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec 
sonar.dynamicAnalysis=reuseReports 
sonar.surefire.reportsPath=tests/test-reports 

你希望能夠使用sonar.jacoco.reportPath屬性。否則,您將不得不使用sonar.jacoco.itReportPath屬性。不過,我建議只設置codeCoveragePlugin和reportPath屬性。否則,它將不會顯示在聲納的默認覆蓋小部件下。請注意,您不能一起使用默認覆蓋率工具和jacoco。它必須是一個或另一個。我決定使用Jacoco。

您的螞蟻目標必須配置爲生成jacoco。運行聲納任務之前EXEC結果:

<jacoco:coverage enabled="${tests.code.coverage}" destfile="${jacoco.exec.dest}"> 
    <junit fork="yes" printsummary="withOutAndErr" dir="${tests.working.dir}"> 
    ... 

一定要告訴聲納重用報告,如果你正在運行聲納之前的JUnit任何SUNFIRE報告,也就是說,如果你的聲納之外運行JUnit:

sonar.dynamicAnalysis=reuseReports 
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec 
sonar.surefire.reportsPath=tests/test-reports 

無論出於何種原因,如果您需要更詳細的調試,請使用以下屬性:

sonar.verbose =真

+0

謝謝!設置sonar.jacoco.reportPath的指針是讓我的多項目螞蟻驅動聲納正確加載覆蓋率數據所需的最後一個位。 – 2012-06-05 20:49:06

+0

@Jason:如果我使用sahi而不是junit報告,那麼我可以在sonar.surefire.reportsPath中使用sahi報告(這些報告在html中) – vinod 2013-07-08 08:13:09