SonarQube中文网站 > 售前问题 > SonarQube怎么进行代码质量分析 SonarQube代码分析结果异常怎么办

SonarQube怎么进行代码质量分析 SonarQube代码分析结果异常怎么办

发布时间:2026-10-30 15: 50: 00

代码提交后,SonarQube里的问题数量突然增加,或者测试已经通过,覆盖率却仍然是零,这些情况未必都由代码修改引起。扫描目录、测试报告和规则配置都会影响结果,扫描成功与质量门禁通过也有区别。使用时应让分析任务对应到明确的代码版本,再查看具体问题。下面以已部署SonarQube、使用SonarScanner CLI分析Python项目为例,界面名称按英文版说明。

一、SonarQube怎么进行代码质量分析

SonarQube负责处理和展示分析结果,扫描器在代码所在环境运行。开始前应准备能够访问服务端的扫描环境,并确认账号具备项目分析权限。

1、创建项目并准备令牌

项目标识用于把扫描报告送到对应项目,配置时不要只凭显示名称判断。令牌应保存在本地环境或流水线凭据中,避免提交进代码仓库。

①在【Projects】页面点击【Create Project】,选择手动创建方式,填写【Project key】和项目名称。

②点击用户菜单中的【My Account】→【Security】,生成适用于目标项目的分析令牌。

③在扫描环境中配置【SONAR_TOKEN】和【SONAR_HOST_URL】,分别填写令牌及服务端地址。

2、指定源码和测试目录

①在项目根目录新建【sonar-project.properties】,填写【sonar.projectKey】,使其与页面中的项目标识一致。

②项目采用独立目录时,设置【sonar.sources=src】和【sonar.tests=tests】,按实际目录修改。

③核对【sonar.sourceEncoding=UTF-8】,保存配置文件。

源码目录和测试目录不能照抄示例,也不应互相重叠。初始范围参数填写实际路径,不支持通配符。Maven、Gradle、.NET等项目有各自适用的扫描方式,不能把这份CLI配置直接套用到所有工程。

3、执行测试并提交分析

①在已安装pytest和coverage的项目环境中,运行【coverage run-m pytest】。

②测试完成后运行【coverage xml-o coverage.xml】,检查生成的【coverage.xml】。

③在配置文件中添加【sonar.python.coverage.reportPaths=coverage.xml】,从项目根目录执行【sonar-scanner】。

④保存扫描日志,记录本次代码提交编号及报告中的项目地址。

4、查看问题和门禁结果

①打开项目【Overview】,查看分析时间和【Quality Gate】状态。

②进入【Issues】,选择具体问题,查看涉及文件、代码位置和规则说明。

③打开【Measures】,核对覆盖率、重复率及代码量等指标。

质量门禁失败表示某项指标没有达到设定条件,并不等于扫描器执行失败。问题列表中的提示也应结合上下文判断,尤其是涉及调用关系或数据流的内容,不能只改掉被标记的那一行。

二、SonarQube代码分析结果异常怎么办

排查时可以选一个具体差异,例如某个文件没出现、某条问题仍未消失,或者覆盖率发生变化。围绕这个差异查看日志,比同时改动多个设置更容易找到原因。

1、页面没有更新时检查后台任务

①打开【Project Settings】→【Background Tasks】,找到本次扫描对应的任务。

②检查任务状态;失败时打开错误详情,记录提示及任务时间。

③核对扫描配置中的【sonar.projectKey】,有分支功能时再核对页面当前选择的【分支】。

④后台处理完成后,刷新【Overview】,检查分析时间。

扫描器上传报告后,服务端还需要处理,终端显示执行成功时,页面可能仍保留上次结果。若流水线检出了错误分支,重新扫描也只会重复分析那份代码,还应核对工作区提交编号。

2、文件数量或问题数量不对时核查范围

扫描范围既受配置文件影响,也可能受命令行参数和页面设置影响。页面上改了排除项,流水线却继续传入旧参数,结果就可能与预想不同。

①在【Project Settings】→【General Settings】→【Analysis Scope】检查源码和测试文件的包含、排除设置。

②打开【sonar-project.properties】及流水线扫描命令,核对【sonar.sources】、【sonar.tests】和【sonar.exclusions】。

③检查仓库中的【.gitignore】,并在扫描日志中查找目标【文件路径】及跳过提示。

3、覆盖率异常时检查报告和文件路径

①打开本次生成的【coverage.xml】,检查时间、文件列表及覆盖记录。

②在扫描日志中查找【coverage.xml】,核对是否成功读取以及是否出现路径无法匹配的提示。

③对照报告中的【filename】与扫描工作区目录,调整覆盖率工具配置后重新生成报告。

④检查【sonar.coverage.exclusions】,确认业务文件是否被排除在覆盖率统计之外。

SonarQube不会替项目执行测试,测试通过也不代表覆盖率报告已生成。容器路径、本机路径和扫描目录不同,可能导致报告里的文件无法匹配。覆盖率排除与源码分析排除用途不同,不宜为了让数值好看就把未覆盖的业务代码移出统计。

三、SonarQube怎样复核结果变化是否合理

同一份代码在不同规则或统计范围下,可能得到不同结果。修正配置后,应保留一组能够对照的分析记录,确认变化来自哪里。

1、区分整体代码与新代码指标

①在【Overview】或【Measures】中分别查看【New Code】和【Overall Code】。

②打开【Project Settings】→【New Code】,核对当前采用的新代码定义。

③查看【Quality Gate】中未通过的条件,确认它针对新代码还是整体代码。

新代码范围变化后,覆盖率和问题数量也可能变化。例如整体覆盖率较高,但本次新增代码没有测试,新代码门禁仍可能失败。比较两次结果时,应使用相同范围,不能拿整体指标去解释新代码条件。

2、用具体问题验证修正结果

规则配置变化或分析器更新,也可能带来新增提示。遇到代码没动、问题却变多的情况,可以从一条有代表性的提示开始核对。

①打开【Quality Profiles】,查看项目所用语言的规则配置,核对相关规则是否启用及参数是否变化。

②在【Issues】中记录目标问题的文件、位置和规则,修改代码后重新运行测试及扫描。

③等待【Background Tasks】处理完成,再查看该问题状态和对应指标。

④将扫描配置、测试报告及代码提交编号随流水线记录保存。

总结

SonarQube适合持续发现代码问题,但结果需要放在具体版本、规则和统计范围中理解。团队采用稳定的分析配置,才能看清代码修改带来的变化,也方便评审人员追查某项指标为何升降。遇到可疑结果时,保留具体文件和任务记录,后续讨论会更有依据。希望这些内容能帮助大家读懂分析结果,有相关需求也欢迎交流咨询。

展开阅读全文

︾

标签:

SonarQube
从一开始就生成高质量的代码
立即购买
最新文章
SonarQube怎么进行代码质量分析 SonarQube代码分析结果异常怎么办
代码提交后,SonarQube里的问题数量突然增加,或者测试已经通过,覆盖率却仍然是零,这些情况未必都由代码修改引起。扫描目录、测试报告和规则配置都会影响结果,扫描成功与质量门禁通过也有区别。使用时应让分析任务对应到明确的代码版本,再查看具体问题。下面以已部署SonarQube、使用SonarScanner CLI分析Python项目为例,界面名称按英文版说明。
2026-10-30
SonarQube怎么导入测试执行报告 SonarQube测试执行数据导入后没有显示如何检查
测试已经运行,报告也保存了,SonarQube页面却没有显示用例数量,问题可能出在报告路径、格式或分析状态上。“SonarQube怎么导入测试执行报告SonarQube测试执行数据导入后没有显示如何检查”需要结合测试工具和扫描方式处理。下面以Python项目、pytest和SonarScanner CLI为例,说明配置与排查步骤。测试执行报告记录用例结果和耗时,与覆盖率报告需要分别导入。
2026-09-30
SonarQube怎么查看认知复杂度 SonarQube认知复杂度过高如何定位具体代码
SonarQube中的Cognitive Complexity用于衡量代码控制流程的理解难度,与Cyclomatic Complexity侧重统计执行路径不同。项目中的认知复杂度可以在Measures中查看,并逐步下钻到目录和文件;如果要继续定位具体函数,则需要结合认知复杂度规则产生的Issue进行检查。项目指标很高却找不到对应Issue时,还要区分“累计指标”和“单个函数规则阈值”这两种计算结果。
2026-08-31
SonarQube怎么导入外部Issue报告 SonarQube外部Issue导入后不显示如何排查
SonarQube可以把第三方静态分析工具产生的问题导入项目,与自身检测出的Issue一起查看。对于已经适配SonarQube的工具,可以使用对应的报告参数;其他分析器可以转换成Generic Issue格式或SARIF格式再导入。报告文件已经生成但SonarQube页面没有显示问题时,要先确认Scanner实际读取到了报告,再检查报告格式、源码路径、分析范围和当前查看的分支,不能只看报告文件是否存在。
2026-08-31
SonarQube后台任务怎么查看 SonarQube后台任务执行失败怎么排查
SonarScanner显示EXECUTION SUCCESS,项目页面却迟迟没有新结果,这种情况并不少见。扫描器只是把分析报告上传到服务器,后续还要交给Compute Engine处理。后台任务没跑完,结果就不会正式进入项目。
2026-07-30
SonarQube质量配置怎么复制 SonarQube质量配置复制后规则数量不一致怎么办
SonarQube里的“质量配置”通常指Quality Profile,它决定某种编程语言启用哪些检查规则。团队想给新项目沿用现有标准时,复制一份很方便。麻烦也常出在这里。明明从同一个配置复制,过一段时间再看,规则数量却对不上。遇到这种情况,别急着一条条手工补,先确认用的是复制、继承,还是跨服务器导入。
2026-07-30

咨询热线 18015636924