SonarQube中整体代码与新代码的差异及扫描异常咨询
SonarQube 新代码与整体代码的区别及扫描问题解析
一、整体代码与新代码的核心区别
- 整体代码:统计项目中所有被扫描代码的全部问题,包含原有代码和新增/变更代码的所有缺陷、异味等。
- 新代码:仅统计指定范围内的新增或修改代码中的问题,核心是聚焦于本次迭代或版本更新中引入的新问题,帮助团队只关注新增代码质量。
二、现象原因解析
- 首次扫描新代码无信息:首次扫描时没有历史扫描基线,SonarQube无法判定哪些是"新增"代码,因此新代码统计为空,而整体代码会正常显示所有代码的问题。
- 两次添加异味后新代码与整体代码数据一致:核心是没有正确配置新代码的对比基线,导致SonarQube默认将所有代码判定为新代码,具体原因包括:
- 未关联Git等版本控制系统:SonarQube无法识别代码的变更记录,无法区分新旧代码。
- 扫描时未指定版本号参数:每次扫描没有用
sonar.projectVersion标记不同版本,SonarQube无法建立版本间的对比基准。 - 新代码范围配置不当:默认的新代码范围可能设置为"最近30天"或"全部代码",而非基于上一版本的对比。
三、解决方法
- 关联版本控制系统:在项目设置的「Source Code Management」中配置Git仓库信息,让SonarQube能读取代码变更记录。
- 扫描时指定版本号:每次执行扫描命令时添加
-Dsonar.projectVersion=xxx参数(比如首次用1.0,后续迭代用1.1、1.2),让SonarQube建立版本对比基线。 - 调整新代码范围:在项目设置的「New Code Definition」中,选择「Previous version」作为新代码判定规则,这样新代码会自动与上一次扫描的版本对比,仅显示新增代码中的问题。
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

