实验四---代码评审
实验4 代码评审
⼀、实验⽬的
1) 了解代码审查的含义;
2) 掌握相关编程规范检查⼯具的安装与使⽤;
⼆、实验内容及要求
Code Review中⽂应该译作“代码审查”或是“代码评审”或“代码复查”,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。Code Review主要⽤来在软件⼯程过程中改进代码质量,通过代码评审可以达到如下⽬的:●在项⽬早期就能够发现代码中的BUG
●帮助初级开发⼈员学习⾼级开发⼈员的经验,达到知识共享●避免开发⼈员犯⼀些很常见,很普通的错误●保证项⽬组⼈员的良好沟通●项⽬或产品的代码更容易维护
代码评审主要内容是编程规范,重构⽅法,架构设计,性能安全,⽇志,可读性,扩展性等问题。通过代码评审可查找和修复引⼊到开发阶段的应⽤程序的错误,提⾼软件的整体素质和开发者的技能。代码评审的作⽤和意义已在很多技术团队内达成共识,可是很多时候并未被有效执⾏,甚⾄被认为是⼀项费时费⼒的⼯作。借助⼀些⼯具可以更容易,更有效率地来进⾏Code Review。
1、以⼩组形式,针对前⾯“实验⼀”中所完成的代码,进⾏代码评审(⾛查),重点检查以下情况。你也可有查询相关材料,建⽴更细化的检查清单(check list)
- 程序是否能正常⼯作,代码是否实现预期的功能,逻辑是否正确。- 代码是否遵循的编程规范- 代码是否尽可能的模块化
- 所有的数据输⼊是否都进⾏了检查- 是否有注释,并且描述了代码的意图- 代码的可理解性和可测试性
2、按“实验⼆”的分组⽅式,两⼈⼀组,随机分配另⼀组的代码作为本组评审和分析的对象⼀些编码规范的检查⼯具如下,也可⾃⾏查找⼯具使⽤。java语⾔
- 采⽤使⽤eclipse Checkstyle插件
- CheckStyle是SourceForge下的⼀个项⽬,提供了⼀个帮助JAVA开发⼈员遵守某些编码规范的⼯具。它能够⾃动化代码规范检查过程,从⽽使得开发⼈员从这项重要但枯燥的任务中解脱出来。它可以根据设置好的编码规则来检查代码。⽐如符合规范的变量命名,⽅法体的最⼤⾏数,重复代码检查等等。 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.clone待审查对象的仓库
⾸先在git上把需要进⾏代码审核的仓库clone到本地
2.给代码开发环境配置插件
打开本地⽂件后发现待审查对象采⽤的是java语⾔,于是选择⽤eclipse进⾏代码审查,采⽤的插件是Ali-CodeAnalysis代码审查⼯具。
3.进⾏代码审查
由于该⼩组和我组课题⼀致,因此对于代码能否满⾜课题要求的审查会⽐较熟练。(1)⾸先运⾏程序,发现程序是可运⾏的,且满⾜了课题要求
(2)开始代码审查:右击项⽬,然后找到阿⾥编码规约扫描并点击,即可开始扫描代码如图
(3)分析代码扫描结果
如果代码有问题,则会在出问题的代码⾏前端出现和等符号,说明扫描出该⾏代码有问题,将⿏标放到⾏端的符号处便能显⽰出该⾏代码出问题的原因。如图
代码审查结束后,发现⼤致问题有3种Blocker、Criticals和Majors,分别对应问题的严重性从重到轻。Blocker问题有:if ,else的括号问题,这两种语句中必须要有⼤括号
Criticals问题有:Object的equals⽅法容易抛空指针异常,应使⽤常量或确定有值的对象调⽤equals。 Major问题有: ①
②
③ ④
⑤
⑥
综合同组队友审查的结果可以归纳为下表
4.在github上给被审查的⼩组提交issue
实验⼩结:通过本次代码审查实验,我学到了很多,例如如何进⾏代码审查以及代码审查的规范,还有了解到了代码审查这个东西,以前以为代码只要不报错能运⾏就好了,现在知道了原来代码既要能流畅运⾏,也要简介规范,这才是⼀个好的程序员追求的⽬标。⽐较直接的收获就是知道了如何给eclipse配置插件和插件的⽤法,这对我以后的学习帮助很⼤,此次实验受益匪浅。