Sonar 为代码的质量管理提供了一个平台,对传统的代码静态检测如 PMD、FindBugs 等工具进行整合,是目前最强大的代码质量管理工具之一。
代码内在质量的七个维度
编码规范:是否遵守了编码规范,遵循了最佳实践
潜在的BUG:可能在最坏情况下出现问题的代码,以及存在安全漏洞的代码
文档和注释:过少(缺少必要信息)、过多(没有信息量)、过时的文档和注释
重复代码:违反Don‘t repeat Yourself原则
复杂度:代码结构太复杂、难以理解、测试和维护
测试覆盖率:编写单元测试,特别是针对复杂代码的测试覆盖是否足够
设计与架构:是否高内聚、低耦合、依赖最少
大部分的缺陷都是在编码阶段引入的,在测试阶段才能够发现这些缺陷,缺陷发现的越晚,缺陷的修复成本越高
什么是静态代码扫描
静态扫描是指在不运行代码的方式下,通过词法分析、语法分析、抽象语法分析等技术对程序代码进行扫描,
验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术
静态代码扫描会出现什么样的问题?
如果有两个代码段都大于10行会被认定为重复代码块
1、除了空白和注释之外,两个代码重复10行及以上
2、即时代码段内的标识符、常量值、类型、代码格式、注释不同,两个机构以及语法相同的代码重复10行及以上
3、复制的代码段进行进一步的修改,例如修改、添加或者删除语句,修改后有大于或等于10行的重复
4、两个大于等于10行的代码段执行相同的计算,但通过不同的语法变体实现
- 常见的静态代码分析工具
SonarQube
SonarQube 是一款用于代码质量管理的平台,它主要用于管理源代码的质量。 通过插件形式,可以支持很多代 码语言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。sonar还可以通过 PMD,CheckStyle,Findbugs等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。