外来规范水土不服?手把手教你怎么扩展阿里规范 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 规则分类
最佳实践:公认的最佳实践的规则 ② ;
代码风格:这些规则强制执行特定的编码风格 ③ ;
设计:帮助您发现设计问题的规则 ④ ;
文档:这些规则与代码文档有关 ⑤ ;
容易出错的规则:用于检测被破坏的、非常混乱的或容易发生运行时错误的结构的规则 ⑥ ;
多线程:这些规则在处理多个执行线程时标记问题 ⑦ ;
性能:标记存在性能问题的代码的规则 ⑧ ;
安全:显示潜在安全缺陷的规则 ⑨ ;