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

Jacoco 0.8.7覆盖率数据无效 导入Sonarqube报行号超范围错误

报错根因

该错误是因为Jacoco生成覆盖率报告时对应的源文件版本,与Sonarqube扫描时读取的本地源文件版本不一致:Jacoco报告中记录了类的第88行有覆盖率数据,但Sonarqube读取到的当前源文件实际只有87行,行号匹配失败导致导入报错。

解决方案
  • 第一步清空所有历史构建产物:删除编译生成的class文件、Jacoco覆盖率临时统计文件(.exec后缀)、旧的XML格式覆盖率报告,避免历史缓存数据干扰
  • 第二步基于最新源代码重新全量执行流水线:先做代码编译、Jacoco字节码打桩,再执行单元测试生成覆盖率统计数据,最后生成新的XML覆盖率报告
  • 第三步确保Sonarqube扫描前没有修改任何源文件,直接使用刚生成的最新覆盖率报告执行扫描
  • 如果是Kotlin项目,确认版本兼容性:Jacoco 0.8.7最低支持Kotlin 1.5版本,若项目Kotlin版本低于1.5,可升级Jacoco到最新稳定版,或调整Kotlin版本到兼容范围
  • 若项目开启了代码混淆、字节码增强逻辑,需要在对应配置中保留行号映射:比如ProGuard配置中添加-keepattributes LineNumberTable参数,避免字节码行号和源文件行号不匹配
验证方式

你可以手动打开Jacoco生成的XML报告,找到对应类的<sourcefile>标签,查看内部记录的行号最大值,和本地对应源文件的实际行数做对比,确认二者是否匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:03