新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

沙海
沙海
沙海
994
文章
2
评论
2021年4月18日05:55:59
评论
1 2830字阅读9分26秒
摘要

速读摘要

速读摘要

通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,检测耦合。欢迎加入我的知识星球,一起探讨架构,交流源码。

原文约 3593 | 图片 28 | 建议阅读 8 分钟 | 评价反馈

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

点击关注 ? Java基基

收录于话题

#Java基基

11个

点击上方“Java基基”,选择“设为星标”

做积极的人,而不是积极废人!

源码精品专栏

 

来源: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是一个代码质量检测插件,可以帮助我们检测出代码中的坏味道

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

下载与安装

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

我们还可以禁用某些规则

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

查看检测的结果

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

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

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

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

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

于是,SonarQube 闪亮登场!

2. SonarQube

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

解压&本地启动

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

unzip sonarqube-7.7.zipcd sonarqube-7.7bin/[OS]/sonar.sh consol

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

接下来,为了把检测的结果传到服务器,我们需要配置一个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

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

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

3. Alibaba代码规约插件

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

图片

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!

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

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

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

文章有帮助的话,在看,转发吧。谢谢支持哟 (*^__^*)

阅读原文

继续阅读
历史上的今天
4月
18
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: