SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率
SonarQube + Jacoco - Unable to read Koin module test coverage
我在尝试将 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)
因此,我的模块 class 的 o 覆盖率为 0%,但如果我查看 HTML 报告,它似乎工作正常:
Jacoco HTML report
这只发生在我的 Koin 模块上,我不确定问题是出在 Koin 的工作方式还是 Jacoco 和 Kotlin 之间的某些不兼容
我遇到了同样的问题,生成报告时似乎是 jacoco 的问题,有关此问题的更多信息:https://github.com/jacoco/jacoco/issues/763
解决方案: 升级到已修复该问题的 0.8.3。
现在有了新版本的 jacoco,我的 类 声纳覆盖范围为零,现在有了真正的覆盖范围。
我在尝试将 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)
因此,我的模块 class 的 o 覆盖率为 0%,但如果我查看 HTML 报告,它似乎工作正常:
Jacoco HTML report
这只发生在我的 Koin 模块上,我不确定问题是出在 Koin 的工作方式还是 Jacoco 和 Kotlin 之间的某些不兼容
我遇到了同样的问题,生成报告时似乎是 jacoco 的问题,有关此问题的更多信息:https://github.com/jacoco/jacoco/issues/763
解决方案: 升级到已修复该问题的 0.8.3。
现在有了新版本的 jacoco,我的 类 声纳覆盖范围为零,现在有了真正的覆盖范围。