SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率

Posted

技术标签:

【中文标题】SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率【英文标题】:SonarQube + Jacoco - Unable to read Koin module test coverage 【发布时间】:2019-05-15 00:52:24 【问题描述】:

我在尝试将 Jacoco 代码覆盖率导入声纳时遇到了一些问题,这发生在所有 Koin 模块中。

声纳版本: 7.5.0.20127

Jacoco 版本: 0.8.2

错误:

       ERROR: Cannot import coverage information for file 'mmaccount/src/main/java/br/com/project/mmaccount/di/AccountModule.kt', coverage data is invalid. Error: 
java.lang.IllegalStateException: Line 84 is out of range in the file mmaccount/src/main/java/br/com/project/mmaccount/di/AccountModule.kt (lines: 83)
    at org.sonar.api.internal.google.common.base.Preconditions.checkState(Preconditions.java:197)
    at org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage.validateLine(DefaultCoverage.java:93)
    at org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage.lineHits(DefaultCoverage.java:81)

因此,我的模块类的 o 覆盖率为 0%,但如果我查看 html 报告,它似乎工作正常:

Jacoco HTML report

这仅发生在我的 Koin 模块中,我不确定问题是 Koin 的工作原理还是 Jacoco 和 Kotlin 之间的一些不兼容

【问题讨论】:

您找到解决此问题的方法了吗? 【参考方案1】:

我遇到了同样的问题,生成报告时似乎是 jacoco 的问题,有关此问题的更多信息:https://github.com/jacoco/jacoco/issues/763

解决方案:升级到已修复该问题的 0.8.3

现在有了新版本的 jacoco,我的声纳覆盖率为零的课程现在有了真正的覆盖率。

【讨论】:

以上是关于SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率的主要内容,如果未能解决你的问题,请参考以下文章

JaCoCo SonarQube 不兼容版本 1007

gradle、sonarqube 和 jacoco 插件的哪些版本兼容

Android - Jacoco 无法正确生成 xml 报告(已解决)

SonarQube + JaCoCo + TeamCity 模块名称错误

SonarQube 覆盖缺少 Jacoco 报告涵盖的一些行

SonarQube 和 JaCoCo (maven) 命名约定