其他分享
首页 > 其他分享> > 实验四 代码评审

实验四 代码评审

作者:互联网

实验四、代码评审


一、实验目的
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的使用和一些相关命令。

标签:审查,代码,Cpplint,实验,评审,com
来源: https://www.cnblogs.com/letusrushb/p/12878083.html