18

IDEA 插件推荐:让你写出好代码的神器

 4 years ago
source link: https://mp.weixin.qq.com/s/jXsuwsGrW_oozHagPMTpng
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

概述

今天介绍的插件主要是围绕编码规范的。有追求的程序员,往往都有代码洁癖,要尽量减少代码的「坏味道」。

代码静态检查是有很多种类,例如圈复杂度、重复率等。业界提供了很多静态检查的插件来识别这些不合规的代码,帮助提高项目的质量。比较知名的一个产品是 SonarQube,它提供了一个「门禁」平台,集成了很多静态检查检查。下次有机会介绍一下该平台的搭建。

IrMvyie.jpg!web

本文主要介绍 IDEA 中对于 Java 语言静态检查的好插件:

  • Alibaba Java Coding Guidelines 阿里基于他们 Java 规范提供的插件

  • CheckStyle-IDEA 检查代码的格式是否符合规范

  • FindBugs-IDEA 检查代码是否有常见的一些 Bug

Alibaba Java Coding Guidelines

阿里巴巴 Java 编码指南插件支持。

首先说说阿里的 p3c 项目,它的 Github 主页地址是:https://github.com/alibaba/p3c 阿里之前开源过一份 Java 开发手册。手册从编程规约、异常日志、单元测试、MySQL 数据库、工程结构、设计规约等角度,介绍了阿里的 Java 开发规范,这个对于 Java 新手帮助挺大的,能够学到不少东西。有一些坑可能老司机也会翻车。

Zj2A3yA.png!web 泰山版-图片来PDF 文档,侵删

开发人员 Coding 时,可能就忘记规范了,写出来的代码还是会有『坏味道』。这时候 Alibaba Java Coding Guidelines 插件就派上用场了。它会根据上面的 Java 开发规范对你的代码进行检查,不符合规范的代码会有提示,并给出修改建议。阿里作为国内 Java 大厂,基于成千上万的工程师总结出来的踩坑经验,我相信给出的规范建议还是比较可靠的。

上个栗子:

1  String str = "hello";
2  for (int i = 0; i < 100; i++) {
3      str = str + "world!";
4  }

先不要往下看,试着分析一下这段代码哪里可以优化?

zMBBJvF.png!web 错误示例

其实,插键扫描的结果不仅有这个问题,还有『魔法数字』的问题。插件的用法,见下面的截图。

ABfIFjR.png!web 示例

除此以外,建议在 IDEA 进行代码提交时,勾选上它提供的检查项按钮,这样如果有不合规的代码进行提交,就会提醒你修改:

NbQnEnv.gif commit-checks-job

CheckStyle-IDEA

jm22mai.png!web 插件

项目主页:https://github.com/jshiell/checkstyle-idea

安装好之后,进入设置,勾选上你要选用的默认检查规范:

ZRj6byr.png!web kl0L2s

大厂往往都有自己的语言规范,可以导入选用:

iiayUrQ.png!web 导入规则

右键菜单,选择 Check Current File 即可检查当前文件是否符合编码规范:

fAjUNjb.png!web 使用

检查结果:

yqiamyi.png!web 效果

如果不符合规范的写法有点多,整改起来就会很痛苦了,这时候该怎么办?有一个功能叫格式化代码( Reformat Code ),快捷键是:

  • Mac: Command+Option+L

  • Win: Ctrl+Shift+L

如果想按照你指定的规则进行格式化,可以按照如下方式进行自定义:

uYBFbuI.png!web 格式化规则导入

FindBugs-IDEA

FindBugs 是一款老牌 Java 静态检查插件了。它的功能和阿里 p3c 那个插件很像,只不过它历史悠久、国际化一点。它同样的可以扫描代码,发现一些可能会引入 Bug 的代码段,给出参考建议。

启动 FindBugs 的方式,右键菜单中,Findbugs 提供了好几个选项:

uuAzYrE.png!web 启动
  • Analyze Current File :检查当前文件

  • Analyze Class uner Cursor :检查光标处的类

  • Analyze Package Files :检查包文件

  • Analyze Modul Files :检查 Module 文件

  • Analyze Project Files :检查项目文件

  • Analyze Scope Files :检查指定范围内的文件

  • Analyze All Modified Files :检查所有修改过的文件

  • Analyze changelist files :检查变更列表中的文件

检查结果:

uQnyM3U.png!web 结果

检查结果分为如下类别:

  • Bad practice :不好的做法,代码违反了公认的最佳实践标准;

  • Malicious code vulnerbility :恶意的代码漏洞;

  • Correctness :可能不正确,比如错误的强制类型转换;

  • Performance :潜在的性能问题;

  • Security :安全性;

  • Dodgy code :糟糕的代码,FindBugs团队认为该类型下的问题代码导致 Bug 的可能性很高;

  • Experimental :实验;

  • Multithreaded correctness :关注于同步和多线程问题;

  • Internationalization :国际化

扫描出来的结果怎么看懂,官网有专门的一页介绍 FindBugs Bug Description http://findbugs.sourceforge.net/bugDescriptions.html

rqeeiyE.png!web 看懂结果

除了上面右键菜单启动检查之外,还可以在相应文件夹右键菜单中启动:

MrEZz2n.png!web 选中检查

针对检查的严格程度,其实是可以调节的,建议修改为 low ,这样会尽可能的扫描出有潜在 Bug 的代码片段:

ZRvYJbe.png!web 严格程度

总结

以上是目前工作中经常用到的静态代码检查插键,虽然不是用了它们就真的能写出好代码,但是这些工具的确能够让你在前人的肩膀上少踩一些坑。比如阿里的那个检查插键,你可以按照它的提示,对照着他们的 Java 开发手册查看,分析一下,为何他们会有如此的规约。高楼大厦不都是一砖一瓦砌成的嘛?小知识点的基础打扎实了,才能走得更高!

由于国内网络问题,我提前将最新版的《阿里巴巴 Java 开发手册(泰山版).pdf》上传至云盘了,有需要的小伙伴公众号后台回复 泰山版 即可获得下载链接。

一言

上周的写的一篇文章分享到微信群里,群友有人指出来标题有错别字,真是有点尴尬!其实,我写文章也比较随意,也是最近才开始坚持每周至少输出一篇分享的。但想想既然写了,就要尽量保证质量。引以为戒,以后要认真点才行!

u2a2Uvu.jpg!web

目前分享的内容主要是开发环境、效率工具等。自己一直对这方面的文章比较感兴趣,因此之前就有相关积累。今后希望能通过阅读带来一些读书总结的分享,也希望关注的同学后台多留言,给出您的建议,感谢~

生命不息,折腾不止!关注 「Coder 魔法院」,祝你 Niubilitiy !

参考

  • 代码缺陷扫描神器——FindBugs:https://juejin.im/entry/591ad01ba22b9d005833903e

往期文章

6f2Y3qm.png!web

NRBjmav.png!web

好看的人才能点

JzyY3af.gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK