共查询到16条相似文献,搜索用时 656 毫秒
1.
针对静态测试中空指针引用缺陷假阳性问题,提出一种空指针引用缺陷分类假阳性识别方法。挖掘空指针引用缺陷知识,对空指针引用缺陷知识进行预处理,生成空指针引用缺陷数据集;通过基于粗糙集理论属性重要性的ID3算法分类空指针引用缺陷数据集,分类结果有假阳性空指针引用缺陷实例和真实空指针引用缺陷实例两种;根据分类结果对静态测试中的空指针引用缺陷进行假阳性识别,确认真实的空指针引用缺陷。该方法对十个基准程序和基于主流静态测试工具FindBugs的空指针引用缺陷检测方法相比,空指针引用缺陷假阳性降低率平均为25%,减少了24%的空指针引用缺陷确认。实验结果表明,该方法在静态测试方面能有效降低缺陷确认开销,提高空指针引用缺陷检测效率和稳定性。 相似文献
2.
提出了一种基于数据流分析的Java空指针引用异常缺陷的检测方法。该方法以三地址码为中间表示,根据空指针引用异常的缺陷模式特征,设计了用于前向分析的数据流值、格值计算规则和传递函数,然后在程序控制流图上完成数据流算法的迭代分析。最后,通过遍历分析后的控制流图上各节点的数据流值,判别格值为ERROR的变量,报出空指针引用异常缺陷。同时,通过对比实验验证了该方法的有效性。 相似文献
3.
程序依赖图往往只能根据语句中变量的定义使用关系来判定数据依赖而无法从语义上精准判断,从而容易引入虚假依赖关系,使得缺陷修复的过程中使用错误信息造成修复失败.因此,本文将利用抽象属性对与空对象或空指针有关的虚假依赖进行剪枝,提出基于抽象语义的程序依赖图减少与程序缺陷语义无关的依赖关系分析,以完成空指针引用修复.依据分析获取的依赖关系,在空指针引用的不同修复策略的指导下实现一种多策略的修复方案,在尽可能减小修复副作用的前提下完成空指针引用缺陷的修复.本文利用Defects4J中的空指针引用对实现的修复工具DTSFix进行实验评估,结果显示DTSFix的修复效果远远高于对比工具,证明了方法的有效性. 相似文献
4.
董玉坤 《计算机工程与应用》2016,52(19):31-36
为实现基于静态分析技术自动的检测C程序中的非法计算缺陷,提出了一种基于区域内存模型进行非法计算缺陷检测的方法。对C程序中的非法计算缺陷操作归纳总结出其受限集,以对相应运算进行约束;通过抽象的区域内存模型表示实际的内存存储,实现了基于抽象内存区域内存模型的数据流分析;基于数据流分析的结果,判定C程序中的受限操作是否违背受限集的约束,以实现非法计算缺陷的检测。5个实际工程的检测结果分析表明,该方法可有效地检测出C程序的各类非法计算缺陷。 相似文献
5.
空指针解引用是C语言中的一类常见的动态内存错误。Manevich R等提出了一种适用于检测空指针解引用错误的后向分析方法。本文将后向分析的思想和流敏感、上下文敏感的指针分析结合在一起,给出了一种需求驱动的空指针解引用检测静态分析算法。该算法首先由指针分析获得别名信息,然后针对所关心的数据做后向数据流分析,追踪数据传递的源头,以确定程序中的表达式是否产生解引用错误。我们在SUIF2平台上实现了这一算法。实验结果表明,算法具有较高的检测精度。 相似文献
6.
C程序中数组、malloc动态分配后的连续内存等顺序存储结构被大量使用,但大多数传统的数据流分析方法未能充分描述其结构及其上的操作,特别是在利用指针访问顺序存储结构时,传统的分析方法只关注了指针的指向关系,而未讨论指针可能发生偏移的数值信息,且未考虑发生偏移时可能存在越界的不安全问题,导致了对顺序存储结构分析不精确.针对以上不足,首先对顺序存储结构进行抽象建模,并对顺序存储结构与指针结合使用时的指向关系与偏移量进行有效表示,建立了用于顺序存储结构的抽象内存模型SeqMM;其次,归纳总结C程序中顺序存储结构涉及的指针相关迁移操作、谓词操作及遍历顺序存储结构的循环操作,提出了安全范围判别保证操作安全性;之后,针对函数调用时形参指针引用顺序存储结构与实参的映射过程进行过程间推导规则设计;最后,基于上述分析,提出了一种内存泄漏缺陷检测算法对5个开源C工程的内存泄漏缺陷进行检测.实验结果表明:所提出的SeqMM能够有效地刻画C程序中的顺序存储结构及其涉及的各种操作,其数据流分析结果能够用于内存泄漏的检测工作,同时在效率和精度之间取得合理的权衡. 相似文献
7.
C语言作为安全关键软件的主要实现语言,其存在的内存泄漏缺陷具有很高的隐蔽性和危害性,如何保证内存泄漏检测的准确性和高效性是一大挑战。静态分析具有直接分析源码、能够较早发现软件错误,从而降低修复代价的优势。基于静态分析技术,提出了一种基于路径敏感的值流分析的内存泄漏检测方法,首先进行指针分析生成精确指向信息;然后基于指向信息构建值流约束,执行可达性分析以识别程序中的泄漏路径;最后借助指针与内存地址的有效生命周期进行验证。在典型基准C程序上的实验结果分析表明,本文方法与现有技术相比在效率和精度上都具有一定优势。 相似文献
8.
C语言执行效率高,使用范围广泛,然而存在的安全问题也日益突出。内存错误是C程序中常见的缺陷,严重时将导致系统崩溃。传统的人工修复内存错误耗费大量人力物力,并可能在修复过程中引入新的错误。针对这个问题,提出了一种基于跟踪机制的程序自动修复方法。构建包含程序文件中变量作用分布的作用域树;提出基于全局指针的跟踪机制,通过插入全局指针跟踪发生错误的分配内存在程序中的状态;基于全局指针自动生成补丁,利用作用域树定位缺陷修复位置从而来安全地修复内存错误。基于上述过程,实现了原型工具DTSFix,并在开源程序中对其进行了评估。实验结果表明,DTSFix能够有效检测并修复程序中的真实缺陷而且不产生副作用。 相似文献
9.
基于传播引擎的指针引用错误检测 总被引:1,自引:0,他引:1
指针在C程序中应用广泛,指针引用错误多发且危害严重.目前代表性的检测工具由于使用方便性和检测精度不足以及难以处理大规模程序等原因,并不能满足实用需求.文中提出一种新型的错误检测方法,该方法基于域敏感、流敏感和上下文敏感的传播引擎,通过定义错误属性格、在源程序中对错误属性格值进行计算和传播来完成错误检测.在开放源码编译器Open64中实现了其原型系统Propagator.以空指针引用错误检测为实例研究内容,使用Apache、OpenSSH、gzip等应用领域广泛的典型应用为实验用例.与Saturn、Splint和Clang-SA进行对比,Propagator的平均检测时间仅为12s,误报率平均仅为13%,远低于对比工具,且没有发现漏报已知错误.上述结果表明,Propagator既提高了检测精度又保证了可扩展性,具有很好的实用前景. 相似文献
10.
11.
空指针引用故障模型与测试方法研究 总被引:2,自引:1,他引:2
空指针态引用故障在使用指针的程序中是普遍存在的,采用动态测试方法进行测试难以准确定位故障源。而现有的静态分析方法主要存在漏报和误报过多的情况。针对这些问题,提出了一种基于指针映射关系分析的测试方法,给出了面向故障的指针映射集的构造规则,以此为基础建立了故障模型。通过指针映射集和故障模型,可以自动检测空指针引用内存故障,提高了测试效率。在分析过程中,还综合应用了控制流图和路径条件,提高了测试结果的精度。 相似文献
12.
陈杰 《计算机工程与应用》2012,48(33):1-4,33
针对程序静态分析技术误报过多的问题,提出一种基于最弱前置条件的静态分析误报消除方法。根据不同的软件安全性质,从目标状态出发,以需求驱动的方式得到过程起始位置的最弱前置条件,判断该条件公式的可满足性来消除误报。将该方法实例化来消除静态分析工具检测数组访问越界和空指针解引用的误报,实验结果表明该方法是有效且实用的。 相似文献
13.
14.
15.