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

沙海 2021年4月18日05:55:59Java评论27字数 2830阅读9分26秒阅读模式
摘要

速读摘要

速读摘要文章源自JAVA秀-https://www.javaxiu.com/13225.html

通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,检测耦合。欢迎加入我的知识星球,一起探讨架构,交流源码。文章源自JAVA秀-https://www.javaxiu.com/13225.html

原文约 3593 | 图片 28 | 建议阅读 8 分钟 | 评价反馈文章源自JAVA秀-https://www.javaxiu.com/13225.html

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

点击关注 ? Java基基 文章源自JAVA秀-https://www.javaxiu.com/13225.html

收录于话题文章源自JAVA秀-https://www.javaxiu.com/13225.html

#Java基基文章源自JAVA秀-https://www.javaxiu.com/13225.html

11个文章源自JAVA秀-https://www.javaxiu.com/13225.html

点击上方“Java基基”,选择“设为星标”文章源自JAVA秀-https://www.javaxiu.com/13225.html

做积极的人,而不是积极废人!文章源自JAVA秀-https://www.javaxiu.com/13225.html

文章源自JAVA秀-https://www.javaxiu.com/13225.html

源码精品专栏文章源自JAVA秀-https://www.javaxiu.com/13225.html

 文章源自JAVA秀-https://www.javaxiu.com/13225.html

文章源自JAVA秀-https://www.javaxiu.com/13225.html

来源:cnblogs.com/cjsblog/p/10735800.html文章源自JAVA秀-https://www.javaxiu.com/13225.html

大家好,我是基基。文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

新来的女同事,经常写一些 “烂代码” 偷袭我,这次给领导建议,搞一个代码检查工具,一键扫描,统一风格化编码,看她以后还敢乱写代码,偷袭我这种单身狗!文章源自JAVA秀-https://www.javaxiu.com/13225.html

SonarLint(Sonar) 代码质量管理

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测文章源自JAVA秀-https://www.javaxiu.com/13225.html

Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题文章源自JAVA秀-https://www.javaxiu.com/13225.html

1、不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写文章源自JAVA秀-https://www.javaxiu.com/13225.html

2、潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷文章源自JAVA秀-https://www.javaxiu.com/13225.html

3、糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试文章源自JAVA秀-https://www.javaxiu.com/13225.html

4、重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方文章源自JAVA秀-https://www.javaxiu.com/13225.html

5、注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷文章源自JAVA秀-https://www.javaxiu.com/13225.html

6、缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率文章源自JAVA秀-https://www.javaxiu.com/13225.html

7、糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测耦合。文章源自JAVA秀-https://www.javaxiu.com/13225.html

1. SonarLint

SonarLint是一个代码质量检测插件,可以帮助我们检测出代码中的坏味道文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

下载与安装文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint文章源自JAVA秀-https://www.javaxiu.com/13225.html

或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

我们还可以禁用某些规则文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

如果需要同步自定义的规则时,可以绑定到SonarQube文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

查看检测的结果文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

对于代码中的警告我们不能视而不见文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

有了代码质量检测工具以后,在一定程度上可以保证代码的质量文章源自JAVA秀-https://www.javaxiu.com/13225.html

对于每一个问题,SonarLint都给出了示例,还有相应的解决方案,教我们怎么修改,极大的方便了我们的开发文章源自JAVA秀-https://www.javaxiu.com/13225.html

比如,对于日期类型尽量用LocalDate、LocalTime、LocalDateTime,还有重复代码、潜在的空指针异常、循环嵌套等等问题文章源自JAVA秀-https://www.javaxiu.com/13225.html

有了代码规范与质量检测工具以后,很多东西就可以量化 了,比如bug率、代码重复率等,还可以自定义各种指标,方便管理人员查看文章源自JAVA秀-https://www.javaxiu.com/13225.html

为此,我们需要一个平台来记录每次检测分析的结果,这样就可以进行分析和统计,并且可以直观的看到这一切文章源自JAVA秀-https://www.javaxiu.com/13225.html

于是,SonarQube 闪亮登场!文章源自JAVA秀-https://www.javaxiu.com/13225.html

2. SonarQube

SonarQube是一个开源的代码质量管理平台文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

解压&本地启动文章源自JAVA秀-https://www.javaxiu.com/13225.html

https://docs.sonarqube.org/latest/setup/get-started-2-minutes/文章源自JAVA秀-https://www.javaxiu.com/13225.html

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

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

启动成功后,访问 http://localhost:9000 用管理员账号(admin/admin)登录文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

接下来,为了把检测的结果传到服务器,我们需要配置一个Scanner文章源自JAVA秀-https://www.javaxiu.com/13225.html

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven文章源自JAVA秀-https://www.javaxiu.com/13225.html

这里我在项目中添加 sonar-maven-plugin 插件文章源自JAVA秀-https://www.javaxiu.com/13225.html

<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文章源自JAVA秀-https://www.javaxiu.com/13225.html

成功后,可以在控制台中看到这样的输出文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

再次刷新 http://localhost:9000/ 会看到跟刚才不一样了文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

以上只是本地演示,在正式环境中这些数据当然要保存到数据库中,具体安装就不演示了,下面是文档文章源自JAVA秀-https://www.javaxiu.com/13225.html

https://docs.sonarqube.org/latest/setup/install-server/文章源自JAVA秀-https://www.javaxiu.com/13225.html

3. Alibaba代码规约插件

阿里代码规范,相信大家都不陌生文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

图片文章源自JAVA秀-https://www.javaxiu.com/13225.html

欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

已在知识星球更新源码解析如下:文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

新同事写 “烂代码” 偷袭我,看我用神器,怼死她!文章源自JAVA秀-https://www.javaxiu.com/13225.html

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。文章源自JAVA秀-https://www.javaxiu.com/13225.html

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。文章源自JAVA秀-https://www.javaxiu.com/13225.html

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。文章源自JAVA秀-https://www.javaxiu.com/13225.html

文章源自JAVA秀-https://www.javaxiu.com/13225.html

文章有帮助的话,在看,转发吧。谢谢支持哟 (*^__^*)
文章源自JAVA秀-https://www.javaxiu.com/13225.html

阅读原文文章源自JAVA秀-https://www.javaxiu.com/13225.html

继续阅读
速蛙云 - 极致体验,强烈推荐!!!购买套餐就免费送各大视频网站会员!快速稳定、独家福利社、流媒体稳定解锁!速度快,全球上网、视频、游戏加速、独立IP均支持!基础套餐性价比很高!这里不多说,我一直正在使用,推荐购买:https://www.javaxiu.com/59919.html
weinxin
资源分享QQ群
本站是JAVA秀团队的技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

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

确定