【问题标题】:SonarQube not displaying test code coverage of Ruby on Rails projectSonarQube 不显示 Ruby on Rails 项目的测试代码覆盖率
【发布时间】:2019-03-04 22:51:37
【问题描述】:

我有一个 Ruby on Rails 项目,我想在 SonarQube 中显示测试覆盖率。该项目是使用 Jenkins 构建的,它将结果发送到 SonarQube。单元测试使用 rspec 运行,代码覆盖率使用 SimpleCov 计算。 SonarQube 要求以 json 格式生成代码覆盖率报告,因此我在 rails_helper.rb 中使用了 simplecov-json

if Rails.env.development? || Rails.env.test?
  require 'simplecov'
  require 'simplecov-json'
  SimpleCov.formatter = SimpleCov::Formatter::JSONFormatter
  SimpleCov.start
end

成功生成代码覆盖率报告并保存到coverage 文件夹,如下所示(来自 Jenkins 控制台输出):

Coverage report generated for RSpec to /my-project/coverage/coverage.json. 2000 / 2000 LOC (100.0%) covered.

我这样配置我的sonar-project.properties(阅读报道报告):

sonar.sources=.
sonar.exclusions=**/*_test.go,**/vendor/**,**/coverage/**

sonar.tests=.
sonar.test.inclusions=**/*_spec.rb
sonar.test.exclusions=**/vendor/**
sonar.ruby.coverage.reportPaths=coverage/coverage.json
sonar.ruby.coverage.framework=RSpec

Jenkins 构建项目,运行测试,生成覆盖率报告,将结果发送到 SonarQube。但由于某种原因,SonarQube 总是显示 0% 的覆盖率。

运行sonar-scanner -X(调试模式)显示此错误(Jenkins 控制台日志):

15:52:30.458 ERROR: Cannot read coverage report file, expecting standard SimpleCov resultset JSON format: 'coverage/coverage.json'
java.lang.ClassCastException: java.lang.String cannot be cast to org.sonarsource.analyzer.commons.internal.json.simple.JSONObject
    at org.sonarsource.ruby.plugin.SimpleCovSensor.mergeFileCoverages(SimpleCovSensor.java:112)
    at org.sonarsource.ruby.plugin.SimpleCovSensor.execute(SimpleCovSensor.java:71)
    at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:45)

SonarQube 似乎在读取 json 覆盖率报告时遇到问题 - 它的格式不符合预期。

【问题讨论】:

    标签: testing jenkins sonarqube code-coverage simplecov


    【解决方案1】:

    Sonar 的 SimpleCov 支持需要 .resultset.json 文件,而不是 JSON 格式化程序的输出。您需要将配置指向结果集:

    sonar.ruby.coverage.reportPaths=coverage/.resultset.json
    

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 2019-11-30
      • 2018-06-29
      • 2016-10-13
      • 2019-01-19
      • 2012-01-18
      • 2017-03-05
      • 2013-09-16
      • 2016-10-03
      相关资源
      最近更新 更多