您的位置:首页 > 编程语言

代码走查该走查什么

2012-10-13 00:55 337 查看
代码走查在很多公司都是一个必要的过程,但是很多时候却时候一个形同虚设的过程,通常检查的同事只要保证你的代码能够编译通过,不出现问题就pass了。到底代码走查有没有一定的规范性呢?

如果公司是严格按照开发流程来的话,那么代码走查可能也会是下图中红色,它标示着代码走查可以使得设计人员和开发人员之间识别出错误,防止出现设计一套方案开发又开发自己又写出了另一套方案的问题发生。这在一些业务性比较强的系统中代码走查尤为重要,如果开发人员因为业务不熟导致理解错误那么出现的问题也能就会不可预估了,这个时候的代码走查就可以及早发现问题,也是一个开发人员向其他人员阐述自己所理解的业务信息的一个渠道。



大部分的公司代码走查是在同事之间互查,通常我们会遇到这样开头说的情况,只是保证编译通过或者没有一个详细的步骤来执行这个步骤。本文的重点也将放在这里,讨论如何进行这种情况下C++的代码走查。我觉得可以将代码审查从大到细分为几个步骤,只要按照这样的流程下来,基本上可以过滤掉大部分不需要犯的错误。



²文档审查

1 文档时候有说明信息,写明文件的主要作用类信息,文件名等

2 头文件是否只用宏定义防止重复引用

Exp: #ifndef_A_HH_

#define_A_HH_

………//class info

#endif //_A_HH_

3 函数声明时候有明确的返回值

Exp:默认情况下编译器会提为什么返回值的函数设置为返回类型为int ,这种情况下很难判断要返回是数据类型。很有可能是手误操作导致。

²函数审查

1 函数声明时候得当,好的函数什么使得调用者和后期维护都将受用

2 入参个数合理性检查,一般不要超过6个,超过的可以考虑用结构体。

参数多了函数调用效率就将下来了。在如下这些情况下传送指针作为参数是更好的选择:

1需要传送大量的数据和大型的数据结构作为输入

2被调函数需要修改调用函数的数据

3 入参合法性检查(空指针,取值范围,内存越界),

Exp

1.NULL == param

2.如果带了一个buf最好跟一个参数表面buf的长度。

…..

²变量审查

1 是否初始化

2 是否存在类型不匹配的比较操作(尤其是unsigned 类型和 signed类型的比较)对于unsigned 类型注意边界判断。

3 是否定义了变量但是没有使用

²内存资源审查

1 是否对数组进行了越界操作。

2 内存拷贝时是否判断了长度。Strcpy的时候要注意dst 要比src 内存大,否则导致内存越界

3 申请内存后是否判断了内存申请成功。

Exp:char p=new char[100];

If( NULL == p )

{

Return;

}

4 对异常情况的处理时是否直接return而忘记了释放内存,尤其在一些抛出异常的时候有没有注意在catch的时候释放资源。

5 文件句柄的释放。Open对应close。

²语句规范性检查

1 { } 是否独占一行(习惯问题。。)。

Exp:

If()

{

。。。。

}

Else

{

。。。

}

2 一行是否只定义一个变量。

3 内存开辟malloc 和free 对应;new 和delete对应.

4 是否将 == 写错了 =。

建议做判断将常量放在前面可防止这类错误

这里只列举了本人认为相对比较重要的一些点,其他的细节就不多介绍了。。。睡觉啦,明天还得上班
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: