Sonar Web 服务 - 代码覆盖率指标

Posted

技术标签:

【中文标题】Sonar Web 服务 - 代码覆盖率指标【英文标题】:Sonar Web Service - Code Coverage Metrics 【发布时间】:2015-06-14 18:01:02 【问题描述】:

我正在尝试通过Sonar Web Service 文档提取声纳代码覆盖率指标。

Sonarqube API single class test coverage 建议我应该将此模式用于我的目标类名称

https://[hostname]/api/resources?resource=com.a.b.c.d.om:[module-name]:com.a.b.c.d.e.mobile.XYZActionHandler&metrics=coverage,branch_coverage

但我发现只有在资源名称中使用 java 源路径才有效

https://[hostname]/api/resources?resource=com.a.b.c.d.om:[module-name]:src/main/java/com/a/b/c/d/e/actions/mobile/XYZActionHandler.java&metrics=coverage,branch_coverage

有人可以解释为什么第一个 URL 失败但第二个有效吗?

【问题讨论】:

【参考方案1】:

这取决于您使用的 SonarQube 版本。

在最近的版本中(至少自上一个 LTS 以来,可能远至 4.2),Java 组件的键确实是它的路径,而在旧版本中,它是它的完全限定名称(package.Class)。

【讨论】:

使用 v4.2。有没有办法通过java类名查询key? 我不这么认为,但您应该能够使用 Java 类名构建新密钥,具体取决于您的项目结构。例如,在标准的 Maven 项目中,Java 文件密钥将始终为 project.key:module.key:src/main/java/some/package/MyClass.java true - 但这意味着我必须从 pom.xml 中提取信息以确定项目和模块键。谢谢

以上是关于Sonar Web 服务 - 代码覆盖率指标的主要内容,如果未能解决你的问题,请参考以下文章

ant+sonar+jacoco代码质量代码覆盖率扫描

Sonar是否使用Jacoco插件进行代码覆盖

总体覆盖率指标不反映我的本地结果

使用Jenkins Sonar插件构建成功后,Sonar没有显示代码覆盖率

关于代码覆盖率的探索

SONAR - 使用 Cobertura 测量代码覆盖率