• 实验四 @代码评审@


    一、实验目的

    1) 了解代码审查的含义;

    2) 掌握相关编程规范检查工具的安装与使用;

    二、实验内容及要求

    Code Review中文应该译作“代码审查”或是“代码评审”或“代码复查”,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。Code Review主要用来在软件工程过程中改进代码质量,通过代码评审可以达到如下目的:

    ●在项目早期就能够发现代码中的BUG

    ●帮助初级开发人员学习高级开发人员的经验,达到知识共享

    ●避免开发人员犯一些很常见,很普通的错误

    ●保证项目组人员的良好沟通

    ●项目或产品的代码更容易维护

         代码评审主要内容是编程规范,重构方法,架构设计,性能安全,日志,可读性,扩展性等问题。通过代码评审可查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码评审的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review。

    1、以小组形式,针对前面“实验一”中所完成的代码,进行代码评审(走查),重点检查以下情况。你也可有查询相关材料,建立更细化的检查清单(check list)

    - 程序是否能正常工作,代码是否实现预期的功能,逻辑是否正确。

    - 代码是否遵循的编程规范

    - 代码是否尽可能的模块化

    - 所有的数据输入是否都进行了检查

    - 是否有注释,并且描述了代码的意图

    - 代码的可理解性和可测试性

    2、按“实验二”的分组方式,两人一组,随机分配另一组的代码作为本组评审和分析的对象

    一些编码规范的检查工具如下,也可自行查找工具使用。

    三、实验过程

     1、配置代码审查工具

         由于我们小组审查的代码是Java语言,所以要安装CheckStyle插件进行代码审查。

    (1)下载CheckStyle插件:https://sourceforge.net/projects/eclipse-cs/files/Eclipse%20Checkstyle%20Plug-in/

    (2)下载完成后将压缩包中features文件夹和plugins文件夹的复制到eclipse中的根目录中覆盖;

     (3)打开eclipse,Window-->Preferences,列表中出现了checkstyle的菜单,则表示安装成功。

    (4)CheckStyle全局配置:Window -->Preferences,选择checkstyle菜单,增加项目组统一的规则文件,并设置为默认规则。规则文件代码可从网上下载:https://blog.csdn.net/shan9liang/article/details/12992515?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2。

     

     (5)CheckStyle项目配置

    (6)右击项目,选择CheckStyle,选择check Code with CheckStyle,就可以发现程序中就会有黄色背景的代码。

    (7)查看程序代码可以发现黄色代码边上会有一个小放大镜,点击就可以发现出现什么错误了。

      

    2、使用工具对原始代码进行评审和分析,记录结果

        由于在实验过程中,我的eclipse软件在使用CheckStyle插件的时候,出现许多出错误,百度好久,试了好多方法,还是不能正常查看程序代码,于是我的小伙伴叶子就QQ屏幕分享给我,我们就共同分析代码。

           在此次分析过程中,我们对CheckStyle插件审查的结果进行了统计,通过列表格的形式,将错误的类型、具体的错误、数量及解决方式一一列出,得到检查清单,结果如下:

    序号

    Checkstyle报错类型

    具体错误

    数量

    解决方式

    1

    Empty Line Separator

    'package 前应有空行。

    1

    在package 前应空一行

    2

    Comments Indentation

    注释缩进字符不正确。

    1

    删除对应空格,正确缩进

    3

    Method Javadoc:

    缺少 Javadoc 。

    3

    添加javadoc

    4

    Indentation

    代码缩进不正确

    85

    删除对应空格,正确缩进

    5

    File Tab Character:

    行内含有制表符 tab

    126

    6

    Resource leak:

    '<unassigned Closeablevalue>' is never closed

    1

    及时关闭资源

    7

    Whitespace Around: WhitespaceAround:

    '{' is not preceded with whitespace.

    1

    大括号前面空一格

    8

    Need Braces:

    'if' 结构必须使用大括'{}'。

    11

    使用大括号

           不过,在得到如上的检查清单,我们花了挺长时间在统计数量方面,叶子说,她看到其他的工具运行出来可以汇总总的结果,于是,我们就通过百度,我找到一个也是CheckStyle插件运行的汇总结果,但是那篇博客中,没有对如何找到汇总结果的方法步骤进行说明,所以,最后,我们没有办法就人工统计了。

    3、对工具执行结果进行人工分析,结合检查清单和人工走查的出代码修改建议

    (1)人工分析

          a.从检查清单表格中,可以发现,有大量的代码缩进不正确、行内还有制表符的问题出现,还有if语言结构没有使用大括号问题。

          b.从表格中,还可以发现虽然有的错误出现许多次,但是总的报错类型却只有8种,而且这些错误都是常见问题,在编写程序的时候细心点是可以避免的。

    (2)代码修改意见

         a.在检查清单表格中,我们已经给出每个错误类型的具体解决方式,在修改代码时,可以按照表格或者按照我们提交的issue的内容进行修改。

         b.在修改代码中,要细心,避免一些不应该出现的错误,例如空格的使用要正确规范,虽然不如Python语言那样严谨,但是得注意点。

         c.虽然代码出现错误类型不多,但是在修改代码时要正确对待每一处错误,细心修改。

         d.对代码运行结果的建议,希望生命游戏的地图可以再扩大,以便观察细胞的生命状态,或者让它动态显示每次的生命状态,不用再去人工进行输入数字控制。

    4、通过github issues向项目维护者提交问题(issue)。

         和叶子通过对检查清单表格进行分析讨论,我们决定提交5个issue,并且在每个issue 中,填写了代码修改意见,以供第28组修改代码参考。

         

    5、记录总结实验过程中遇到的问题和解决过程

    (1)在安装CheckStyle时 ,有一个步骤要插入规则文件,我当时不太懂什么是规则文件,然后进行百度,原来发现CheckStyle有自己的配置规则文件,是有代码的那种,我也是第一次知道,按照百度的代码(https://blog.csdn.net/shan9liang/article/details/12992515?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2)进行安装插件。

    (2)安装CheckStyle插件出现问题,导致不能正常查看代码,在百度上,尝试许多中方法,想要重新安装,可是却卸载载不了已安装的CheckStyle插件(卸载已知插件:可以查看http://ask.zol.com.cn/x/4603348.html),它就像个bug一样,明明是按照说明步骤(参考:https://blog.csdn.net/ccboy2009/article/details/32318781?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-4.nonecase的博客,有点好奇网址为什么这么长,可以参考https://jingyan.baidu.com/article/cbcede07d27fda02f40b4dfd.html,上面的步骤可以进行修改)来的,可是就是不行。没办法,我就和叶子说了,她也帮我看了,也不知道怎么解决,然后就直接看她的屏幕分享,一起分析讨论,本来这也是小组共同完成,并不直接影响实验,不过是我本次实验的一个遗憾吧。

    (3)在分析CheckStyle插件审查的错误的时候,第一次代码审查,有点不知道要干什么,审查了之后,有点手无举措的感觉,解决:我和叶子一起讨论分析,每个人把自己的想法说出来,让对方获得灵感,才让实验正常进行下去。

    (4)CheckStyle插件汇总问题,到现在我们两也不知道如何汇总,在实验过程中,我们也尝试了好多方法,进行尝试,也是没有找到,所以我们只能人工统计,一个一个查看,一个一个 数,这也是本次实验一个遗憾的地方吧,当时做实验的时候,还挺羡慕别人的软件插件可以进行汇总。

    四、实验小结

     1、通过本次实验,我对代码审查的过程有了一定的了解,从审查别人的代码的过程中,我发现平时我们在编写程序的时候,是多么的不注意细节,虽然程序运行出来没有报错,但是语言规范过程中,还是犯了一些错误,同时也是通过本次实验,提醒了我在编写程序时要注意的地方。

     2、这次实验,我们要检查的代码也是生命游戏,刚好我们也是生命游戏,但是不同的地方是,他们用Java语言编写,我们的使用Python语言编写,通过分析别人的代码,让我了解了用Java语言如何进行生命游戏的编程,这是个知识了解和积累的过程吧,也是个学习别人代码的过程,同时在进行实验的时候,虽然遇到许多错误,但是我在百度找错误的解决方式的同时我也学习了许多,例如如何eclipse中如何更改项目的编码风格,可以参考:https://www.360kuai.com/pc/90553cdb6f9ccd558?cota=4&tj_url=xz&sign=360_57c3bbd1&refer_scene=so_1。

     3、通过与别人的代码进行比较,我了解了不同语言在编写过程中有什么要注意的地方,不同的语言在编程过程中有什么有好处和坏处的地方,对以后编程在选择语言过程中有了一点方向。

     

  • 相关阅读:
    20145321 《Java程序设计》课程总结
    20145321 实验五实验报告
    20145321 《Java程序设计》第10周学习总结
    20145321 《Java程序设计》第9周学习总结
    20145321 实验四实验报告
    20145321 实验三实验报告
    20145321 《Java程序设计》第8周学习总结
    20145321 《Java程序设计》第7周学习总结
    20145321 实验二实验报告
    20145319 《信息安全系统设计基础》课程总结
  • 原文地址:https://www.cnblogs.com/1234wh/p/12866872.html
Copyright © 2020-2023  润新知