如何在SonarQube仪表板中显示业务层的代码覆盖率

时间:2018-05-21 11:42:36

标签: jenkins sonarqube

我是Jenkins和SonarQube配置的新手。想在SonarQube仪表板中显示项目的PC层代码覆盖率。 (测试用例使用MS测试框架编写) 面对一个问题,SonarQube仪表板显示0%覆盖率,尽管PC层有40多个测试用例。 以下是'Build'配置: Build Config from Jenkins Job

第2部分: enter image description here

SonarQube仪表板 enter image description here

假设可能的原因 - sonarqube仪表板显示WebProject的结果(如屏幕截图所示)而不是业务层。需要帮助显示项目业务层的覆盖范围(截图中突出显示的PC)

enter image description here

2 个答案:

答案 0 :(得分:0)

您有24k行代码和40个单元测试?覆盖百分比可能在<1%...甚至小于0.5%。所以它被四舍五入到0%。

如果您想缩小范围,可以set exclusions查看您不希望包含在覆盖率计算中的内容(在更新之后您必须重新分析才能生效)但是在你添加更多测试之前,你的体重仍然可能在0%左右。

答案 1 :(得分:0)

几个月后,我得以解决。因为要求是实现上面问题中突出显示的PC等业务层的代码覆盖率。通过执行以下步骤可以解决此问题:

声纳插件的顺序应为:

  1. 执行Windows批处理命令-删除.trx或.coveragexml文件
  2. 用于MSBUILD的SonarQube扫描仪-开始分析
  3. 使用MSBUILD构建VS项目或解决方案
  4. 使用VSTest.console运行单元测试
  5. 执行Windows批处理命令-将测试报告从trx转换为coveragexml
  6. 用于MSBUILD的SonarQube扫描仪-结束分析

注意:请确保使用VSTest.console (而不是MS Test)运行单元测试

更改Windows批处理命令插件中的路径以删除测试结果文件

d:\jenkins\tools\nuget\nuget.exe restore "%WORKSPACE%\<Project>.sln"

if exist TestResults\ del TestResults\*.trx

if exist TestResults\ del TestResults\*.coveragexml

已将单元测试dll的路径更改为“ Bin \ .UnitTest.dll”。