敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整个项目的代码质量。
Java项目开发过程中,由于开发人员的经验、Java代码编写习惯,以及缺乏统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维 护,需要较大的测试投入和周期等问题。这些问题在一个项目组初建、需求和设计均具有不完全可预期性和完备性的全新项目中将尤为突出。
如图1所示,敏捷开发过程经历需求调研,用例分析和用例分解,进入开发迭代阶段。在每个迭代过程中,可以采用以下步骤来保证和提高整个项目的代 码质量:统一编码规范、代码样式;静态代码分析(staticcodereview);单元测试;持续集成;代码评审和重构 (Review&Refactor)。下文将针对每个步骤和其所使用的工具、方法进行详细描述。
图1.敏捷开发中的Java代码质量保证步骤
步骤一:统一编码规范、代码样式
规范统一的编码会增加项目代码的可读性和可维护性,但实际情况往往是项目组内的Java代码开发人员的编码风格常常各不相同,这可能是由于不同 的经验习惯或者缺乏编码规范方面的学习造成的。这样一来,其他项目成员或者维护人员在阅读项目代码时需要花费更多的时间来理解代码作者的意图,所以制定 并采取统一的编码规范显得很重要。编码规范主要应包含以下几个方面:
◆一般规则和格式规范。例如代码缩进、程序块规范、每行大代码长度等。
◆命名规则。例如包名、类名、变量、方法、接口、参数等命名规范
◆文档规范。例如类文件头声明、类注释、成员变量和方法注释等规范。
◆编程规范。例如异常、并发、多线程等方面的处理方式。
◆其他规范。例如日志格式、属性文件格式,返回值和消息格式。
项目的编码规范可以参考已有的一些Java编程规范书籍和其他相关资料并结合项目的本身来制定,可供参考的书籍有《Java编程风格》(英文书 名为:TheElementsofJavaStyle)。编码规范要形成文档,而且要简洁明了,并组织项目成员一起学习,确保所有成员正确理解所有条目。
一旦编码规范确定,可以利用Eclipse自身提供的功能来控制代码样式和格式。具体做法是,点击Eclipse的 Windows->Preference菜单项,在打开的Preferences对话 框的左侧栏中找到Java节点下的子项CodeStyle(如图2),该项 和它的子项允许您对Java代码的样式进行控制。
图2.Eclipse代码样式设置窗口
例如,为了使用自动格式化工具,可以在Eclipse提供的默认代码格式配置的基础上建立自定义的格式。在Formatter面板中,点击 New,输入新的名字并选择一个默认的配置作为初始化格式,如图3所示。
图3.创建新的代码格式配置
单击OK后可以在新打开的窗口中进行修改定制自己需要的格式。如图4所示。
图4.创建新的代码格式配置
修改完成后点击Apply保存所作修改。同时可以点击Export将当前的格式定义导出成一个XML文件,这样项目组的其他成员可以很方便通 过点击图3中的Import按钮来导入该XML文件来使用同一个代码格式定义。
这样每次在提交代码到版本控制服务器 前可 以通过Eclipse界面里的Source->Format菜单来对代码进行格式化,从而 使整个项目的代码具有相同的格式。同样可以通过对CodeStyle下的其他项目进行设置来帮助对Java代码的样式进行控制。将所有这些样式文件导出成 XML文件后,同编码规范一起归档,供所有项目成员使用。
步骤二:静态代码分析
在完成源代码的开发以后,下面要进行的工作是审视和测试代码。除了通过运行测试代码来检查功能之外,还能利用一些静态分析工具来快速、直接地 提高代码质量。静态代码分析工具并不需要运行代码,可以直接对Java文件和Class文件进行分析,通过一些检查条件的设置,快速找到代码中的错误和潜 在缺陷。现在的静态分析工具很多,有FindBugs、PMD、IBMRationalTool,等等。在这里,选择FindBugs作为静态代码分析工 具。FindBugs可以和日常开发工具Eclipse进行集成,在开发过程中,可以方便的开始静态代码的检查。通过检查Class文件或者JAR文 件,将字节码和一组缺陷模式进行对比,来发现可能存在的代码问题。在Eclipse的开发环境中,用插件安装的方式安装了Findbugs后,在 Eclipse的配置选项中会多出来FindBugs的配置选项。可以对自己的项目进行配置,选择需要的Detector检查代码。
图5.FindBugs的配置选项
设置好自己的规则后,在需要检查的代码文件夹上点击右键,可以启动FindBugs检查。代码可以是一个项目,也可以只是几个文件。
图6.运行FindBugs
检查完毕后,会出现FindBugs视图,把所有检查的结果根据错误分组展示。点击结果里面的每一个错误,会自动打开对应的代码。当根据规则改 正了所有的错误,或者说潜在错误,这些代码也通过了静态代码检查。FindBugs的检查结果可以是XML文件,也可以是文本文件,便于项目的集成管理 和检查保存。
图7.FindBugs检查结果