PMD 6(源代码分析工具) v6.0.0 官方英文版
PMD 6是一款功能强大的源代码分析工具,知识兔可以支持Java、JavaScript、PLSQL、XML、XSL等多达8种语言的源代码分析功能,通过该软件你可以随时查找原码文件中可能存在的代码重复、空缺、未使用的变量等编程问题,并能在任何必要的使用时用Java、AST的XPath表达式等语言来编写属于自己的自定义分析规则。另外在PMD 6的版本更新中,还新增了Java 9的支持问题以及更多的指标框架,这些更新都将会使得该软件的大部分功能变得更加效率而易用,欢迎免费下载。
软件特点
1、支持8种语言
2、许多随时可用的内置规则
3、自定义规则可以用Java编写
4、自定义规则可以使用查询源的AST的XPath表达式来编写
5、许多输出格式
6、许多IDE集成,构建工具
PMD 6新增功能
1、Java 9支持:基于JavaFX的新规则设计器GUI。
2、Java语法:已更新为支持分析Java 9项目
3、改版的Apex CPD:知识兔现在正在使用Apex Jorje Lexer来为CPD标记Apex代码。这种变化意味着:CPD现在忽略所有评论。这与其他语言(如Java和Groovy)的工作方式一致;Tokenization符合语言规范,提高了准确性。
4、Java类型解析:支持方法遮蔽和重载,知识兔以及可变参数。但是,对于泛型和类型推断的目标方法的选择仍在进行中。期待在预告中发布。
5、指标框架:计划了更多指标。基于这些指标,像“GodClass”检测这样的规则可以更容易地实现。以下规则受益于度量框架:NcssCount(java)、NPathComplexity(java)、CyclomaticComplexity(java和apex)。
6、错误报告:对错误报告进行了一些改进,这意味着对一些报告格式的改变。另外值得注意的是,xml报告现在分享了一个XML Schema定义,使得解析和验证更加容易。
7、先端规则抑制:现在可以通过使用@SuppressWarnings注释来非常类似于在Java中完成顶点违规。
8、顶点解析器更新:Apex解析器版本从1.0-sfdc-187到210-SNAPSHOT,此更新让知识兔充分利用Salesforce的最新改进。
PMD 6使用简介
一、Windows的基本用法
1、您可以在下载解压软件压缩包后,在bin子目录中找到PMD的启动器批处理文件pmd.bat。
2、启动后键入“pmd-d[文件名|包含源代码的jar或zip文件|目录]-f[报告格式]-R[规则集文件]”,您可以将包含Java源代码的文件名,目录名或jar或zip文件名传递给PMD。
3、另外,PMD二进制发行版包含了jar文件中的规则集文件-尽管上面的“rulesets/java/unusedcode.xml”参数看起来像文件系统引用,但它真的被getResourceAsStream()调用用来加载它PMDjar文件。
二、选项
该工具带有相当丰富的帮助文本,只需运行-help即可打开。
-rulesets/-R:用逗号分隔的规则集名称列表
-dir/-d:来源的根目录
-format/-f:报告格式类型。默认格式是“文本”。
-auxclasspath:指定源代码使用的库的类路径。这由类型解析使用。或者,知识兔可以指定包含连续行上的路径元素的文本文件的“file://”URL。
-uri/-u:数据库URI的来源。如果知识兔这是给出的,那么你不需要分享-dir。
-filelist:包含要分析的文件的逗号分隔列表文件的路径。如果知识兔这是给出的,那么你不需要分享-dir。
-debug/-verbose/-D/-V:调试模式。打印更多日志输出。
-help/-h/-H:显示使用帮助。
-encoding/-e:指定PMD正在读取的源代码文件的字符集编码(即UTF-8)。默认是UTF-8。
-threads/-t:设置PMD使用的线程数。默认是1。将线程设置为“0”以禁用多线程处理。
-benchmark/-b:基准模式-完成时输出基准报告;默认为System.err
/S:进行压力测试。
-shortnames:在报告中打印缩短的文件名。
-showsuppressed:报告应该显示违规的规则。
-suppressmarker:指定标记PMD应忽略的行的字符串;默认是NOPMD。
三、规则集
1、规则类别
自从PMD6.0以来,所有分享的内置规则被分为八类:
(1)最佳实践:这些是强制普遍接受的最佳实践的规则。
(2)代码风格:这些规则强制执行特定的编码风格。
(3)设计:帮助您发现设计问题的规则。
(4)文档:这些规则与代码文档相关。
(5)错误倾向:规则来检测破坏,非常混乱或容易出现运行时错误的结构。
(6)多线程:这是在处理多个执行线程时标记问题的规则。
(7)性能:标记次优代码的规则。
(8)安全性:标记潜在安全缺陷的规则。
这些类别可帮助您找到规则,并找出项目的相关性和影响。
2、规则集
有两个主要用例:
(1)定义新规则时,需要在规则集中定义规则。PMD的内置规则在特殊规则集中定义,这些规则集构成了上述八个类别。
(2)在执行PMD时,您需要知道应该执行哪些规则。您可以直接指向内置规则集,但是您可能会被发现的违规行为淹没。如最佳实践中所述,最好定义一个自定义规则集。
3、创建一个自定义规则集
首先创建一个包含以下内容的新XML文件
4、调整规则属性
如果知识兔你想对空的catch块不那么严格,你可以定义一个异常变量名称ignored不会引起违规。因此,您将引用规则并定义适当的属值。
下载仅供下载体验和测试学习,不得商用和正当使用。