电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件代码评审检查点CC

20页
  • 卖家[上传人]:re****.1
  • 文档编号:474108571
  • 上传时间:2023-06-09
  • 文档格式:DOC
  • 文档大小:112.50KB
  • / 20 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、文档供参考,可复制、编制,期待您的好评与关注! 软件代码评审检查点-C-C+文件结构审查【检查点1 】文件名是否和实际内容相符?规范性说明文件名应该清晰说明出该文件的功能和作用。案例略【检查点2 】多个模块公用的定义和函数原型的说明是否放在“*.h”?说明一般来说,*.h文件是公用的头文件,文件中申明的宏、结构、函数原型等,一其他的模块需要引用。案例略【检查点3 】私有的申明和函数原型的说明是否放在“*.inc”?说明一般来说,*.inc文件是私有的头文件。文件中申明的宏、结构、函数原型等,是仅供本模块使用。案例略【检查点4 】头文件是否使用了#ifndef-#endif宏开关来防止重复引用?说明一般来说,头文件通过如下方法避免重复引用:#ifndef _XXX_H_#define _XXX_H_/*文件主体*/#endif 【检查点5 】函数原型是否没有明确申明返回值类型说明虽然C语言并不需要精确定义和声明函数返回类型,如果函数没有返回值,则定义为类型void。如果函数没有定义返回类型,编译器将认为其返回类型为int。在这种情况,很难判断函数是否应该有返回值。为了避免这种情况,函数返

      2、回类型应该被定义和声明。案例错误书写:SSfunction() ;正确书写:void SSfunction() ;预处理【检查点1 】宏定义是否缺少了“( )”符号?说明对于表达式的宏定义,注意要对变量和表达式本身使用“( )”,防止宏展开时出错。案例案例一注意下面的宏定义极易出现问题: #define ADD(x, y) x + y上面的宏在如下代码中出错: c = ADD(a, b) /2;宏展开后的形式为: c = a + b /2;而不是: c = (a + b) /2;案例二 #define MULTI(x, y) x*y在程序中代码如下: a = MULTI( b+c, 2);宏展开后为: a = b + c * 2 ;而不是: a = (b + c) * 2;【检查点2 】宏定义是否存在不期望或者意料之外的附加效应?说明宏是一个短行的文本,或者说文本模板,它可以被扩充为更长的文本.通常由宏产生的问题并不在宏定义本身,而往往由其下面的程序引起. 采用宏可以使代码简化,但它也可能隐藏重要的细节和关键的操作.案例 #define SQUARE ( x ) ( ( x ) * (

      3、 x ) ) . . . w = SQUARE ( + value ); 实际对宏SQUARE的引用将导致value被增加两次 , 因为这个语句将被C预处理器扩充以下形式: w = ( ( + + value ) * ( + + value ) );【检查点3 】是否存在通过定义宏来改变程序控制流程?说明通过定义宏来改变程序控制流程实际上是很糟糕的编程技巧案例 错误形式: #define FOR_ALL for ( i = 0; i cmd.req.req2, tmrc ) );正确形式: return ( & MLtisfail ( mltmsg - cmd.req.req2, tmrc ) );在如下这些情况下传送指针作为参数是更好的选择: - 需要传送大量的数据和大型的数据结构作为输入时, - 被调函数需要修改调用函数的数据时.【检查点4 】返回值的所携带的信息是否的确是调用函数所需要的? 说明略【检查点5 】函数入参是间接引用参数时候,当中是否漏掉一个层次? 说明 案例 错误形式: DXal_fndnxt ( . . . , ( DXALMDATA * ) & data_ptr

      4、 );正确形式: DXal_fndnxt ( . . . , ( DXALMDATA * * ) & data_ptr );【检查点6 】函数退出时是否有正确的返回值?说明看到函数调用,要养成习惯,进入函数内部瞄一眼。看看函数的正常值和异常值都是什么。看看返回值需不需要判断。看看有没有参数理解不一致的地方。案例错误形式:if ( VOS_strnicmp(szFullName, DEV_ATM_NAME , DEV_ATM_NAMELEN) = 0 ) ulIfType = DEV_GetIfTypeFromIfName( szFullName );if ( ulIfType = -1 )EXEC_OutString( ulExecID, rnUnknown interface type );return VOS_ERR;/*得到端口的索引*/ulRet = DEV_GetIfIndexFromIfName( szFullName, &ulIfIndex);if (SUCCESS != ulRet)EXEC_OutString( ulExecID, rnUnknown interfac

      5、e number );return VOS_ERR;/*判断端口是否已经存在*/ pIfIns = DEV_GetIfFromIndex(ulIfIndex);if(NULL = pIfIns) rc = DEV_Cnsl_CreateIf(ulExecID, ulIfType, ulIfIndex, ulSubType); if(SUCCESS != rc) return SUCCESS; pIfIns = DEV_GetIfFromIndex(ulIfIndex); if(NULL = pIfIns) COUT_OUTPUT_DIAG(MOD_DEV, COUT_LEVEL_WARNING, pIfIns = NULL is invalid %s.%d, _FILE_, _LINE_); return DEV_ERR_GEN; 函数使用-1作为非法值,而在DEV_GetIfTypeFromIfName函数中:U32 DEV_GetIfTypeFromIfName(CHAR *ifName)CHAR szIfType20; /接口的类型字符串U32ulIfType;U32 strLen;U32 i;if(NULL =ifName)COUT_OUTPUT_DIAG(MOD_DEV, COUT_LEVEL_WARNING, ifName = NULL in GetIfTypeFromIfName %s.%d, _FILE_, _LINE_); return DEV_ERR_VALUE; strLen = VOS_strlen(ifName); if(0 = strLen) /*字符串为空,返回

      《软件代码评审检查点CC》由会员re****.1分享,可在线阅读,更多相关《软件代码评审检查点CC》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.