实验四、代码评审
一、实验目的
1) 了解代码审查的含义;
2) 掌握相关编程规范检查工具的安装与使用;
二、实验内容及要求
代码评审主要内容是编程规范,重构方法,架构设计,性能安全,日志,可读性,扩展性等问题。通过代码评审可查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码评审的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review。
1)、以小组形式,针对前面“实验一”中所完成的代码,进行代码评审(走查),重点检查以下情况。你也可有查询相关材料,建立更细化的检查清单(check list)
- 程序是否能正常工作,代码是否实现预期的功能,逻辑是否正确。
- 代码是否遵循的编程规范
- 代码是否尽可能的模块化
- 所有的数据输入是否都进行了检查
- 是否有注释,并且描述了代码的意图
- 代码的可理解性和可测试性
2)、按“实验二”的分组方式,两人一组,随机分配另一组的代码作为本组评审和分析的对象
三、实验过程
被评审小队31组信息:
储兆强 https://www.cnblogs.com/chuzhaoqiang/
蒋坤 https://www.cnblogs.com/jk521/
四则运算 https://github.com/chuzhaoqiang/czq
仓库截图:
运行仓库中代码:
运行报错 参数 ‘a’ 重新定义
接下来进行代码审查工作
(1)配置代码审查工具
被评审小组的代码采用C++语言编写,所以本小队采用的代码审查工具为Cpplint。
Cpplint是Google开发的一个C++代码风格检查工具,并且是一个开源可下载脚本,具体下载链接在:
https://github.com/google/styleguide/blob/gh-pages/cpplint/cpplint.py
Cpplint是一个使用python2.X版本写的脚本,所以执行的时候完美兼容应是在python2.X版本上面,建议安装python2.7;由于本小队的python版本为3.X,所以在执代 码审查时出现了一些异常,下文中将给出异常及解决方法。
1、在链接处下载好Cpplint文件
Cpplint文件打开如下
2、将Cpplint文件、对应审查文件放置到与python程序同一目录下
3、在命令行(cmd)中执行相应命令
进入对应目录后使用python cpplint.py +文件名的形式执行审查脚本
(2)使用脚本对代码进行分析,记录结果如下:
(3)对工具执行结果进行分析及建议
0行: No copyright message found.
未声明版权信息;应有一行申明版权
9行: Found C system header after C++ system header.
在C++头文件后找到C语言头文件;正确顺序应为:.h,c,c++,其他。
头文件声明顺序有时会影响冲突内容,以先声明的为主
301行: Consider using rand_r(...) instead of rand(...) for improved thread safety.
考虑使用rand_r(…)而不是rand(…)以此提高线程安全性
程序中还警告了缩进问题,如下:
(4)通过github issues向项目维护者提交问题(issue),截图如下:
(5)记录总结实验过程中遇到的问题和解决过程
1:Cpplint.py脚本提示中文注释警告
使用命令-readability/utf8 过滤该警告
2:置信度不同会影响警告数量,选用合适的置信度
使用命令 --verbose=(1-5)选择置信度
四、实验小结
在这次实验中涉及到代码规范及审查的内容,在对实验的准备工作中我了解到了GOOGLE对于代码风格的规范,对我以后在代码方面的书写有很大帮助,明确并统一代码风格在书写代码时是很有必要的;在实验过程中接触到了代码审查工具Cpplint,让我以后对于代码的书写有了自检的可能,并且初步熟悉了Cpplint的使用和一些相关命令。