You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android项目:Kover排除代码后SonarQube仍统计覆盖率的问题求助

解决方案:让Kover生成Jacoco格式报告同步给SonarQube

你的问题核心在于Kover默认生成的报告格式,SonarQube无法解析其中的代码排除规则。通过让Kover输出Jacoco标准格式的覆盖率报告,就能让SonarQube正确识别被注解排除的代码块,无需移动预览文件或用无效的块忽略配置。

步骤1:配置Kover生成Jacoco XML报告

修改项目的Gradle配置,保留原有的注解排除规则,同时让Kover输出Jacoco格式的XML报告:

kover {
    reports {
        filters {
            excludes {
                annotatedBy("com.example.MyAnnotation")
            }
        }
        // 开启Jacoco格式报告生成
        jacoco {
            xml.set(file("$buildDir/reports/kover/jacoco.xml"))
        }
    }
}

步骤2:让SonarQube读取Jacoco报告

在SonarQube的配置中(可以是项目根目录的sonar-project.properties,或者Gradle的sonar扩展块),指定Jacoco报告的路径:

// Gradle配置示例
sonar {
    properties {
        property("sonar.coverage.jacoco.xmlReportPaths", "$buildDir/reports/kover/jacoco.xml")
    }
}

原理说明

Kover的原生报告格式仅在本地HTML展示时能识别注解排除规则,但SonarQube对Jacoco格式的支持更完善——Jacoco XML报告中会明确标记哪些代码行被排除在覆盖率统计外,SonarQube读取后就能同步排除这些代码的覆盖率计算。

备选临时方案:使用//NOSONAR注释(不推荐)

如果不想修改报告格式,可以在Compose预览函数的行首添加//NOSONAR注释,SonarQube会忽略该行的覆盖率统计。但这个方法需要手动给每个预览函数添加注释,维护成本较高,仅适合临时场景。

内容的提问来源于stack exchange,提问作者Wirling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:37:37