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

标签 kotlin sonarqube jacoco sonarqube-scan koin

我在尝试将 Jacoco 代码覆盖率导入 Sonar 时遇到一些问题,所有 Koin 模块都会发生这种情况。

Sonar 版本: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 之间的不兼容性

最佳答案

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

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

使用新版本的 jacoco,现在我的 Sonar 覆盖率为零的类现在拥有了真正的覆盖率。

关于kotlin - SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53768066/

相关文章:

spring-boot - kotlintest如何测试spring boot应用

eclipse - 如何在Eclipse Gradle项目中手动使用Jacoco

java - Android-Jacoco代码覆盖率忽略了Robolectric测试

java - SonarQube 代码重复检测器是否可以参数化以停止在方法边界上?

java - Tomcat7 Maven 插件和 JaCoCo

kotlin - 如何将分机转为成员(member)?

android - OutlineTextField 、TextField 在 Jetpack Compose 1.0.0-alpha02 中不起作用

json - MismatchedInputException:无法构造 `java.util.LinkedHashMap`的实例

docker - Sonarqube从7.4社区升级到7.9 JVM错误

jenkins - 如何在没有 Maven 和 Docker 的情况下在 Jenkins 声明性管道中执行 SonarQube 扫描器