代码总是被嫌弃写的太烂?装上这个IDEA插件再试试!

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:cnblogs.com/cjsblog/
p/10735800.html

c635e43006fcac87025644f062f067c7.png


大家好,我是艿艿。

新来的同事,经常写一些 “烂代码” 偷袭我,这次给领导建议,搞一个代码检查工具,一键扫描,统一风格化编码,看以后还敢乱写代码。

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检测单个任务规则的应用情况, 检测耦合。

推荐下自己做的 Spring Boot 的实战项目:

https://github.com/YunaiV/ruoyi-vue-pro

1. SonarLint

SonarLint是一个代码质量检测插件,可以帮助我们检测出代码中的坏味道

039398838854e9fcfdb8b0b9b9d9a4bd.png

下载与安装

cf04960c9782be58bf3bfdfa281ad1a0.png

在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint

或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint

12f5573f509749f4d89a24cffd3e8845.png

我们还可以禁用某些规则

ca25a571d7bdf01b97143473482d2e17.png

如果需要同步自定义的规则时,可以绑定到SonarQube

d8d672517fa18d59e05e1688a11d960d.png e283135ff5c56057485f778e0a117cf5.png cfeac459cee0e9cf876d91a8fb89f4fb.png

查看检测的结果

298cfe58ac3762aa0b9b34029e80375e.png

对于代码中的警告我们不能视而不见

bdee4801cd1fb75b8e343f85f5740be7.png

有了代码质量检测工具以后,在一定程度上可以保证代码的质量

对于每一个问题,SonarLint都给出了示例,还有相应的解决方案,教我们怎么修改,极大的方便了我们的开发

比如,对于日期类型尽量用LocalDate、LocalTime、LocalDateTime,还有重复代码、潜在的空指针异常、循环嵌套等等问题

有了代码规范与质量检测工具以后,很多东西就可以量化 了,比如bug率、代码重复率等,还可以自定义各种指标,方便管理人员查看

为此,我们需要一个平台来记录每次检测分析的结果,这样就可以进行分析和统计,并且可以直观的看到这一切

于是,SonarQube 闪亮登场!

推荐下自己做的 Spring Cloud 的实战项目:

https://github.com/YunaiV/onemall

2. SonarQube

SonarQube是一个开源的代码质量管理平台

ce7fcfad440504095a1789a8c081ff2e.png e026078a279e8a38742c303a17de8c27.png 073e4b00fd69bb510f7686b5eb43502e.png 1b97da937222721f686f1ec2529f8605.png

解压&本地启动

https://docs.sonarqube.org/latest/setup/get-started-2-minutes/

unzip sonarqube-7.7.zip
cd sonarqube-7.7
bin/[OS]/sonar.sh consol
f17f28e335fcea05b07e6c9e9783a631.png

启动成功后,访问 http://localhost:9000 用管理员账号(admin/admin)登录

210aa60d3f889e0720c3a0490a6064d8.png

接下来,为了把检测的结果传到服务器,我们需要配置一个Scanner

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven

这里我在项目中添加 sonar-maven-plugin 插件

<build>
    <plugins>
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>3.6.0.1398</version>
        </plugin>
    </plugins>
</build>

命令行执行:mvn clean compile sonar:sonar

成功后,可以在控制台中看到这样的输出

137266ef3b830a115d8bd83afd82be83.png

再次刷新 http://localhost:9000/ 会看到跟刚才不一样了

a12a2a03870a505a35c5c5dca4da52a4.png fa659ed596ad1f783ea08b7583da2b5f.png b8f0f208aa3e0e0a59d069c9fe84588a.png

以上只是本地演示,在正式环境中这些数据当然要保存到数据库中,具体安装就不演示了,下面是文档

https://docs.sonarqube.org/latest/setup/install-server/

3. Alibaba代码规约插件

阿里代码规范,相信大家都不陌生

7bf8ffc89184fa3643af751d19ffcb26.png 499624d1a4fcaeeb13d43e8b0918dc80.png ec06c052c93e6e48e7a641671125ff13.png

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

bb3a63b48f5347921c11c96fe740b399.png

已在知识星球更新源码解析如下:

ebc580a410d42647b214d7c7a2b0f44a.png

a051dafc68242e329c6e6a17abc684ac.png

6491508c66bacd85439604ac95ff3b14.png

bd8f5d9578184293225dfd13820585d1.png

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值