代码质量 - 代码质量管理: Sonarlint插件详解
在提交代码前,为提升代码质量还需要使用一些静态代码工具检查代码质量,最为常用的是Sonar;在本地IDE中可以配置Sonarlint插件进行检查。@javaxue
Sonar是什么?
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题
-
不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
-
潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷
-
糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
-
重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方
-
注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
-
缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率
-
糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
官方网站: https://www.sonarsource.com/products/sonarlint/
Sonarlint的使用
我以IDEA环境下做Demo和测试。
- 安装插件
- 配置插件
除此此外还可以配置链接到Sonarqube服务器(当远程SonarQube有更新,可以点击下面的按钮Update Binding进行更新; 这样可以保障团队成员使用的和最后CI环境是一套规则, 这是特别有用的,因为我们可能在服务器上禁用掉一些特例规则,然后我们可以通过这种方式同步给所有开发成员 )
- 扫描代码
写一个小Demo
/**
* This class is for sonarlint util test.
*
* @author javaxue
* @version 2021/1/29 下午8:25
*/
public class TestUtil {
/**
* sum.
*
* @param a a
* @param b b
* @return sum
*/
public static int add(int a, int b) {
int c = a + b;
return c;
}
}
检查
SonarLint插件在IntelliJ IDEA 中页面显示的名词解释 :
-
Current file
:当前文件(展示当前文件存在的哪些问题,以及解决方法) -
Rule
:规则(告诉你问题的具体内容,并在最后告诉你如何解决这个问题) -
Report
:报告(鼠标移动到项目根目录,右键选择Ayalyze,选择Ayalyze with SonarLint,完成之后的结果显示,包含整个项目的所有文件的问题) -
Locations
:位置(告诉你,在哪个地方有问题,问题的重复位置) -
Issues
:问题- 每个issue有
五种等级
-
BLOCKER
(致命):会影响应用程序的缺陷:内存泄漏,未关闭的JDBC连接…必须立刻修复的代码; -
CRITICAL
(关键 ):可能会影响应用程序的缺陷或者是安全性缺陷:空的catch块,sql注入,…必须立刻查看代码; -
MAJOR
(主要):可能会影响开发者效率的质量缺陷:未覆盖的代码,重复块,未使用的参数…. -
MINOR
(微小):可能会影响开发者效率的质量缺陷:每行不能太长,“switch”语句应该至少有三个条件,…. -
INFO
(未知):既不是缺陷也不是质量问题,只是一个发现。
-
- 每个issue有
三个状态
-
Bug
:窃听器(可靠性),避免错误和未定义的行为 -
Vulnerability
:漏洞(安全),避免破坏或攻击 -
Code Smell
:代码嗅觉(可维护性),简化代码更新,并提高开发人员的速度
-
- 每个issue有
五种等级
根据检查提示,修复后