qiniu / goc

A Comprehensive Coverage Testing System for The Go Programming Language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dump 代码覆盖率报错

baijingchuan opened this issue · comments

goc版本号:1.4.5
场景:使用goc profile获取代码覆盖率时
报错内容:error merging gitlab.xx.com/xxx/overview.go: coverage block mismatch: block #54 for gitlab.xx.com/xxx/overview.go ({StartLine:301 StartCol:22 EndLine:302 EndCol:90 NumStmt:1 Count:0} mismatches {StartLine:301 StartCol:22 EndLine:302 EndCol:57 NumStmt:1 Count:0})
报错位置源代码:
image

@baijingchuan 看起来是前后两次的代码版本不一致

@CarlJi 两次版本的代码在注册中心注册的address不一样,拉取代码覆盖率的时候也是按address拉取的,所以两次版本的代码的覆盖率是分开收集的。理论上应该不是因为代码版本不一致引起的

goc profile 针对同一个服务获得的覆盖率结果,会做merge动作。但是如果代码版本不一致,它就没办法merge。这实际是go 覆盖率方案的原生不足。

所以我看行业内的通用做法是,也会把git commit 信息保存,基于commit 来展示覆盖率。而commit 某种程度也代表 "代码版本"。

@CarlJi 感谢,找到原因了,因为我们一个代码仓库对应多个实例,实例是单独部署的,两个实例部署的不是同一个版本的代码,导致merge失败