Laan's steps..

Feed Rss

FlexPMD

11.12.2009, flex, by .

全文引自:http://blog.laiyonghao.com/2009/11/programming/flexas-3/400

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 的规则集是可以扩展的,所以团队的技术负责人或架构师可以取消或制定一些规则,这个工具我觉得非常有用。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>