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

使用Bazel单体仓库无法生成Kotlin应用的代码覆盖率报告

解决Bazel单体仓库Kotlin代码覆盖率未生成的问题
  • 显式开启Kotlin测试目标的覆盖率配置
    rules_kotlin不会默认开启覆盖率收集,需要在Kotlin测试规则(如kt_jvm_test)中添加配置:

    kt_jvm_test(
        name = "<kotlin-test-name>",
        # 其他已有配置
        coverage = True,
        plugins = [
            "@rules_kotlin//kotlin:coverage_plugin",
        ],
    )
    
  • 调整instrumentation_filter匹配Kotlin目标
    当前使用的--instrumentation_filter=//apps:<app-name>:<test-name>可能仅匹配了Go测试目标,需修改过滤器覆盖Kotlin测试,示例:

    --instrumentation_filter=//apps:<app-name>:<test-name>,//apps:<app-name>:<kotlin-test-name>
    

    若需覆盖所有Kotlin相关目标,可简化为--instrumentation_filter=//apps/<app-name>/...(根据实际仓库结构调整)

  • 确认WORKSPACE中rules_kotlin的覆盖率依赖加载
    检查WORKSPACE文件是否启用了rules_kotlin的覆盖率支持:

    load("@rules_kotlin//kotlin:setup.bzl", "kotlin_setup")
    kotlin_setup(
        version = "1.7.1",
        coverage_enabled = True,
    )
    
  • 单独测试Kotlin目标的覆盖率生成
    先排除全局命令的干扰,单独针对Kotlin测试目标执行覆盖率命令:

    bazel coverage --combined_report=lcov --nocache_test_results //apps:<app-name>:<kotlin-test-name>
    

    若仍无法生成,添加-s参数查看详细日志,排查覆盖率收集失败的具体原因:

    bazel coverage -s //apps:<app-name>:<kotlin-test-name>
    
  • 检查版本兼容性
    Bazel 5.3.0与rules_kotlin v1.7.1的覆盖率支持存在兼容性风险,可尝试升级Bazel至6.x版本,同时确保rules_kotlin、rules_go版本与Bazel新版本适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:45:32