码迷,mamicode.com
首页 > 其他好文 > 详细

实验四 代码评审

时间:2020-05-14 01:18:22      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:人工   语句   删除   阅读   集成   了解   架构   处理   工具   

一、实验目的

1) 了解代码审查的含义;
2) 掌握相关编程规范检查工具的安装与使用;

 

二、实验内容及要求

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

java语言      

- 采用使用eclipse Checkstyle插件 

- CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要但枯燥的任务中解脱出来。它可以根据设置好的编码规则来检查代码。比如符合规范的变量命名,方法体的最大行数,重复代码检查等等。

https://github.com/alibaba/p3c/wiki/IDEA%E6%8F%92%E4%BB%B6%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3

C++语言

- 可使用Google代码规范工具Cpplint。

- Cpplint是一个python脚本,Google使用它作为自己的C++代码规范检查工具,VSCcode可配置Cpplint对C++代码进行规范检查。

python

- 可采用pylint

- Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅参考资料)和有潜在问题的代码。目前在 eclipse 的 pydev 插件中也集成了 Pylint,VSCcode可安装pylint插件

    当发现了项目存在的问题后,可通过Bug跟踪系统向项目维护者反馈问题(issue),管理Issue的系统称为BTS(Bug Tracking System,Bug跟踪系统)。当今具有代表性的BTS有Redmine、Trac、BugZilla等。GitHub自身也加入了BTS的功能。在GitHub上,可以将它作为软件开发者之间的交流工具。通过github的issues功能开发者可以便捷的发现软件的BUG并报告,想向项目所有人询问或用来追踪各种想法探讨准备实施的任务。

 

三、实验内容

1、下载并安装审查工具

(1)本次实验我们需要审查的是wyz组的代码,首先点进她们组的github仓库

技术图片

 

 

 将他们组的项目fork下来,同时,通过她们的readme.md文件,我们也知道了她们组使用的是python语言

技术图片

 

 

 故而我们可以使用pylint工具来审查代码。

 

(2)下载pylint包

关于下载以及安装pylint,我是参考网上教程,链接如下:https://www.jianshu.com/p/179bf8fb5c2d

 

 

 

 按照教程所述,点击链接下载pylint所需的四个包,但是教程中的最后一个logilab-common包链接失效,无法再用,我只能继续在网上查找,查了很久后,总算是找到了链接,链接如下 :https://dl.pconline.com.cn/download/1770613-1.html 。而由于之前我们已经安装过python,故而此次不需要再安装python软件,但是需要配置环境变量。

我们首先需要右击我的电脑->选择属性->高级->环境变量,在$PATH中添加Python的安装路径,如C:\Python3.6\anzhuan。

 

(3)安装pylint

将已下载的四个包都解压出来,打开命令行窗口,使用cd依次进入logilab-astng、logilab-common、astriod和Pylint解开的文件夹中,运行命令python setup.py install来安装。

例如:进入待astroid解压后的文件夹下,输入命令python setup.py install,然后等待安装完成。

技术图片

 

 

 但很奇怪的是,我们组的另一位成员四个包全部安装成功,而我却频频报错。报错代码类似下图,若不管错误,继续尝试安装pylint,结果就是一直安装不上,无奈之下,我只能选择把报错的所需的包下载下来,下载的链接即是红框中的链接。

技术图片

 

 

 当安装时都不再出现错误时,我已安装的包如下图所示

技术图片

 

 

 安装完成后,我将pylint的bin文件夹下的内容全部拷贝到了python安装后的Scripts文件夹下,然后测试pylint是否安装成功,将命令行窗口的目录定位到安装后的python的Scripts下,然后输入pylint --version,若是出现以下内容,即为安装成功。

技术图片

 

 

 

(4)在eclipse下安装pydev插件

其实pylint到以上步骤就可以使用了,但是由于我一开始觉得命令行没有集成到软件上好用,所以我决定将其集成到eclipse上,而若想eclipse软件能够运行python程序,还需要安装一个pydev插件才行。在 Eclipse 菜单栏中找到 Help > install new Software 。选择 add。在显示的窗口中,名称项输入 PyDev;链接里输入http://pydev.org/updates 。然后,单击 Ok。

技术图片

把【connect all update sites during install to find required software】的勾选去掉,否则在安装新插件时会联网寻找所有可能的更新站点搜索,导致安装时间不可预估,并可能导致安装失败。

 

(5)pydev的配置

启动Eclipse,打开window->Preferences

选择Interpreter-Python,然后选择New

点击【New】,添加一个系统里已有的Python解释器的位置。确定后会经过短暂的处理,得到它的Libraries、Buildins等。
(我写的地址是提前安装好的annaconda。)

最后,单击Reference界面下的 OK ; 等待后即可在Eclipse中写Python了。

 

(6)与pydev的集成

打开git bash,使用git clone命令将仓库下载到本地,在eclipse里添加项目,把.py文件导入,在菜单栏选择Window -> preferences -> Pydev -> Pylint,选中 "Use pylint?"

在这里,与教程不同的是,我的pydev下面没有pylint

技术图片

 

 我上网搜寻原因,然而并没有找到有人和我有一样的问题,当我正卡在这里时,我突然看到了上面的搜索框,于是搜索了pylint,结果发现这个选项竟然在pydev->editor->code analysis下

技术图片

 

 点击pylint选项,配置如下图所示,最后的编辑框内容是

--persistent=n --comment=n
--disable=C0103,C0301,W0312,W0511,W0232,E1101,broad-except,trailing-whitespace,missing-docstring

技术图片

 

以上配置完成后,点击菜单栏的Project -> Properties -> PyDev?-PYTHONPATH 增添项目的源文件目录到"Project Source Folders"。

以上操作均来源于网络教程,按理说,保存原文件后,应该就可以自动看到程序的代码审查结果,但是不知道为什么,我只能在progress窗口看到有分析进行,但是很快就结束了,而且也并没有其结果出现在控制台。技术图片

后来我发现,在有问题的行数是有审查的结果的,但是不够清晰明了。

技术图片

 

无奈之下,只能使用命令行窗口来审查代码

 

(7)命令行审查代码

打开命令行窗口,进入python下的Scripts文件夹下,输入pylint --rcfile=pylint.conf 后面加上想要审查的文件路径,如下图,即可看到文件的审查结果。

 

 技术图片

 

 整理问题后,审查结果如下:

错误类型 错误原因 出错处 修改建议
C类(惯例) line-too-long (语句过长) line58、line59  同一行的代码(包括注释)不宜超过100字符
bad-whitespace (空格错误) line58、line59 “,”后可加空格,使代码更加清晰
missing-final-newline(缺少换行) line65 语句末尾换行
missing-docstring(缺少模块字符串) line1、16、20、39  注:该错误可能由于本组成员在进行代码审查时,未下载对应的包
multiple-imports(在同一行import了多个接口) line2 一般都是代码规范插件的问题
invaild-name (无效命名) line8、9、13、16、20、42、45、57  变量名应既简短又具有描述性,应尽量使用小写的Python变量名
E类(错误) import-error import(出错) line3、4、5、6 注:该错误可能由于本组成员在进行代码审查时,未下载对应的包
W类(警告) unused-argument( 未使用参数) line20  删除未使用参数
unused-variable  (未使用变量) line55、60  删除未使用变量

pylint的错误类型分为以下几类:

 (C) 惯例。违反了编码风格标准 
(R) 重构。写得非常糟糕的代码。
(W) 警告。某些 Python 特定的问题。 
(E) 错误。很可能是代码中的错误。
(F) 致命错误。阻止 Pylint 进一步运行的错误。

 

(8)审查分析,经过我们小组成员分析,wyz组同学整体代码主要是在同一行代码长度、缺失空格、语句末尾未换行、有多余参数以及变量等命名不规范等方面有些小失误,修改建议如上述表格,需要补充的是Python变量命名规则

①变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
②变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
③不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
④变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
⑤慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;
注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的注意。

(8)向项目拥有者提交issue

 技术图片

 

 

 

四、实验小结

1、本次实验对我来说最难的地方莫过于安装各类插件,配置插件了,我安装了一个下午的包,很让我疑惑的是,我同组的同学安装了四个包就可以成功的安装好了pylint,而我却一直报错,让我不得不多安装了很多个包,配置pylint是我本次实验耗时最多的地方。

2、即便是配置完成pylint,后续的相关配置也让我很头疼,明明是跟着教程一步一步进行下去的,可是结果却始终不尽如人意,而在我终于配置好eclipse+pydev+pylint后,我却一直没能等到结果,我上百度搜索了很多,但大多数都是教如何配置,且大多没有图,更别说案例了。而我直到最后才发现,其实在eclipse上搭建pylint审查,其是没有结果汇总的,而只是分布在出错处,出错行的前面有技术图片技术图片的标识,并在右部有一个出错的分布图,如下图所示

技术图片

 

 3、之前写代码的时候并不觉得我们的代码会有很多的不规范,而直到这次审查完别人的代码。本来我们在工具审查前进行人工审查时觉得,wyz组的同学已经很好的完成了这个代码,基本上没有什么不规范的地方,但是在用工具进行审查后发现依然有一些不符合规范。反思我们自己的代码,我们使用的是c++,语法上虽然会python语言要严格一些,但是其对于语法规范如缩进就没那么严格,故而我们组的代码可能存在着更多的问题。

4、经过这次代码审查,我深刻的认识到了代码规范的重要性,今后编写代码时,我也一定会多注意这方面的规则,争取写出更加规范的代码。

 

实验四 代码评审

标签:人工   语句   删除   阅读   集成   了解   架构   处理   工具   

原文地址:https://www.cnblogs.com/qingmuling/p/12885926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!