尝试将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)
因此,我的模块类的覆盖率为0%,但是如果我查看HTML报告,它似乎可以正常工作:
这仅在我的Koin模块中发生,我不确定是问题是Koin的工作方式还是Jacoco和Kotlin之间的不兼容
答案 0 :(得分:3)
我遇到了同样的问题,在生成报告时似乎是jacoco的问题,有关此问题的更多信息:https://github.com/jacoco/jacoco/issues/763
解决方案:升级到已修复该问题的版本的 0.8.3 。
现在有了新版本的jacoco,我的声纳覆盖范围为零的班级现在有了真正的覆盖范围。