IDEA 代码质量插件 Alibaba代码规范 和 SonarLint

代码质量的重要性

在我们日常完成需求中,常常因为时间紧迫,项目紧急上线,总想着先实现再说,然后等日后上线之后再慢慢优化,我相信,你可能看过很多祖传代码,各种//TODO,然而往往随着项目的上线,TODO就变成DONE了。

其实,不是我们不想去完成TODO,而是一旦项目上线交付,验证过后的功能再次修改肯定会带来一定的风险,所以只要不出问题,就不会再次打开修改,甚至重构,这也是祖传代码的由来。

所以,为了避免低质量代码的存在,在编码阶段就应该保持一定的代码质量,及时时间紧迫交付压力大,也要保持着一定的代码洁癖,做到在一定条件下最优。

还有,程序员的思维都是完美主义,所以一旦确定思路,编码的速度其实可以很快,特别是简单的业务代码,小键盘敲得飞起,我们都讨厌各种if非空判断,各种check,因为这是不完美的,而代码质量的高低往往就在这些细节,而我们常常忽略的就是这些。

如果等到测试阶段再发现问题,那就得返工,而如果测试没有发现问题等到生产发布之后才发现问题,或者造成程序漏洞,那么将会得不偿失,还可能造成生产事故,所以每个程序员都有必要提高自己的代码质量,对自己的代码负责的同时也对自己的工作负责。

不断提高代码质量

从大的方面来讲,可以从这几个方面,不断提高自己的编程能力:

  • 编码之前需要做一定的设计,主要考虑:耦合度,拓展性,复用度
  • 熟悉类库,熟悉API,避免自己造轮子
  • 阅读优秀源码并加以实践
  • 参考一些已有的最佳实践,代码片段,但是避免复制粘贴
  • 多考虑一些细节、边界、异常场景
  • 保持代码的整洁,包括类、方法、变量的命名
  • 在I/O操作多考虑性能问题,重要信息多考虑安全问题

代码质量的修炼不是一日而成,而是在实践中不断练习,当有一天觉得自己写的代码就像一首诗的时候,当自己的代码被人夸奖的时候,内心岂不是也是美滋滋

使用Alibaba代码规范插件和SonarLint插件实时提高代码质量

Alibaba Java开发手册 & 代码规范插件

阿里巴巴Java开发手册

项目地址:https://github.com/alibaba/p3c

《阿里巴巴Java开发手册》在经历过N多个最终版(也是大家共同努力),最终得到大家共同的认可,至少在国内为行业规范的贡献还是不容小觑(直至今天,IDEA插件下载了达到了80万次),也顺利地出了书,感谢!

手册主要有如下几部分:

  • 编程规范
  • 异常日志
  • 单元测试
  • 安全规约
  • Mysql数据库
  • 工程结构
  • 设计规约

代码规范插件

官方安装教程:https://github.com/alibaba/p3c/wiki

代码规范插件实现了开发手册中的53条规则,基本都是基于PMD实现,可以扫描工程已有的代码,也可以实时检查,让我们及时发现问题代码,规避风险,写出规范代码,特别是对于同一团队,统一的代码规范非常重要,形成统一的风格,有利于看懂他人代码,排查问题等。

检查结果一共分三个等级:

IDEA 代码质量插件 Alibaba代码规范 和 SonarLint_第1张图片

扫描结果效果如下:

IDEA 代码质量插件 Alibaba代码规范 和 SonarLint_第2张图片

SonarQube 与 SonarLint插件

SonarQube

项目地址:https://www.sonarqube.org/

SonarQube是一种自动代码审查工具,支持多种语言,可检测代码中的错误,漏洞和代码异味等。并且能够生成代码审查报告,它能够集成单元测试,统计单元测试覆盖率等。它还能很好与现有的DevOps结合,例如,在Java方面支持Maven插件,并且能够与Jenkins集成,实现自动化分析、测试,生成报告等。

IDEA 代码质量插件 Alibaba代码规范 和 SonarLint_第3张图片

 

SonarLint插件

项目地址:https://www.sonarlint.org/

一个IDE插件,与SonarQube使用同样的代码分析工具,能够在编码的阶段实时检查代码,并且在代码提交前做检查等,把存在的问题提前暴露,提高代码质量。

三种问题类型

IDEA 代码质量插件 Alibaba代码规范 和 SonarLint_第4张图片

五个问题等级

IDEA 代码质量插件 Alibaba代码规范 和 SonarLint_第5张图片

扫描结果效果如下:

IDEA 代码质量插件 Alibaba代码规范 和 SonarLint_第6张图片

Alibaba代码规范插件 vs SonarLint

介绍完这两个插件,那么应该如何选择呢?

这两个插件的侧重点不同:

  • Alibaba代码规范插件比较关心的是代码规范,编码风格上的,例如,命名规范,注释,代码行数等
  • SonarLint比较关心代码正确性,存在的问题,风险,漏洞等,例如,重复代码,空指针,安全漏洞等

所以,我建议结合使用,使用前者来规范代码,使用后者来提前发现代码的问题,配合起来提高工程整体的代码质量,并且能够在编码阶段规避风险,提高程序的健壮性。

说了这么多,赶紧用起来吧!

你可能感兴趣的:(IDE,Alibaba代码规范,SonarLint,IDEA代码质量插件,代码质量插件,代码质量)