外来规范水土不服?手把手教你怎么扩展阿里规范 idea 插件

1.1 概述

PMD(Project Manager Design)是一种开源分析Java代码错误的工具,它通过静态分析获知代码错误。即在不运行Java程序的情况下报告错误。其本身附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题。

例如:

潜在的bug:空的if/try/catch/finally/switch语句 ;

未使用的代码:未使用的局部变量、参数、私有方法等 ;

可选的代码:String/StringBuffer的滥用 ; 

复杂的表达式:不必须的if语句、可以使用while循环完成的for循环;

重复的代码:糊代码==糊bug ;

循环体创建新对象:创建对象一时爽,一直创建一直爽 ;

资源关闭:Connect,Result,Statement等使用之后确保关闭 。

此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。例如,你可以编写一个规则,要求PMD找出所有创建Thread和Socket对象的操作

1.2 工作原理

PMD的核心是JavaCC解析器生成器。其结合运用JavaCC和EBNF(扩展巴科斯-诺尔范式,Extended Backus-Naur Formal)语法,再加上JJTree,把Java源代码解析成抽象语法树(AST,Abstract Syntax Tree)

从根本上看,Java源代码只是一些普通的文本。不过,为了让解析器承认 这些普通的文本是合法的Java代码,它们必须符合某种特定的结构要求。

这种结构可以用一种称为EBNF的句法元语言表示,通常称为“语法” (Grammar)。JavaCC根据语法要求生成解析器,这个解析器就可以用于解析用Java编程语言编写的程序。

1.3 规则分类

最佳实践:公认的最佳实践的规则

代码风格:这些规则强制执行特定的编码风格

设计:帮助您发现设计问题的规则

文档:这些规则与代码文档有关

容易出错的规则:用于检测被破坏的、非常混乱的或容易发生运行时错误的结构的规则

多线程:这些规则在处理多个执行线程时标记问题

性能:标记存在性能问题的代码的规则

安全:显示潜在安全缺陷的规则