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

点击上方“大师兄聊架构”,选择“设为星标”做积极的人,而不是积极废人!

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

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


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.zip
cd sonarqube-7.7
bin/[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 代码规约插件

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




相关推荐

  • 中文Stable Diffusion模型太乙使用教程 - 掘金
  • 神经网络基础部件-BN层详解
  • 放弃高校Offer,加入OpenAI到底值不值得?
  • React Context 实现原理:它在 antd 源码里简直用的太多了
  • 作为NLP算法,最近被ChatGPT刷屏后的心路历程
  • 俄亥俄州5到20年后或现大批癌症患者;28岁单身女孩情人节前崩溃大哭;多地提醒防范诺如病毒;周黑鸭业绩降超90%...|酷玩日爆
  • 情人节的夜晚 | 每日一冷
  • 坐拥3亿多用户的“印度支付宝”,为什么还是被阿里抛售了?
  • 电池,真就这么香
  • “房市”和“房事”,保大还是保小?
  • 土耳其政府对上百名地产商发出逮捕令;斯诺登:美国击落不明飞行物​是为转移注意力;韩国民众向土耳其捐赠大量脏衣服 | 每日大新闻
  • 一千山东农民,如何打败鬼子精锐“坂田联队”?
  • 调试CSS
  • 浅析SeaweedFS与JuiceFS架构异同
  • 微软正式推出用于WSL的D3D12 GPU视频加速
  • 中国开源社区健康案例——LinkWechat开源社区
  • CentOS停服、Ubuntu断供俄罗斯 | 开源操作系统领域解读
  • 非WebKit引擎的iOS浏览器即将到来
  • 十问ChatGPT:一个新的时代正拉开序幕
  • 考研还是工作?