PMD代码检查工具

简介: C:\tools\pmd-4.1\bin>pmd C:\project\***\src html>a.html rulese ts/unusedcode.xml,rulesets/basic.xml PMD 包含 16 个规则集,涵盖了 Java 的各种常见问题,其中一些规则要比其他规则更有争议: 基本(rulesets/basic.xml)—— 规则的一个基本合集,可能大多数开发人员都不认同它: catch 块不该为空,无论何时重写 equals(),都要重写 hashCode(),等等。
C:\tools\pmd-4.1\bin>pmd C:\project\***\src html>a.html rulese
ts/unusedcode.xml,rulesets/basic.xml

PMD 包含 16 个规则集,涵盖了 Java 的各种常见问题,其中一些规则要比其他规则更有争议:


基本(rulesets/basic.xml)—— 规则的一个基本合集,可能大多数开发人员都不认同它: catch 块不该为空,无论何时重写 equals(),都要重写 hashCode(),等等。


命名(rulesets/naming.xml)—— 对标准 Java 命令规范的测试:变量名称不应太短;方法名称不应过长;类名称应当以小写字母开头;方法和字段名应当以小写字母开头,等等。


未使用的代码(rulesets/unusedcode.xml)—— 查找从未使用的私有字段和本地变量、执行不到的语句、从未调用的私有方法,等等。


设计(rulesets/design.xml)—— 检查各种设计良好的原则,例如: switch 语句应当有 default 块,应当避免深度嵌套的 if 块,不应当给参数重新赋值,不应该对 double 值进行相等比较。


导入语句(rulesets/imports.xml)—— 检查 import 语句的问题,比如同一个类被导入两次或者被导入 java.lang 的类中。


JUnit 测试(rulesets/junit.xml)—— 查找测试用例和测试方法的特定问题,例如方法名称的正确拼写,以及 suite() 方法是不是 static 和 public。


字符串(rulesets/string.xml)—— 找出处理字符串时遇到的常见问题,例如重复的字符串标量,调用 String 构造函数,对 String 变量调用 toString() 方法。


括号(rulesets/braces.xml)—— 检查 for、 if、 while 和 else 语句是否使用了括号。


代码尺寸(rulesets/codesize.xml)—— 测试过长的方法、有太多方法的类以及重构方面的类似问题。


Javabean(rulesets/javabeans.xml)—— 查看 JavaBean 组件是否违反 JavaBean 编码规范,比如没有序列化的 bean 类。


终结函数(finalizer)—— 因为在 Java 语言中, finalize() 方法不是那么普遍(我上次编写这个代码也经是好多年前的事了),所以它们的使用规则虽然很详细,但是人们对它们相对不是很熟悉。这类检查查找 finalize() 方法的各种问题,例如空的终结函数,调用其他方法的 finalize() 方法,对 finalize() 的显式调用,等等。


克隆(rulesets/clone.xml)—— 用于 clone() 方法的新规则。凡是重写 clone() 方法的类都必须实现 Cloneable, clone() 方法应该调用 super.clone(),而 clone() 方法应该声明抛出 CloneNotSupportedException 异常,即使实际上没有抛出异常,也要如此。


耦合(rulesets/coupling.xml)—— 查找类之间过度耦合的迹象,比如导入内容太多;在超类型或接口就已经够用的时候使用子类的类型;类中的字段、变量和返回类型过多等。


严格的异常(rulesets/strictexception.xml)—— 针对异常的测试:不应该声明该方法而抛出 java.lang.Exception 异常,不应当将异常用于流控制,不应该捕获 Throwable,等等。


有争议的(rulesets/controversial.xml)—— PMD 的有些规则是有能力的 Java 程序员可以接受的。但还是有一些争议。这个规则集包含一些更有问题的检验,其中包括把 null 赋值给变量、方法中有多个返回点,以及从 sun 包导入等。


日志(rulesets/logging-java.xml)—— 查找 java.util.logging.Logger 的不当使用,包括非终状态(nonfinal)、非静态的记录器,以及在一个类中有多个记录器。
目录
相关文章
|
5月前
|
移动开发 NoSQL 网络协议
|
5月前
|
存储 监控 NoSQL
|
7月前
|
算法 Java C#
分享一个在Keil开发环境中配置代码格式化工具Astyle(美化代码风格)
分享一个在Keil开发环境中配置代码格式化工具Astyle(美化代码风格)
392 1
|
9月前
|
JSON 缓存 监控
Xcode项目编译优化
随着项目工程的迭代,代码量不断的增加,扩展功能不断的被引入,项目的整体编译时间开始变长。
254 0
Xcode项目编译优化
|
11月前
|
XML 数据可视化 jenkins
干货!Jenkins下配置findbugs、pmd及checkstyle实现代码自动检测
干货!Jenkins下配置findbugs、pmd及checkstyle实现代码自动检测
258 0
|
12月前
|
消息中间件 JavaScript 小程序
自从用了CheckStyle插件,代码写的越来越规范了....
自从用了CheckStyle插件,代码写的越来越规范了....
|
缓存 安全 程序员
IDA F5 增强插件,还我源代码(一)
IDA F5 增强插件,还我源代码(一)
IDA F5 增强插件,还我源代码(一)
|
Java 开发工具
一个好用的代码优化神器FindBugs
一个好用的代码优化神器FindBugs
571 0
一个好用的代码优化神器FindBugs
|
Java
maven-代码风格检查工具
[TOC] checkstyle checkstyle 用于对代码风格进行检查checkstyle-maven插件操作示例 mvn clean compile checkstyle:checkstyle 输出(target/site/checkstyle.
3076 0