用 FlexPMD 改进代码质量

赖勇浩(http://laiyonghao.com)
FlexPMD 是我最近才发现的好东西,实践下来觉得对于提升代码质量是非常有用的,所以推荐一下。

FlexPMD 简介

FlexPMD 是一款 AS3 代码审查工具,能够通过代码静态分析找到代码中的各种缺陷,从而帮助改进代码质量。PMD 是一种分析 Java 代码错误的工具,通过静态分析获知代码错误。能够在不运行 Java 程序的情况下找出 Java 源程序的许多问题。FlexPMD 是 Adobe Professional Service 团队开发的一个 PMD 在 Flex 上的“移植”,制定了与 AS3 相关的许多编码规则,能够找出许多隐含的错误,当然了,你自己也可以指定这些规则是否起作用,甚至自己制定规则。 关于 FlexPMD 更多的内容,可以查看这个思维导图:

FlexPMD 功用

FlexPMD 能够识别包括但不限于如下的错误: 1、未使用的代码(函数、变量、常量等) 2、低效代码(动态 filter 的不当使用、繁琐的构造函数等) 3、过于复杂的代码(嵌套循环、过多的条件判断等) 4、太长的代码(类、方法等) 5、Flex 组件征集周期的不当使用(commitProperties 等) Flex PMD 可以通过命令行、Maven、Ant、Automator on Mac OS X 等方式使用。开发团队正在努力地想把它做成一个 eclipse 的插件。

运行FlexPMD

因为我主要是在 windows 和 Debian Linux 上做开发,所以只讲一下如何从命令行运行它,其它方法请参考文档(http://opensource.adobe.com/wiki/display/flexpmd/How+to+invoke+FlexPMD)。 1、下载最新的版本,当前是 1.0.RC4,解压; 2、进入解压目录,执行如下命令: java -jar flex-pmd-command-line-1.0.RC4.jar -s ./src/ -o . 其中 -s 参数用以指定 as 源文件所在的目录,-o 用以指定报表的输出目录;当然还有其它参数比如指定输出的报表文件名等,具体的用法可以不带参数执行 flex-pmd,就可以查看到了。如下图:
pmd_work
成功运行的话,可以看到输出目录生成了一个 pmd.xml 文件,这个 xml 报表可以一些工具打开,比如 Hudson,但我是个懒人,要去安装这个插件未免麻烦,就找了个由 adobe 提供在线的 Flash 应用(http://opensource.adobe.com/svn/opensource/flexpmd/bin/flex-pmd-violations-viewer.html),效果如下:
pmd

原理和其它

与大多数的静态代码分析工具相似,PMD 的核心是 as3 的解释器和 EBNF 结合运用,把代码解释成抽象语法树(AST),当然,还有一些规则是使用正则表达式来完成的。 它的基本分析过程是:1、装载规则;2、在指定目录中找到 as 源文件;3、生成 AST;4、对每一个文件应用规则;5、最后是产生一个 XML 报表。 PMD 的规则集是可以扩展的,所以团队的技术负责人或架构师可以取消或制定一些规则,这个工具我觉得非常有用。

posted on 2009-11-12 21:28  张大大123  阅读(89)  评论(0编辑  收藏  举报

导航