华为代码review准则.ppt
《华为代码review准则.ppt》由会员分享,可在线阅读,更多相关《华为代码review准则.ppt(34页珍藏版)》请在三一文库上搜索。
1、HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内
2、不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. Page 1 检视方法 l触发式检视 l分类专项检视 l交叉检视 l每日新合入检视 l版本差异检视 l其他检视方法 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5
3、级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. 分类专项检视1 l内存使用类 1.内存申请后,是否有是否申请成功? 2.函数退出,特别是异常分支退出时,是否释放了内存? 3.内存是否被重复释放? 4.操作内存时是否存在溢出使用。 5.申请与释放的接口是否一致? 6.跨函数释放尤其
4、要关注,写代码时尽量不要设计成跨函数释放。 7.释放后要对指针置空。 Page 2 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录
5、(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. 分类专项检视2 l指针使用类 1.是否对函数的指针参数做了合法性检查? 2.是否使用了空指针、已经释放的指针? 3.对指针的偏移计算是否正确? 4.指针合法性检查后是否有正确的处理? 5.判断到指针为空,应清理已申请的全部资源,并退出正常流程 6.多个指针变量同时指向同一块内存地址,用其中一个指针释放该内存后 ,其它指针是否置空或重新赋值;(如果对其它指针进行置空,则需要 在使用这些指针
6、的地方进行判断是否为空的保护) Page 3 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字
7、体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. l越界访问类 1.字符串拷贝时,是否保证字符串的长度合法? 2.字符串初始化、拷贝、连接的入参是否正确? 3.必须有一个地方保证内存不溢出,这个保证要么是编写代码时的静态保 证(定义的内存足够大),要么是运行时的动态检查,由函数提供者 或调用者进行检查。建议由函数提供者进行检查,或用strncpy等方式 避免拷贝过多的内存提示:使用strncpy后注意在结尾处增加0。 4.典型错误是字符串越界1字节; Page 4 分类专项
8、检视3 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一
9、页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. 分类专项检视4 l数组溢出类 1.使用数组时,数组下标是否在数组范围之内? 2.尤其是当循环语句和数组一起使用时,一定要注意边界值不能溢出。 l重点检查:边界值处理不正确,最大、最小值处理不正确,重点关注 (for/while)循环变量的上下限检测; l错误案例说明: l1、(ULONG型变量 = 0)恒真循环;(恒真的原因:ULONG型变量为 零时减1产生数值翻转,变为0xFFFFFFFFUL); l2、循环上下限是由外部函数传入,没有对传入值进行合法性检查导
10、致 死循环等问题; Page 5 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体
11、配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. l3、多层循环时,禁止使用同一个循环变量,否则很容易导致死循环; l4、循环变量做为数组下标时,要防止数组下标越界; l5、在循环体内修改循环变量时要慎重;如:对循环变量同时有加减操 作时,很可能会出现死循环,要特别关注; Page 6 分类专项检视4 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : Frutige
12、rNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. l资源泄漏类 1.在过程/函数退出之前是否释放了所有需要释放
13、的资源(内存/文件句柄等) ? 2.信号量、waitlist等申请后,是否有进行释放? 3. 跨函数的释放,如果不是产品中早已明确的通用资源管理机制,则要 在申请内存的地方写作注释 4.调用可能会返回失败的函数,一定要判断返回值并做资源回收。 l异常处理类 1.异常分支是否进行了处理?是否处理正确? 2.如switch语句一定要包含default分支; 3.如有if分支就应该包含else分支(对于else分支中不需要特殊处理的情 况,使用注释说明) Page 7 分类专项检视5 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-3
14、5pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在
15、右上角. l资源保护类 1.可重入函数使用全局变量时,应通过关中断、信号量(即P、V操作)等 手段对其加以保护 2.只对简单全局变量(如整型)进行读操作的函数可以不申请互斥保护, 但操作复杂全局变量(如链表,树)时,即使仅仅读取,也必须申请互 斥保护,因为存在中途被其它任务破坏数据结构的可能性 3.任务切换需重点关注 l数据溢出类 1.强制的数据类型转换,是否导致了数据的丢失? 2.是否数据精度不足,导致可能发生数据溢出或翻转? 3.如对计数变量,一般是进行定时读取,要保证在定时器超时前数据不能 溢出。 Page 8 分类专项检视6 HUAWEI TECHNOLOGIES CO., LTD.H
16、uawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一
17、组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. l差1错误 1.此类错误一般是由于把“=”误写成“”等造成的 2.如:VlanID有效值为14095,通常会定义宏,比如 MAX_VLAN_NUMBER为4096,这时需要注意在参数合法性判断时, 需要用“= MAX_VLAN_NUMBER”,不要误用“ MAX_VLAN_NUMBER”。 l返回值类 1.函数返回值的类型需要和函数声明的类型一致 2.在异常情况下,需要返回不同的错误码,而不是返回OK 3.函数返回值return ok、error、true、false是否用混? Page 9 分类专项检视7 HUAWEI TEC
18、HNOLOGIES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以
19、下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. 代码审查九字真言 n看见了If,就想Else。 n看见malloc,就去找Free。 n函数调用要小心,需要看看返回值。 n看到for循环,就找边界值。 n看见return要注意,要去前面找资源。 n看见数组把神提,问题往往在下标。 n不要小看字符串,长度是个大问题。 n得到函数不要急,看看变量初始化,各种路径要小心。 n赋值函数最危险,变量没有初始化。 l九句句真言不孤立,相互结合显神威。 Page 10 HUAWEI TECHNOLOGIES CO., LTD.Huawei Confi
20、dential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同一页面内 只选择一组使 用。 (仅供参考
21、) 客户或者合作 伙伴的标志放 在右上角. 真言详解1 l看见If,就想Else l看到if语句,就要想到else语句。如果没有else语句,就要分析是不需 要,还是异常情况没有处理,如果是异常情况没有处理,可以提单。 l看见malloc,就去找Free l看到malloc语句分配了内存,立即停下正常走读,看malloc代码之后 ,是否在所有程序的返回分支中都有释放语句。 l函数调用要小心,需要看看返回值 l到函数调用,要养成习惯,进入函数内部瞄一眼。看看函数的正常值 和异常值都是什么。看看返回值需不需要判断。看看有没有参数理解 不一致的地方。 Page 11 HUAWEI TECHNOLOG
22、IES CO., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色
23、方案 ,同一页面内 只选择一组使 用。 (仅供参考) 客户或者合作 伙伴的标志放 在右上角. l看到for循环,就找边界值 l看到for循环,就要看看边界值是否合理。如果循环变量是数组的下标 ,更加需要注意。 l看见return要注意,要去前面找资源 l看见return语句,尤其是函数中间的异常返回语句。看到这种语句,就 需要折回头去看看前面有没有分配资源。前面分配的任何资源(包括 内存,端口,等等),在异常返回处需要一并释放。 l看见数组把神提,问题往往在下标 l函数中一旦出现数组,就要提起精神。数组越界可是个致命问题。 Page 12 真言详解2 HUAWEI TECHNOLOGIES C
24、O., LTD.Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 : FrutigerNext LT Medium 外部使用字体 : Arial 中文标题:30-32pt 颜色: R153 G0 B0 字体:黑体 英文正文:20-22pt 子目录 (2-5级) :18pt 颜色:黑色 内部使用字体 : FrutigerNext LT Regular 外部使用字体 : Arial 中文正文:18-20pt 子目录(2-5级):18pt 颜色:黑色 字体:细黑体 配色参考方案 : 建议同一页面 内不超过四种 颜色,以下是 组配色方案 ,同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 代码 review 准则
链接地址:https://www.31doc.com/p-2114688.html