使用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
相关产品推荐
相关产品推荐

