代码质量提升的 IDEA 插件
不点蓝字关注,我们哪来故事?
![](https://filescdn.proginn.com/605def884c4cb8faff95bd592d3c4ba0/f03adaab733c43c7ecf97a2665bcf102.webp)
正文如下
来源:cnblogs.com/cjsblog/
p/10735800.html
新来的同事,经常写一些 “烂代码” 偷袭我,这次给领导建议,搞一个代码检查工具,一键扫描,统一风格化编码,看以后还敢乱写代码。
SonarLint(Sonar) 代码质量管理
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题
1、不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
2、潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷
3、糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
4、重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方
5、注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷
6、缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率
7、糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。
1. SonarLint
SonarLint是一个代码质量检测插件,可以帮助我们检测出代码中的坏味道
![](https://filescdn.proginn.com/e85e4e24f655d0b123725e6e440632ed/8fe5c5fcb636ecf29e6110c4639f4bf1.webp)
下载与安装
![](https://filescdn.proginn.com/263a76c2b9296d00d51e98d43f0c6bf4/a19769599245ac5a131b53b25ed8e872.webp)
在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint
或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint
![](https://filescdn.proginn.com/7b5322443e275c55020a551f4cbc83a4/f24d465156ce61a9f4d60c6498415aa4.webp)
我们还可以禁用某些规则
![](https://filescdn.proginn.com/d101f980f2043c7c4ac7402cb4a37405/40a7b5295287739823fc50b027b4a516.webp)
如果需要同步自定义的规则时,可以绑定到SonarQube
![](https://filescdn.proginn.com/78dc9be95e511a0765b51980f7e22b86/1aaa5ad89a33921c1d6c0ddef0c35a97.webp)
![](https://filescdn.proginn.com/831d643fb1ceeebf02491e8850b61635/ec9d1e8ca51b6e29ec718b55bed9d413.webp)
![](https://filescdn.proginn.com/80b3cf69d7027a6d9083ae4f26fb11b7/b2c289dbaf3c1be0882a9bcbe1c173cd.webp)
查看检测的结果
![](https://filescdn.proginn.com/264806672940c011ccc60e841eb4963a/e680c9d60d69e1050b3f94e3ca4b7c3a.webp)
对于代码中的警告我们不能视而不见
![](https://filescdn.proginn.com/07046231b8f34554bbe92ecfe412f3d3/d7eb86b06fff4055c6b233450aa13e1b.webp)
有了代码质量检测工具以后,在一定程度上可以保证代码的质量
对于每一个问题,SonarLint都给出了示例,还有相应的解决方案,教我们怎么修改,极大的方便了我们的开发
比如,对于日期类型尽量用LocalDate、LocalTime、LocalDateTime,还有重复代码、潜在的空指针异常、循环嵌套等等问题
有了代码规范与质量检测工具以后,很多东西就可以量化 了,比如bug率、代码重复率等,还可以自定义各种指标,方便管理人员查看
为此,我们需要一个平台来记录每次检测分析的结果,这样就可以进行分析和统计,并且可以直观的看到这一切
于是,SonarQube 闪亮登场!
2. SonarQube
SonarQube是一个开源的代码质量管理平台
![](https://filescdn.proginn.com/371545f7c8bdbb33d312fc3fb07045da/f3257f555e9e3feb9c5affb7bb351a21.webp)
![](https://filescdn.proginn.com/23edecc9b1b30769c213153f2b11e2a1/b91d4e246a821e3087c83c7ca86a2d9f.webp)
![](https://filescdn.proginn.com/de60083238daa8d76ec236b4b9d76834/8cbb794c2ce552a07cf679426e2354cb.webp)
![](https://filescdn.proginn.com/2359ba11fcf469ac23b6276fe656cd16/9ad9caaad951126d9db62eb27ba3da68.webp)
解压&本地启动
https://docs.sonarqube.org/latest/setup/get-started-2-minutes/
unzip sonarqube-7.7.zip
cd sonarqube-7.7
bin/[OS]/sonar.sh consol
![](https://filescdn.proginn.com/61525e081a720ff1a02625dcb7af66c4/0fc19ad2e500c591c61fa41f864d50f8.webp)
启动成功后,访问 http://localhost:9000 用管理员账号(admin/admin)登录
![](https://filescdn.proginn.com/8c28f4e97b0a00e578687ddd12cca2f2/2db6227f1c79dc59a466caa2c52c120d.webp)
接下来,为了把检测的结果传到服务器,我们需要配置一个Scanner
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven
这里我在项目中添加 sonar-maven-plugin 插件
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.mavengroupId>
<artifactId>sonar-maven-pluginartifactId>
<version>3.6.0.1398version>
plugin>
plugins>
build>
命令行执行:mvn clean compile sonar:sonar
成功后,可以在控制台中看到这样的输出
![](https://filescdn.proginn.com/04c6fd0f1d09d8693188365ccef263f7/35c19466ab894706619e711e0ceed06b.webp)
再次刷新 http://localhost:9000/ 会看到跟刚才不一样了
![](https://filescdn.proginn.com/574759ba402fcc9f289b49c4b05096ee/bee3e02718d938d92fa81a16da7e2642.webp)
![](https://filescdn.proginn.com/1c92101607f6ff147a1db0a34d21e56c/010cea2909125f1026a9da699f875ded.webp)
![](https://filescdn.proginn.com/2ff4e8382d9e7351f659e24b05790ccf/a661cad4830f7d5e346cd3c4f477a5eb.webp)
以上只是本地演示,在正式环境中这些数据当然要保存到数据库中,具体安装就不演示了,下面是文档
https://docs.sonarqube.org/latest/setup/install-server/
3. Alibaba代码规约插件
阿里代码规范,相信大家都不陌生
![](https://filescdn.proginn.com/b64a9e225a9d208e967683d0a337abc7/76aa3d62276a0fee50eff42d3b4ed744.webp)
![](https://filescdn.proginn.com/64706744b5956dae6b464523cf309972/6f39c8a6784a4fa158a4f75cace2b8a3.webp)
![](https://filescdn.proginn.com/25006e594c7de28288225095f4faeca6/77fddc93c2e34fdbe6d9bf63858123aa.webp)
你好,来交个朋友 ~
往期推荐
////// END ////// ↓ 点击下方关注,看更多架构分享 ↓ ↓ 或加泥瓦匠微信,交流更多技术 ↓