跳至主要內容

SonarQube代码检测

杨轩-国实信息大约 3 分钟CI/CD

SonarQube 是一款用于代码质量管理的开源工具,是静态代码检查工具,采用 B/S 架构它主要用于管理源代码的质量,可以支持众多计算机语言,比如 php,java, C#, go,C/C++, Cobol, JavaScrip, Groovy 等。

目前准备引入SonarQube对上线前的代码进行扫描检测,以确保线上项目的正常运行。

控制台

SonarQube地址:http://10.16.202.109:9008/

点击右上角登录,用户名密码:admin/admin

后端代码本地扫描

后端项目代码目前都基于maven构建,可以在本地项目目录下执行下面的指令进行扫描(目录下要包含pom.xml):

mvn verify sonar:sonar -Dsonar.host.url=http://10.16.202.109:9008 -Dsonar.login=43a540bd6354216a329c70a14419932ff8f161e8

sonar.login后面的这个token可以直接用这个,也可以自己在控制台生成。

扫描完成后,扫描报告会上传到sonar,可以在控制台查看:

扫描报告

质量阈

质量阈相当于一个代码检测的阈值,代码问题超过阈值会出现提示。

Bug & 漏洞

Bug和漏洞都属于开发中应该避免的问题:

  • Bug是指软件中出现的错误或失效,会导致软件的异常行为和性能问题。需要识别并修复Bug,以提高软件的质量、可靠性和稳定性
  • 漏洞是指软件中的安全漏洞,可供黑客利用,使得软件暴露在潜在的攻击威胁之下,影响软件的稳定性与安全性。需要修复这些漏洞,以增强软件的安全性和稳定性

查看详情:

修改目的:

优先消灭阻断(BLOCKER)严重(CRITICAL)主要(MINOR) 类型的bug及漏洞,项目上线前至少要做到此类问题的数量为0。

异味

异味这个词是中文插件由CodeSmell这个词翻译过来的,可以理解为有坏味道的代码。这主要是一个和维护性相关的指标,重点的含义是保持这样的代码,会导致代码维护成本越来越高,时间长了会导致很多无法理解的代码留存在项目中,从而可能会引起一些缺陷。

目前发现了一些常见类型,建议在代码中修改:

  • 魔法值
  • 注释掉的无用代码
  • @Deprecated注解标注的过期类、方法
  • 不规范的异常信息处理
  • 未被单元测试覆盖的代码(可暂时先不用管这个类型)
  • ……

覆盖率

代码覆盖率指的是测试用例执行期间覆盖到的代码行数占总代码行数的百分比,较高的代码覆盖率表示测试覆盖了大部分代码,有助于提高代码质量和可维护性。

目前暂时不强制编写测试用例。

重复

代码重复率是指代码中重复出现的代码片段占总代码量的百分比,高代码重复率可能意味着在多个地方使用了相似的代码,可能导致代码冗余和维护困难。

修改问题后重新扫描

修改完成问题后,重新扫描会生成新的报告,可以看到三种比较严重的bug已经没有了:

项目bug的评级也从E变成了B:

前端项目扫描

前端项目的扫描可以按下面流程进行:

Jenkins集成SonarQube

待后期完善这个流程

PDF下载

已经在sonar中集成好了PDF插件,可以点击项目的 更多 -> Download Pdf Report,直接下载离线文档查看。