追求代码质量: 驯服复杂的冗长代码
2009-11-19 00:00:00 来源:WEB开发网PMD 和 JavaNCSS
少量的繁琐代码可用 PMD 和(更小范围的)JavaNCSS 轻松处理,很容易结合使用这两种工具,以构建诸如 Ant 和 Maven 之类的平台。
可以将 PMD 看作是基于规则的引擎,它分析源代码并报告正被违反的某一规则的所有实例。PMD 目前定义了大约 200 个规则,其中一些特定规则是针对方法长度、类长度和惟一类型的,还有一些用于计算 public 方法。您还可以定义定制规则和修改现有规则(例如,为了反映域的需求)。
定制 PMD
例如,我将使用 PMD 的经过恰当命名的 ExcessiveMethodLength 规则来发现长方法。此规则的默认长度阈值是 100(这意味着如果某个所扫描方法的长度超过 100 行,则 PMD 会报告出现一个违规),但是如果您喜欢的话,可以降低该阈值。
PMD 规则可以定义属性,通过站在 PMD 开发团队的角度很好地进行预见,您可以通过使用规则集文件在运行的时候覆盖这些属性。要将 ExcessiveMethodLength 规则的默认值从 100 降低到 50,可以将 properties 元素添加到 rule 定义中并引用属性的名称。在清单 1 中,我将一个名为 minimum 的属性添加到了 PMD rule 定义中:
清单 1. 定制 ExcessiveMethodLength 规则<rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
<properties>
<property name="minimum" value="50"/>
</properties>
</rule>
用 Ant 工具调用带有定制规则集文件的 PMD 需要通过 PMD 任务的 rulesetfiles 属性提供一条到该定制文件的路径,如清单 2 中所示:
清单 2. 引用定制规则集文件<pmd rulesetfiles="./tools/pmd/rules-pmd.xml">
<formatter type="xml" toFile="${defaulttargetdir}/pmd_report.xml"/>
<formatter type="html" toFile="${defaulttargetdir}/pmd_report.html"/>
<fileset dir="./src/java">
<include name="**/*.java"/>
</fileset>
</pmd>
更多精彩
赞助商链接