国家自然科学基金(61173021)
- 作品数:14 被引量:20H指数:3
- 相关作者:苏小红马培军王甜甜龚丹丹齐鹏更多>>
- 相关机构:哈尔滨工业大学更多>>
- 发文基金:国家自然科学基金中央高校基本科研业务费专项资金国家教育部博士点基金更多>>
- 相关领域:自动化与计算机技术更多>>
- C语言词法语法分析工具CParser的设计与实现被引量:4
- 2014年
- 程序分析技术包括控制流分析、数据流分析、别名分析、程序切片和程序插桩等技术,在程序理解,代码重构、代码优化和软件自动化调试等方面有着重要的应用,而词法分析和语法分析技术是程序分析技术的基础。本文设计与实现了一个轻量级的C语言词法语法分析工具CParser,通过词法分析、预处理和语法分析三个步骤,实现了根据源代码建立相应的抽象语法树的功能。工具使用简单方便,而且能够完整支持C99标准,可用于克隆代码检测、软件错误定位等后续研究工作。
- 杨劭君苏小红王甜甜马培军
- 关键词:词法分析语法分析抽象语法树
- 基于支持向量机的克隆代码有害性评价方法
- 2016年
- 克隆代码是软件中彼此相似的代码片段。传统观点认为克隆代码是有害的,会降低软件质量,但最近研究发现克隆代码不一定是有害的。如何评估克隆代码的有害性是一个值得研究的问题。本文提出了一种基于支持向量机的克隆代码有害性评价方法,可以以较高的准确性和查准率评价其有害性。为验证方法有效性,本文在6个系统上进行实验,结果表明本文方法可以有效地评价克隆代码的有害性,并且所提出的静态度量和演化度量对评价克隆代码有效性具有积极意义。
- 张凡龙苏小红李智超马培军
- 关键词:克隆代码支持向量机克隆演化
- 基于未来锁集的死锁规避被引量:2
- 2017年
- 针对现有动态死锁规避方法存在能力有限、被动盲目、开销较大和影响目标程序正确性等问题,提出一种基于未来锁集的动静结合死锁规避方案Flider.基本思想是,对于一个加锁操作,若其未来锁集中的所有锁都是空闲的,则执行该加锁操作不会导致死锁.一个加锁操作的未来锁集包括当前要加锁的锁和从该加锁操作到与之相对应的解锁操作过程中遇到的所有加锁操作所要加的锁.通过静态分析,计算锁效应信息并插桩到相应的加锁操作和函数调用操作前后.通过动态分析,劫持加锁操作,根据其锁效应信息为之计算未来锁集,只有当未来锁集中的所有锁都未被锁定才执行该加锁操作,否则等待.测评实验和对比实验表明Flider能智能主动地规避多种类型死锁,开销较小,扩展性好,不影响程序正确性.
- 禹振苏小红齐鹏马培军
- 关键词:死锁死锁检测
- 面向错误定位的基于分支聚类的测试用例选择方法被引量:1
- 2012年
- 已有的面向错误定位的测试用例选择方法大多数仅考虑了测试用例的语句覆盖信息,不能为错误定位选择合适的测试用例,从而导致不能有效提高错误定位的准确性。针对这一问题,提出了一种新的测试用例选择方法。文中方法分析了测试用例的执行路径信息,根据测试用例动态执行时的分支特征,采用分支聚类方法对测试用例进行选择。实验表明,提出的方法可以有效减少测试用例数量,降低错误定位的复杂度,并提高错误定位的准确性。
- 李佳婧苏小红马培军龚丹丹
- 关键词:测试用例选择聚类
- 一种使用静态分析的汇编代码缺陷检测方法被引量:1
- 2013年
- 针对当前缺乏汇编代码自动化审查工具的情况,对汇编代码人工审查方法进行研究,提出了一种基于静态分析的汇编代码缺陷检测方法.该方法中,在控制流线性化后,运用特征识别处理间接寻址跳转,采用结点克隆处理延迟条件分支,使用调用序列处理存在递归函数的过程间控制流图的构造.在此基础上,实现了ADSP SHARC汇编代码检测工具,并进行了静态分析测试和缺陷检测测试.测试结果表明,该方法可以有效地检测汇编代码中的不可退出点、循环、寄存器、以及内存访问缺陷.
- 邱景苏小红马培军
- 关键词:汇编代码
- 二进制代码内联库函数识别
- 2015年
- 内联库函数识别是二进制代码分析的难点问题之一。主要的挑战来自在编译优化的作用下,内联库函数在目标函数中存在多态性和不连续性。本文构建函数的执行流图,将内联库函数识别问题转化为执行流图子图同构测试问题。实验中,对四个常被编译器内联的字符串操作函数,使用MSVC10和ICC14这两个编译器在5个开源软件中进行内联库函数识别测试。实验结果表明,本文方法可以有效识别二进制代码中的内联库函数。
- 邱景苏小红马培军
- 关键词:子图同构
- 冗余代码缺陷检测方法被引量:5
- 2012年
- 为解决冗余代码缺陷检测复杂度较高且检测精度较低的问题,设计并实现了基于控制结构的冗余代码检测模型.通过对TOKEN序列建立复合语句结构信息表,精简了程序的控制依赖关系,并在此基础上对幂等操作、死代码以及冗余赋值3种冗余代码进行检测,有效降低了缺陷检测复杂度.通过分析Linux开源代码表明,本模型可以快速的检测大规模程序,并且具有较低的误报率和漏报率.因此本模型可以帮助程序员发现进而修正软件缺陷,维护软件可靠性.
- 龚丹丹王甜甜苏小红马培军
- 基于变异的软件错误定位方法研究综述被引量:3
- 2017年
- 软件调试横跨整个软件开发周期,而错误定位是软件调试中最困难、最耗时的任务之一。针对软件自动化调试的需求和应用背景,本文介绍了变异分析以及错误定位相关的国内外研究现状,选择了具有较高的错误定位精度的基于变异分析的软件错误定位方法进行研究,并对已有的基于变异分析的软件错误定位方法做出了分析和比较。最后,对未来的研究方向进行了展望。
- 迟洋苏小红王甜甜
- 面向死锁规避的路径敏感插桩
- 2015年
- 程序插桩技术是一种基本的测试手段,在软件测试中被广泛的应用。插装方式是指在程序源码中插入一些语句,通过这些语句可以获得所需要的信息,在死锁规避的静态分析中需要通过程序插桩的方式记录下一些信息。程序插桩按照源程序的结构分为顺序结构的插桩,分支结构的插桩和循环结构的插桩。在对源程序进行词法语法分析的基础上建立抽象语法树和控制流图,根据控制流图获取程序可能执行的所有路径信息,接着根据路径信息决定插桩的内容。
- 齐鹏禹振苏小红马培军
- 关键词:词法分析语法分析抽象语法树程序插桩
- 基于迭代预测降低巧合正确性测试用例影响的软件错误定位方法
- 2016年
- 巧合正确性测试用例是指某个测试用例虽然在执行程序时覆盖了错误的代码行,但是其测试结果依然是正确的。在测试用例集中,巧合正确性测试用例是普遍存在的。巧合正确性测试用例对基于程序谱的软件错误定位方法的错误定位精度产生很大的影响。为了避免这一影响,本文提出一种基于迭代预测降低巧合正确性测试用例影响的方法。该方法的基本思想是通过迭代的方法,预测巧合正确性测试用例的数目N,再对候选测试用例的巧合正确性可疑值进行排序,去掉可疑值较高的前N个巧合正确性测试用例,利用新的测试集进行错误定位,直到找到错误语句,或者候选的巧合正确性测试用例的个数小于迭代预测值N为止。使用Siemens Suite测试用例集对系统进行了测试,测试结果表明该方法能够有效提高基于程序谱的软件错误定位方法的错误定位精度。
- 赵群苏小红王甜甜马培军
- 关键词:测试用例迭代