jdt*_*ney 7 jenkins jacoco sonarqube
我将我的工作从单个Hudson机器转移到多从属Jenkins环境,现在JaCoCo覆盖不再有效.
工作(旧):Hudson 2.0.1,Jenkins Sonar插件1.7.1,声纳2.1.2
BROKEN(新):Jenkins 1.446,Jenkins Sonar Plugin 1.7.2,Sonar 2.1.2
我的Hudson工作被称为Pinnacle,它曾经在同一台机器上使用Sonar在单个Hudson服务器上运行.我通过执行以下操作来设置我的(NO MAVEN)构建.
1)在我的build.xml中添加了一个Ant目标 test-with-coverage
2)在Hudson中配置Pinnacle作业以"使用以下属性调用独立声纳分析":
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
Run Code Online (Sandbox Code Playgroud)
(请注意,代码将签出到Jenkins作业工作区的Pinnacle目录中.)
3)配置声纳"常规设置"以使用JaCoCo进行代码覆盖
一切都很美妙!
但是在新的Jenkins环境中,我在Jenkins构建输出中看到了这个错误:
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
Run Code Online (Sandbox Code Playgroud)
该文件在构建运行的从站上不存在.(目录/ var/lib/jenkins/workspace/Pinnacle/Pinnacle 确实存在.)
所有其他传感器(FindBugs,PMD等)似乎正常工作.只是JaCoCo坏了.
Sonar/JaCoCo甚至可以在多从属Jenkins环境中工作吗?
我怀疑Ant任务test-with-coverage没有运行.Sonar如何找到build.xml?新老装置有什么不同?
我最近设置并成功地让Sonar和Jacoco一起跑.由于我最近的主题,我想我会检查stackoverflow的类似问题并提供帮助.我从Jacoco获得结果,但发现除了帖子中列出的属性外,您还必须明确设置以下参数:
sonar.core.codeCoveragePlugin=jacoco
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec
sonar.dynamicAnalysis=reuseReports
sonar.surefire.reportsPath=tests/test-reports
Run Code Online (Sandbox Code Playgroud)
如果您希望能够使用sonar.jacoco.reportPath属性,则必须设置sonar.core.codeCoveragePlugin = jacoco.否则,您将不得不使用sonar.jacoco.itReportPath属性.但是,我建议只设置codeCoveragePlugin和reportPath属性.否则,它将不会显示在声纳中的默认覆盖小部件下.请注意,您不能同时使用默认的覆盖工具和jacoco.它必须是一个或另一个.我决定使用Jacoco.
必须将您的ant目标配置为在运行声纳任务之前生成jacoco.exec结果:
<jacoco:coverage enabled="${tests.code.coverage}" destfile="${jacoco.exec.dest}">
<junit fork="yes" printsummary="withOutAndErr" dir="${tests.working.dir}">
...
Run Code Online (Sandbox Code Playgroud)
如果你在声纳之前运行junit,请务必告诉声纳重复使用报告和任何sunfire报告,即如果你在声纳之外运行junit:
sonar.dynamicAnalysis=reuseReports
sonar.jacoco.reportPath=tests/jacoco-exec/jacoco.exec
sonar.surefire.reportsPath=tests/test-reports
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,如果您需要更详细的调试,请使用以下属性:
sonar.verbose =真
| 归档时间: |
|
| 查看次数: |
14016 次 |
| 最近记录: |