首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于堆栈信息的编译器挂起类缺陷去重方法 

申请/专利权人:南京大学

申请日:2024-03-07

公开(公告)日:2024-06-11

公开(公告)号:CN118170651A

主分类号:G06F11/36

分类号:G06F11/36;G06F8/41;G06F18/22;G06F18/2415

优先权:

专利状态码:在审-实质审查的生效

法律状态:2024.06.28#实质审查的生效;2024.06.11#公开

摘要:本发明提出了一种基于堆栈信息的编译器挂起缺陷去重方法。该方法利用编译器挂起时生成的堆栈信息,结合运行上下文信息,对触发相同缺陷的挂起类问题进行识别和去重。具体而言,该方法首先收集编译器挂起时的堆栈信息和运行上下文。然后,通过对堆栈信息和上下文进行分析和比对,将具有相同或相似堆栈信息的挂起问题识别为相同缺陷。与现有方法相比,本发明的优点在于利用了堆栈信息和上下文信息来识别重复的挂起类缺陷,提高了挂起缺陷的识别和去重的准确性,有效节省宝贵的开发者审查工作量,进而帮助提升编译器的可靠性和质量。

主权项:1.基于堆栈信息的编译器挂起类缺陷去重方法,其特征在于利用编译器挂起时生成的堆栈信息,结合编译器运行的上下文信息,对缺陷进行独特的标识和分类。这样,开发人员可以更容易地对缺陷进行管理和跟踪,避免浪费宝贵的审查资源。本方法主要包括下列步骤:1编译以及挂起缺陷捕获:对于指定测试用例,设置最长编译时间为tmax经验值,一般设置为1分钟,编译测试用例,若测试用例的编译时间超过tmax,即为该测试用例触发了一次挂起缺陷。2堆栈信息以及上下文信息提取:在编译器中添加适当的机制来捕获从开始编译到挂起缺陷发生时的堆栈信息,包括函数调用关系、变量状态等。从捕获的堆栈信息中提取关键信息,例如函数调用序列、变量访问路径等。同时考虑其它影响编译器状态的信息,例如操作系统、编译器版本、编译参数等,连同堆栈信息中的关键信息一起记为堆栈信息集合。3相似性度量:对提取到的堆栈信息和数据库中已有的堆栈信息词条进行逐一分析和比对,以识别具有相同或相似堆栈信息的缺陷。这可以通过比较函数调用栈轨迹的相似性来实现。相似的堆栈信息可能表示相同的缺陷或者同一类缺陷。具体来说,在堆栈信息比对中,可以将函数调用栈视为一个集合,并使用Jaccard相似系数计算两个堆栈之间的相似度δ。Jaccard相似系数定义为:两个集合交集的大小两个集合并集的大小+1,也可以用其它的相似度计算公式来计算δ。4分类缺陷:一旦识别出相同或相似的挂起缺陷,该方法会对它们进行标识和分类。这可以通过为每个缺陷分配一个唯一的标识符来实现,以便开发人员可以更轻松地管理和跟踪缺陷。具体来说,根据不同的编译器,设置相似度阈值为δt,如果步骤2中发现在数据库中存在某一词条使得计算出的δ大于等于δt,则认为当前测试用例触发的挂起缺陷与历史触发缺陷的测试用例重复,需要舍弃当前测试用例。若数据库中没有一个词条使得计算出的δ大于等于δt,则认为当前测试用例触发了一个新的挂起缺陷,需要将将当前测试用例的上下文信息和堆栈信息存入数据库中。

全文数据:

权利要求:

百度查询: 南京大学 一种基于堆栈信息的编译器挂起类缺陷去重方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。