mvn sonar:sonar -Dsonar.cpd.exclusions=**/dto/** # 本地看重复块 sonar-scanner -Dsonar.cpd.minimumTokens=50
Sonar 质量门禁卡在 Duplicated Lines on New Code 3.0%,这次只加了两个结构相似的工具类,提交直接变红。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:重复率按新增行做分母,两个类里复制过来的模板各占十几行,新增总量又小,占比一下被放大,而重复块本身是按 token 序列判定的,改改变量名并不会让它消失。
「重复代码门禁」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
处理上按这个顺序:打开报告看重复块的起止行而不是只盯百分比;把公共部分抽成方法或改成参数传递;生成代码和确有必要的重复单独排除。
确认没问题再收工,门禁通过,重复块列表里只剩生成代码,手写部分重复率降到 1% 以下。
