您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧,前面几篇文章介绍的都是开发类的插件,这篇文章将介绍一下编码规范和静态代码检查相关的插件。
Alibaba Java Coding Guidelines
首先介绍的是阿里巴巴的编码规约,相信大家对这个都比较熟悉了。安装方式是在
settings->plugins里面搜索 Alibaba Java Coding Guidelines- >install->重启Idea
这个插件侧重于代码的缺陷,详细的编码规范在《阿里开发手册》已经定义,大家有兴趣的可以看看。
如果要检查整个项目所有文件的话,可以关闭窗口中的类,然后按Ctrl+Alt+Shift+J
快捷键,或者如下图操作也是可以的。
检查的结果如图所示:
如果要对单个的文件进行检查的话,可以在类上右键,选中Alibaba Coding Guidelines Analyze
CheckStyle
第二个要介绍的插件是CheckStyle插件。这个插件侧重于代码的格式检查。使用方式如下图:在checkstyle面板,点击检查按钮进行检查,也可以检查单个文件。
如上图,可以看到都是一些缩进啥的编码规范,可以不用太关注。
Findbugs
findBugs-idea的作用侧重于发现代码中可能存在的bug。它检查类或者JAR 文件,将字节码与一组缺陷模式(自带检测器)进行对比以发现可能的问题。执行Findbugs编码规约扫描PMD
(Programming Mistake Detector) 是一个开源的静态代码检查工具。PMD 支持多种语言,比如项目本身的 Java,Salesforce 相关的 Apex、VisualForce,还有 JavaScript、XML 等。PMD 对于各种语言都预设了一套代码规则,也支持开发自定义规则,可以使用 Java 类或者XPath。
选中一段代码,然后右键Run PMD->Pre Defined,这里有许多检查类型可以选择,有代码样式,设计等等。
SonarLint
最后要介绍的是SonarLint插件,这个插件和Alibaba Java Coding Guidelines插件是实际项目中用到的比较多的两个插件。下面就详细介绍一下插件的安装和使用。
1.安装
settings->plugins里面搜索 SonarLint >install->重启Idea
2.配置SonnarLint 检查地址:
settings->Tools->SonarLint->Settings 中增加sonarqube的地址
如下图配置了sonarqube的地址
3. 使用SonarList
配置好SonarList之后,就是使用了,SonarLint既可以对所有文件进行检查,检查全部文件的方式是:点击Analyze->Analyze All Files with SonarLint
。
又可以单个文件检查,单个文件就是在文件编辑区右键选中:
生成的报告如下:这里既有违规的问题(即潜在的Bugs & Vulnerabilities)。比如:NullPointerException,又有代码的坏味道(Code Smells)。一般而言Bug级别的问题需要我们处理,坏味道可以忽略。还有另外一个指标就是代码的重复率,即代码内部的重复代码。
各类插件的比较
检查侧重点不同
工具 | 分析对象 | 侧重 | 应用技术 |
Alibaba Java Coding Guidelines | 源代码 | 代码缺陷 | Inspection机制提供实时检测功能 |
CheckStyle | 源文件 | 格式缺陷 | 缺陷模式匹配 |
FindBugs | 字节码 | 代码缺陷 | 缺陷模式匹配,数据流分析 |
PMD | 源代码 | 代码缺陷 | 缺陷模式匹配 |
SonarList | 源代码 | 代码缺陷 | 缺陷模式匹配,多个维度处理 |
检查项不同
工具 | 目的 | 检查项 |
Alibaba Java Coding Guidelines | 扫描出所有潜在的代码隐患 | 方法名 参数名 成员变量 局部变量 枚举类 try-catch |
CheckStyle | 检查Java源文件是否与代码规范相符 | Javadoc注释 命名规范 标题import语句 体积大小 空白 |
FindBugs | 基于Bug Patterns 概念,查找javabytecode(.class文件)中的潜在bug | NullPoint空指针检查,没有不合理关闭资源 |
PMD | 检查Java源文件潜在问题 | 未使用的本地变量 空的catch块,未使用参数空 if语句,重复的import语句,未使用的私有方法 可能是Singleton的类 短/长变量及方法名字 |
SonarList | 扫描出所有潜在的代码隐患 | 方法名 参数名 成员变量 局部变量 枚举类 try-catch |
总结
本文简单的介绍了编码规范与静态代码检查插件的使用,比较简单和常用。