- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
代码审查技巧
代码审查技巧文件结构审查【检查点1?】文件名是否和实际内容相符?[规范性]?〖说明〗文件名应该清晰说明出该文件的功能和作用。〖案例〗略? 【检查点2?】多个模块公用的定义和函数原型的说明是否放在“*.h”?〖说明〗一般来说,*.h文件是公用的头文件,文件中申明的宏、结构、函数原型等,一其他的模块需要引用。〖案例〗略【检查点3?】私有的申明和函数原型的说明是否放在“*.inc”?〖说明〗一般来说,*.inc文件是私有的头文件。文件中申明的宏、结构、函数原型等,是仅供本模块使用。〖案例〗略? 【检查点4】头文件是否使用了#ifndef#endif宏开关来防止重复引用?〖说明〗一般来说,头文件通过如下方法避免重复引用:#ifndef????_XXX_H_?#define????_XXX_H_?/*文件主体*/?#endif? 【检查点5】函数原型是否没有明确申明返回值类型〖说明〗虽然C语言并不需要精确定义和声明函数返回类型,如果函数没有返回值,则定义为类型void。如果函数没有定义返回类型,编译器将认为其返回类型为int。在这种情况,很难判断函数是否应该有返回值。为了避免这种情况,函数返回类型应该被定义和声明。〖案例〗错误书写: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】include中是否包含了绝对路径?〖说明〗#include包含的文件路径应该是相对路径,不应该使用绝对路径,经常出现错误主要是带有盘符,带有根目录符号的写法。〖案例〗以下使用方法在程序中应该禁止:#include?c:? \include\type.h???/*?不应该包括“c:\”?*/? #include?\test\include\macro.h??/*?不应该包括“\”根目录符号?*/?正确的写法为:#include?test\include\type.h????#include?test\include\macro.h??? ?函数【检查点1?】是否对函数的输入参数进行应有合法性检查?〖说明〗对于给其他模块使用的公用函数,要求函数内部对输入参数进行严格全面的参数检查。对于模块内的私有函数,在不是很影响效率的情况下,建议进行前全面的参数检查。? 【检查点2】函数退出时是否有正确的返回值?〖说明〗略? 【检查点3】调用其他函数时是否对返回值进行了判断?〖说明〗略? 【检查点4】在多任务操作系统环境下是否考虑了函数的可重入性?〖说明〗在多任务的操作系统中,对于多任务共用的函数,如果该函数用到了全局变量或静态变量,需要注意到函数的可重入性。一般来说,如果函数只使用了内部的非静态局部变量,则该函数没用可重入的问题。变量【检查点1】是否使用了未初始化的变量?〖说明〗该检查点要求检查在程序中使用的变量是否在使用前已经初始化,确定初始化的位置和第一次调用的位置。该类错误绝大部分可以使用PC-LINT检查出来,但对一些隐藏的较深的情况使用PC-LINT无法查出,需要特别注意。例如,对于全局变量A,在模块B中初始化,在模块C中调用。如果C在B前调用,显然就会发生该类错误,而PC-LINT是无法发现的〖案例〗略? 【检查点2】是否定义了变量但是没有使用?[规范性]? 〖说明〗略〖案例〗略? 【检查点3?】是否存在类型不匹配的赋值操作〖说明〗该检查点主要检查程序中是否有不同类型数据相互转换造成的错误。在程序中,开启定时器的正确书写为:long?time;?time?=?10000;? OSWAIT(10000,?time);?错误书写:char?time;?time?=?10000;? OSWAIT(10000,?time);? 在这里,执行语句time?=?10000;,然后作为第二个参数传递到函数OSWAIT()以产生10秒的等待。但是,由于变量time为单字节,所以10000被截取为16进制。因此,该代码只等待16毫秒,而不是10秒。? 【检查点4】是否存在类型不匹配的比较操作〖说明〗在循环终止条件的判断中,不同类型变量的比较操作
您可能关注的文档
最近下载
- u市场管理规范.doc VIP
- 癫痫病人的围术期麻醉管理.pptx VIP
- 特殊教育概论第二版全套完整教学课件.pptx
- 《银屑病的治疗》课件.ppt VIP
- 2023年下第三套广播操舞动青春全套教案.doc VIP
- 新人教版八年级上册物理全册课件(2024年秋季新版教材).pptx
- 中建七局《准代建模式EPC项目策划总结交流材料》.pptx VIP
- 2025南京卫生高等职业技术学校工作人员招聘考试真题.docx VIP
- 运动控制系统安装与调试(第2版)课件全套 甄久军 项目1--5 典型运动控制系统的认知与装调 ---伺服电动机运动控制系统的调试.pptx
- 成都高新区街道面向社会公开招聘2025年第一批次编外聘用人员笔试备考试题及答案解析.docx VIP
文档评论(0)