SonarQube中文网站 > 新手入门 > SonarQube重复代码怎么查看 SonarQube重复代码比例过高怎么降低
教程中心分类
SonarQube重复代码怎么查看 SonarQube重复代码比例过高怎么降低
发布时间:2026/07/24 17:00:35

  项目多次迭代后,相似的校验、转换、异常处理和接口调用可能分散在不同文件中。代码虽然还能运行,但后续修改同一条规则时,开发人员往往要同时处理多个位置,漏改一处就可能造成逻辑不一致。弄清SonarQube重复代码怎么查看SonarQube重复代码比例过高怎么降低,可以先找到重复集中的文件,再根据业务关系完成重构和验证。

  一、SonarQube重复代码怎么查看

 

  SonarQube完成扫描后,会展示重复行、重复块和重复行比例。查看时应从项目指标继续进入文件详情,不能只看首页上的百分比。

 

  1、打开重复代码指标

 

  ①登录SonarQube并进入目标项目。

 

  ②点击顶部的【指标】。

 

  ③在指标分类中选择【重复】。

 

  ④切换【总体代码】或【新代码】。

 

  ⑤查看【重复行】【重复块】【重复行(%)】。

 

  【重复行(%)】由重复行数除以代码行数计算;【重复块】用于统计被识别出的重复代码片段。Java项目主要按连续语句识别,其他多数语言会结合连续令牌和代码行数判断。只修改缩进或字符串内容,通常不能消除重复标记。

 

  2、定位具体文件和代码块

 

  ①在【指标】→【重复】页面查看文件列表。

 

  ②按【重复行】排序,找出对项目整体比例影响较大的文件。

 

  ③再按【重复行(%)】排序,找出文件内部重复集中的位置。

 

  ④点击文件名称进入源码页面。

 

  ⑤点击被标记的重复行,查看关联代码块。

 

  打开关联文件后,还要比较输入参数、返回结果和业务用途。写法相似但职责不同的代码不宜直接合并。

 

  二、SonarQube重复代码比例过高怎么降低

 

  SonarQube负责识别重复位置,不会自动修改源代码。降低比例需要回到开发工具中处理代码,再重新扫描。

 

  1、提取同一文件中的重复代码

 

  ①在SonarQube中记下文件路径和重复行号。

 

  ②回到开发工具,打开对应文件。

 

  ③选中几处代码中完全相同的语句。

 

  ④新建私有方法,把相同语句移动进去。

 

  ⑤将类型、状态值等差异改成方法参数。

 

  ⑥用方法调用替换原有代码并删除旧语句。

 

  ⑦运行对应的单元测试。

 

  如果提取后参数很多,说明公共范围过大,应缩小到真正稳定的处理逻辑。

  2、整理多个类中的共用逻辑

 

  ①确认重复代码属于同一业务模块,且后续变化方向一致。

 

  ②在模块中新建校验器、转换器或处理服务。

 

  ③把重复的校验、计算或转换代码移动到新组件中。

 

  ④为差异内容增加参数,或建立独立规则接口。

 

  ⑤在原有类中调用新组件并删除旧代码。

 

  ⑥重新编译,再运行相关单元测试和集成测试。

 

  共同流程一致但其中某一步规则不同时,可以保留主流程,把差异拆成策略实现,避免在公共方法中不断增加条件判断。

 

  3、排除生成代码和第三方文件

 

  确认文件不属于团队维护范围后,再通过分析范围排除。

 

  ①进入目标项目。

 

  ②点击【项目配置】→【通用设置】→【分析范围】。

 

  ③找到【重复】分类中的排除设置。

 

  ④在【sonar.cpd.exclusions】对应输入框中填写路径,例如**/generated/**。

 

  ⑤多个规则使用逗号分隔。

 

  ⑥点击【保存】并重新运行扫描任务。

 

  该设置只会排除匹配文件,不会修改源代码。持续集成环境中的同名参数会覆盖界面配置,保存后未生效时还要检查流水线参数。

 

  三、调整后怎么确认处理有效

 

  代码重构完成后,需要同时检查功能测试和SonarQube指标,避免重复率下降后出现新的功能问题。

 

  1、重新扫描并核对变化

 

  ①运行受影响模块的单元测试和集成测试。

 

  ②执行项目原有的构建与SonarQube扫描任务。

 

  ③分析完成后进入【指标】→【重复】。

 

  ④对比【重复行】【重复块】【重复行(%)】。

 

  ⑤重新打开原文件,确认旧重复块不再显示。

 

  指标没有变化时,应检查扫描任务是否使用了修改后的代码,以及重复逻辑是否仍存在于其他目录。

 

  2、控制新增代码中的重复

 

  进入【指标】→【重复】后切换【新代码】,查看【新代码中的重复行密度(%)】。质量门禁可以把该指标设为条件,超过设定值时项目不会通过门禁。历史项目可以先限制新增重复,再分批整理原有代码。

  总结

 

  重复代码比例更像是一条维护提醒,并不意味着所有相似实现都要合并。围绕SonarQube重复代码怎么查看SonarQube重复代码比例过高怎么降低,开发人员需要把指标定位、代码重构和重新验证连在一起,才能让比例变化真正对应代码结构改善。希望本文能帮助您更清楚地处理SonarQube重复代码问题,为代码审查和项目维护提供实用支持;如需进一步了解相关配置,欢迎联系咨询。

135 2431 0251