【摘 要】
:
随着软件规模的不断增大,软件缺陷的检测愈加重要,一个不起眼的小错误,可能会导致巨大的损失。然而长期以来,程序中冗余代码的存在被认为是可以忽略的问题,认为对程序不会造
论文部分内容阅读
随着软件规模的不断增大,软件缺陷的检测愈加重要,一个不起眼的小错误,可能会导致巨大的损失。然而长期以来,程序中冗余代码的存在被认为是可以忽略的问题,认为对程序不会造成太大的危害,因此给予了很少的关注。但事实证明,冗余代码中包含的一些错误同样是有严重危害的,而且不易被发现。针对目前的现状,本文提出了C冗余代码及相关缺陷检测模型。围绕该模型,本文介绍了模型中涉及到的一些技术,包括程序静态分析,词法和语法分析方法,语法树以及程序依赖图,以便更好的理解整个模型。本文提出的模型主要检测四种冗余代码相关的缺陷:幂等操作,冗余的赋值,死代码以及冗余的条件表达式。其基本思路是:首先对C源代码进行预处理,接着进行词法分析,将源代码转化为token流,并在token流的基础上进行struct标识符和typedef标识符分析。在上面两步的基础上,生成程序的语法树,继而在语法树的基础上采用不同的方法来检测四种冗余缺陷:1)分析可能包含幂等操作的子树,查找幂等操作;2)对局部定义的变量,采用过程内部分析方法,来判断是否存在冗余的赋值;3)在语法树的基础上生成PDG,继而在PDG的基础上查找包含缺陷的结构,查找死代码;4)数据流分析,计算赋值表达式和条件表达式的值,查找冗余的条件表达式。最后根据四种缺陷的检测结果,给出缺陷检测报告。本文使用开源代码对C冗余代码及相关缺陷检测模型进行了测试,检测出一些真正的缺陷,为进一步完善这些开源项目提供了帮助,同时对该模型进行了仿真实验。实验结果表明,本文中提出的缺陷检测模型能够有效地检测出C代码中的四种冗余代码相关的缺陷,极大的方便了开发人员对此类缺陷的检测和修复,进一步保证了软件的质量。
其他文献
指纹识别技术是一种利用人的指纹特征通过计算机进行身份自动识别的综合技术,属于生物特征识别领域。应用指纹进行身份鉴别已有悠久的历史,很多国内外学者对指纹识别技术作了深
员工绩效考核是公司人力资源管理的重要环节,如何客观、公正的对员工的绩效做出评价,关乎到公司和员工的长远发展。员工绩效考核中定性指标,由于其考核方式的主观不确定性,往往会
随着信息技术的飞速发展,数据呈爆炸式增长,高效存储数据给大规模存储系统的设计、建设和运行带来了巨大的挑战。在大规模存储系统中,各种计算、传输和存储设备无论在性能上
随着计算机视觉技术快速发展,显著对象分割作为其中一项重要的基础研究在许多高层应用中扮演了关键角色。然而图像退化现象对于显著对象分割造成了巨大的困难,直接威胁到依靠显
种群规模的选择在进化算法的应用中十分重要。种群规模过大时虽然能够扩大搜索空间,提高找到全局最优解的概率,但是会减缓收敛速度,增加运行时间;种群规模过小又会导致搜索能力不
信息爆炸是当今信息社会的一大特点,信息检索已然成为了人们从信息社会中获取知识和信息的重要方式。传统的信息检索方式下,用户越来越难查找到所需的相关资源,如何有效的找
目前制衣行业广泛使用数字化缝纫设备,在制衣打版过程中使用打版软件手工绘制版式图案。这种打版方式自动化、智能化程度不高,图案绘制效率和精度较低。本文设计的自动提取和识
Web2.0的发展加剧了信息过载的问题,帮助用户从Web获得有用的信息是当前的研究热点。本文课题是研究如何将Web社会网络与协同过滤技术相结合,以更有效帮助用户从Web获取有用信
移动机器人路径规划是机器人研究领域最基本的环节之一,包括环境建模和路径搜索两个子问题。常见的栅格法由于其计算简单,易于实现和维护,已被广泛的应用于路径规划的环境建
随着固态硬盘(Solid State Disk)在高端数字领域的广泛应用,用户数据的存储安全成为一个重要课题。现有的数据保护技术有软件加密、Trusted Platform Module(TPM)芯片、加密