FlexPMD 是一款免费开源的 AS3/Flex 代码审查工具,由Adobe 发布。
FlexPMD 通过审查 AS3/Flex 目录检测常见的不良用法,例如:
- 未使用的代码(函数,变量,常量等)
- 无效代码 (滥用动态过滤器, 厚重的构造器等)
- 过于复杂的代码 (嵌套循环, 条件过多等)
- 代码过长 (类, 方法等)
- 错误使用组件的生命周期 (commitProperties 等)
FlexPMD 使用了PMD部分机能,原理与其类似,也是通过规则定义检测内容。
截止发稿时 FlexPMD 已有 20 个规则组,包括 100 多个规则,当然你也可以自定义规则以扩展当前机能。
你可以通过以下方式调用 FlexPMD:
- The command line
- Maven
- Ant
- Automator on Mac OS X
- Eclipse
- TextMate on Mac OS X
- FlashDevelop
官方站点
http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD
安装 FlexPMD 插件
- 打开 Eclipse
- 点击 Help > Install New Software… > Add…
-
在打开的对话框中输入以下内容,之后点击 OK 按钮
Name: http://opensource.adobe.com/svn/opensource/flexpmd/plugin/trunk/flex-pmd-eclipse-plugin-site - 待信息显示后全选
- 按安装向导下一步直至完成
-
安装成功后你会在以下两处位置看到 FlexPMD 项
选择 Window > Preferences,在打开的对话框中
右键 Flex 工程,打开的菜单中
下载 FlexPMD 插件所需 jar 包
- 从 FlexPMD 下载页下载最新的 All-in-one-bundle 类型压缩包
- 解压上诉文件到某一目录(我放在 C:\FlexPMD 下)
生成 FlexPMD 规则配置文件
FlexPMD 有一个在线规则组创建器,你可以通过它了解、屏蔽、追加规则,之后导出这些规则到某一目录(我放在 C:\FlexPMD\rules 下)
配置 FlexPMD 插件
- 选择 Window > Preferences > FlexPMD
-
在打开的对话框中入力以下内容,其他默认
FlexPMD command line installation:C:\FlexPMD\flex-pmd-command-line-1.2.jar
FlexPMD custom ruleset:C:\FlexPMD\rules\pmd_rule.xml
FlexCPD command line installation:C:\FlexPMD\flex-pmd-cpd-command-line-1.2.jar - 点击 OK
运行 FlexPMD
FlexPMD 已安装完成,使用很简单:
- 选择 Flex 工程根或工程下的目录,文件
- 右键 FlexPMD > Run FlexPMD
FlexPMD設定规则一览
FlexPMD是什么?
FlexPMD是一种 ActionScript 工具,类似于 JavaPMD。FlexPMD 通过审核 ActionScript 3.0 或 Flex 源目录来提高代码品质。
FlexPMD能检测出什么问题?
它可以检测出品质欠佳的代码编写方法,例如未使用的代码、过度复杂的代码、过长的代码和使用不正确的 Flex 组件生命周期。
如:
1. 绑定规则:
绑定类时使用了硬编码的字符串;
绑定表达式过长。
2. Cairngorm规则:
ModelLocator必须是不可绑定的;
一个Cairngorm事件的名称应在实际事件名称前包含功能区名称。
3. 使用组件规则:
不要通过updateDisplayList方法添加或删除可显示的子对象;
不要明确的调用callLater。
4. 表达式规则:
Catch语句不能为空;
If语句不能为空。
5. 可维护性规则:
导入类的数量过多;
包含了硬编码的布尔值;
方法为空;
…
6. 命名规则:
在变量名字最后使用数字,不利于理解它的含义;
类名字必须以大写字母开头;
接口名字应该以字母I开头;
…
7. 实装规则:
存在全局绑定类;
在循环内部定义了变量;
过多的嵌套if语句;
FlexPMD是一种 ActionScript 工具,类似于 JavaPMD。FlexPMD 通过审核 ActionScript 3.0 或 Flex 源目录来提高代码品质。
FlexPMD能检测出什么问题?
它可以检测出品质欠佳的代码编写方法,例如未使用的代码、过度复杂的代码、过长的代码和使用不正确的 Flex 组件生命周期。
如:
1. 绑定规则:
绑定类时使用了硬编码的字符串;
绑定表达式过长。
2. Cairngorm规则:
ModelLocator必须是不可绑定的;
一个Cairngorm事件的名称应在实际事件名称前包含功能区名称。
3. 使用组件规则:
不要通过updateDisplayList方法添加或删除可显示的子对象;
不要明确的调用callLater。
4. 表达式规则:
Catch语句不能为空;
If语句不能为空。
5. 可维护性规则:
导入类的数量过多;
包含了硬编码的布尔值;
方法为空;
…
6. 命名规则:
在变量名字最后使用数字,不利于理解它的含义;
类名字必须以大写字母开头;
接口名字应该以字母I开头;
…
7. 实装规则:
存在全局绑定类;
在循环内部定义了变量;
过多的嵌套if语句;