网站大量收购闲置独家精品文档,联系QQ:2885784924

华为代码review准则.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
触发式检视13 UCHAR szOutString[204800]; … for (i = 0; i MAX_NUM; i++) { VOS_sprintf(szOutString…); } 204800够大了吧? 太大的局部变量导致任务堆栈被破坏;建议申请动态内存 Page * 触发式检视14 if ( ulItemFlag FLAG_DELETED) { …} 是””而不是”” 此类还有”|”与”| |”等。同时注意什么情况下可以用”= =” for ( ucIndex = 0; ucIndex 256; ucIndex++) { …} 循环退出的条件可以满足吗? 死循环问题 Page * 触发式检视15 UCHAR ucEncryptedPasswd[ 128 ]; UCHAR ucMacAddr[ 6 ]?; … vos_printf ( ucEncryptedPasswd ); vos_printf ( ucMacAddr ); ... 变量中存放的并不是字符串,这样输出的有不可预知的后果,重则死机 这种情况要用16进制打印ASCII码值 Page * 触发式检视16 VOS_StrCpy ( szDest, szSrc)?; VOS_StrNCpy ( szDest, szSrc, ulLen)?; VOS_MemCpy (pDest, pSrc, ulLen)?; 字符串或内存拷贝没有越界吧? 另外要注意把Src和Dest写反的情况 ... ulPacketLen = pstIp- ip_usLen?; 报文处理做字节序转换了吗? 从报文中取出后要做NTOH转换,填写报文时要做HTON转换 Page * 触发式检视17 For (i = 0?; i 1000000000?; i++) { ...//very complex VOS_TaskDelay(100)?; } 长时间的循环中,有主动释放CPU的操作吗? 我们是实时系统,这个不能忽略。时间太久系统会自动复位?! if (...) else if () else if () ... 最后有else分支吗? 相当于switch语句中的default Page * 触发式检视19 /*如果用户认证不成功*/ if (VOS_ERR = = AAA_UserAuth (ulCid ) ) { … //error; } 应该是” VOS_OK != ”吧? 注意这两种写法并不是等价的,因为可能还有其它的错误类型 VOS_sprintf ( szOutString, “%s”, szTemp ); VOS_sprintf ( szOutString, szTemp ); 这两种写法有区别吗? 第1种写法是安全的,第2种写法时,如果szTemp含有转义字符(如”%s”),则极度危险,严重至死机 Page * 触发式检视20 #define MAX_NAME_LEN 64 … UCHAR szUserName [ MAX_NAME_LEN ]; … 64这个长度包不包括最后的’\0’呢?那就是说名字最长是63咯? 这样定义通常会让人迷惑到底是多长,建议的做法是定义成(64 + 1)。参考aaa_pub.h pMsg = VOS_Malloc(…); if ( VOS_OK != AAA_SendMsg ( pMsg ) ){ …} else{ …} 发送失败情况下pMsg在哪里释放的?发送成功情况下pMsg在哪里释放的? 内存泄漏问题 Page * 触发式检视21 if ( g_stVar.ulTimerId != 0 ) {VOS_Timer_Delete ( g_stVar.ulTimerId );} … 删除定时器前判断合法性了吗? 删除定时器后,控制句柄清0了吗? 其它类型资源的控制句柄都要这样处理 if ( pMsp = = NULL) { VOS_Assert ( pMsg = = NULL ); return VOS_ERR; } 断言的“= =” 应该是 ”!=” 经常碰到这类错误。断言在条件为“假”的时候工作 Page * 触发式检视22 if ( g_stVar.ulMemPtr != NULL) { VOS_Free( g_stVar.ulMemPtr ); } 释放内存前判断指针合法性了吗? 释放内存后把指针清空了吗? 内存重复释放问题,空闲内存被改写问题等严重后果 Page * * HUAWEI TECHNOLOGIES CO., LTD. Huawei Confidential 英文标题:32-35pt 颜色: R153 G0 B0 内部使用字体 :

您可能关注的文档

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档