SonarQube + Jacoco-无法阅读Koin模块测试报道

时间:2018-12-13 18:28:53

标签: kotlin sonarqube jacoco sonarqube-scan koin

尝试将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报告,它似乎可以正常工作:

Jacoco HTML report

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

1 个答案:

答案 0 :(得分:3)

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

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

现在有了新版本的jacoco,我的声纳覆盖范围为零的班级现在有了真正的覆盖范围。