武汉理工大学软件工程基础试验第三次试验报告
实验课程名称:__软件工程基础实验____ 实验项目名称实验项目名称 实实 验验 者者 同同 组组 者者 代码评审与程序性能优化代码评审与程序性能优化 徐强国徐强国专业班级专业班级 吴灿柳吴灿柳 软件软件 16021602 实验成绩实验成绩 组组别别 实验日期实验日期20182018 年年 9 9 月月 2626 日日 第一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及 耗材,实验方案与技术路线等) 一、实验目的 使用一下三个工具完成代码评审: -Checkstyle -FindBugs -PMD 二、实验内容及要求 针对“实验一”中所完成的代码,进行代码评审(走查)和性能分析,从时间性能角度对 代码进行优化; (1) 使用一下三个工具完成代码评审: -Checkstyle -FindBugs -PMD (2)选择一个代码性能优化工具,对源代码进行性能分析,给出优化方案; 按 “实验一” 的分组方式, 两人一组, 随机分配另一组的代码作为本组评审和分析的对象, 试验期间不能与原作者进行沟通。 三、实验基本原理和方法 (1) Checkstyle 是一款检查 java 程序代码样式的工具,可 以有效的帮助我们检查 代码以便更好的遵循代码编写标 准,特别适用于小组开发时彼此间的样式规范和统一。 Checkstyle 提供了高可配置性,以便适用于各种代码规 范,所以除了可以使用它提供的 sun 的代码标准外,你也 可以定制自己的标准。 Checkstyle 可以让我们养成书写良好代 码风格的习惯。使用 checkstyle 的过程中可能需要经常的调整配置文 件, 有些 check 过于 严格,可以根据实际情况取消一些代码检查。 (2)Findbugs 是一个在 java 程序中查找 bug 的程序,它查 找 bug 模式的实例,也就是 可能出错的代码实例,注意 Findbugs 是检查 java 字节码,也就是*.class 文件。 其实准确 的说,它是寻找代码缺陷的。很多我们写 的不好的地方,可以优化的地方,它都能检查 出来。例 如:未关闭的数据库连接,缺少必要的null check,多余 的 null check,多余的 if 后置条件,相同的条件分支,重 复的代码块,错误的使用了“==“等等。而且我们可以 自 己配置检查规则,也可以自己来实现独有的校验规则。 (3)PMD 是一种开源分析 Java 代码错误的工具。与其他 分析工具不同的是,PMD 通 过静态分析获知代码错误。 也就是说,在不运行 Java 程序的情况下报告错误。 PMD 的 核心是 JavaCC 解析器生成器。从根本上看, Java 源代码只是一些普通的文本。不过, 为 了让解析器 承认这些普通的文本是合法的 Java 代码,它们必须符合 某种特定的结构要 求。这种结构可以用一种称为 EBNF 的句法元语言表示,通常称为“语法” (Grammar) 。 JavaCC 根据语法要求生成解析器,用于解析用 Java 编程 语言编写的程序。 2)系统为 Windows10 的 PC 机一台 PC 机上装有 Eclipse 第二部分:实验过程记录 (可加页) (包括实验原始数据记录,实验现象记录,实验过程发 现的问题等) 一、实验原始数据记录 即第一次源代码。 二、实验过程 一、测试工具的使用 CheckStyle使用情况: 勾选之后 即可使用 CheckStyle 对代码进行检查 如图CheckStyle对代码做了检查并提出了修改建议。 FindBugs 使用情况: 因本代码中并没有显著的 bug,点击使用后,未提示有 bug。 PMD 使用情况: 三、性能分析 四、实验过程当中发现的问题 PMD 安装过程中出现失败,在使用中发现找不到该插件。 第三部分结果与讨论(可加页) 一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等) 通过 PMD、CheckStyle、FindBugs 的测试如上图,我们改进了代码并进行了全面重写。 二、小结、建议及体会 吴灿柳: 通过这次实验, 分别学习了 CheckStyle,FindBugs, PMD 的安装和使用, 他们都是通过 eclipse 的 Install New Software 来安装使用,然后需要进行配置,最后才能使用这些工具进行代码分析。这些 工具的使用简单有效,十分方便。其次学会了使用Java 监视和管理控制台对代码性能进行分析,通过 观察相关的统计图像,得出了哪些因素的占用内存量大,或者CPU 随时间的变化情况等,收益匪浅 徐强国:通过本次实验,我了解了一些代码分析工具并在实际中加以运用。通过对上次实验所写代码 的测试,我初步了解了代码分析工具在Java 代码测试中的运用,改善原来的代码使测试用例通过率达 到 100%。结对编程的优点体现在于两个人的互补,将每个人发现的问题提出的建议讨论后改善代码, 能够提高效率,考虑得更全面。 成绩评定表:成绩评定表: 序号序号 1 1 2 2 3 3 4 4 评分项目评分项目 实验报告格式规范实验报告格式规范 实验报告过程清晰,内容详实实验报告过程清晰,内容详实 实验报告结果正确性实验报告结果正确性 实验分析与总结详尽实验分析与总结详尽 总得分总得分 满分满分 2 2 4 4 2 2 2 2 1010 实得分实得分