将Sonar与本地Teamcity代码覆盖(Java)集成



声纳未拾取IntellijIdea/Jacobo覆盖报告生成的代码覆盖报告。

这是我试图用声纳获取jacoco报告生成的的一个样本

构建步骤:
步骤1
蚂蚁
生成文件路径:junit Build.xml
目标:默认
已启用JaCoCo覆盖
执行:如果之前的所有步骤都成功完成
步骤2
SonarQube Runner执行:如果之前的所有步骤都成功完成

工件:
.teamcity
 nbsp nbsp;覆盖范围_jacoco
 nbsp nbsp nbsp nbsp;jacoco.exec

UT JaCoCo报告:.teamcity/coverage_JaCoCo/JaCoCo.exec

JaCoCoSensor:未找到JaCoCo报告:/export//BuildAgent2/工作/…/。teamcity/coverage_jacoco/jacoco.exec

声纳:
此组件没有覆盖范围详细信息。

问题是TeamCity jacoco运行程序将输出文件放置在一个临时文件位置,当作为maven/ant构建的一部分运行时,声纳插件或声纳无法找到该位置。".teamcity"在已发布的工件存储中,而不是在构建区域中,并且在发布之前,jacoco输出似乎在一个随机命名的目录中。

另一种选择是关闭teamcity jacoco runner,并通过maven或ant构建本身触发覆盖和声纳扫描。Sonar可以配置为通过在管理->java->jacoco设置(相对于构建或模块根)中放置正确的位置来查找结果。这将使您的覆盖范围进入Sonar。

要将覆盖率报告添加回teamcity,您需要在构建常规设置中添加一个工件,该工件将报告html文件收集到coverage.zip文件中。然后,您将在构建结果中得到一个代码覆盖率选项卡。(如果你得到两个,那么你仍然在运行团队城市覆盖跑步者。)

简而言之,maven构建(ant在逻辑上是相同的):

  • 关闭teamcity构建步骤中的覆盖选项
  • 添加org.jacoco:jacoco-maven插件:准备代理目标以创建声纳可消耗的报告
  • 在sonarqube中,将jacoco UT报告设置为"target/jacoco.exec"
  • 添加org.jacoco:jacoco-maven插件:报告目标以创建供teamcity使用的html报告
  • 添加这个工件"target/site/jacoco/**/.=>coverage.zip",使html报告显示为teamcity中的选项卡

对于有多个报告的多模块构建,我找不到将这些报告纳入团队城市的方法——尽管它们在声纳中看起来很好。有一个jacoco合并的目标可能会有所帮助,但我还没有成功——我怀疑这会扰乱声纳视图。

最新更新