[发明专利]新版本程序缺陷检测方法及装置有效
申请号: | 201810391348.6 | 申请日: | 2018-04-27 |
公开(公告)号: | CN108804308B | 公开(公告)日: | 2021-10-01 |
发明(设计)人: | 崔展齐;郑丽伟;刘秀磊;牛科 | 申请(专利权)人: | 北京信息科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/71;G06F8/75 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹;李相雨 |
地址: | 100192 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 新版本 程序 缺陷 检测 方法 装置 | ||
本发明实施例提供的一种新版本程序缺陷检测方法及装置,所述方法包括:获取目标应用的历史版本程序和新版本程序;根据所述历史版本程序和所述新版本程序获得对应的函数调用语句集;根据所述函数调用语句集获得所述历史版本程序和所述新版本程序分别对应的关联规则集;根据所述关联规则集获得用于所述新版本程序的检测用关联规则集;根据所述检测用关联规则集和所述新版本程序的函数调用语句集获得疑似缺陷集,能有效过滤隐式编程规则,从而减少待确认缺陷,提高缺陷自动检测效率。
技术领域
本发明涉及软件工程技术领域,尤其涉及一种新版本程序缺陷检测方法及装置。
背景技术
程序中通常会隐含大量缺少规范文档描述的编程规则,但由于此类规则数量众多,且受到开发时间和进度的限制,软件工程师很少使用规范细致的文档来描述此类规则。此外,部分编程规则隐藏较深,软件工程师甚至并未意识到其存在,采用传统的代码评审等方法不能发现违反此类规则的缺陷。此外,死锁等产生原因较为复杂的缺陷也难以通过代码评审发现。
如果程序员在编程过程中忽视或违反了这类规则,则可能会引发软件缺陷。软件缺陷挖掘是自动识别程序隐含规则的有效手段,其通过对软件代码、文档等相关数据进行建模,以识别隐含的缺陷模式或编程规则,并据此来自动发现软件缺陷。软件缺陷挖掘能在很大程度上实现自动化,人力成本开销较小,近年来在大规模软件上取得了一系列成果,越来越受到工业界的重视。其中,函数调用模式最为常见的一类程序隐含规则,此前的提出的相关技术已经能有效地发现程序中由于违反函数调用模式而导致的缺陷。
然而,现有技术方案还存在一定的问题和缺点:使用数据挖掘技术识别出的隐式编程规则通常数量较多,导致所检测出违反隐式编程规则的疑似缺陷数量也非常巨大。例如:PR-Miner从Linux中挖掘出32283条隐式编程规则,即使通过过程间分析技术对疑似缺陷进行了核查和约减,仍报告了1447个疑似缺陷。对疑似缺陷进行验证通常需要工程师阅读相关代码片段并依据自身经验和专业能力进行判断,极有可能引入误判,且不易自动化,人工确认疑似缺陷过程枯燥且需要耗费大量时间和精力。
发明内容
本发明提供一种新版本程序缺陷检测方法及装置,用于解决现有技术中程序疑似缺陷检测效率较低的问题。
第一方面,本发明实施例提供一种新版本程序缺陷检测方法,包括:
获取目标应用的历史版本程序和新版本程序;
根据所述历史版本程序和所述新版本程序获得对应的函数调用语句集;
根据所述函数调用语句集获得所述历史版本程序和所述新版本程序分别对应的关联规则集;
根据所述关联规则集获得用于所述新版本程序的检测用关联规则集;
根据所述检测用关联规则集和所述新版本程序的函数调用语句集获得疑似缺陷集。
可选地,所述根据所述历史版本程序和所述新版本程序获得对应的函数调用语句集,包括:
获取待检测版本程序;
对所述待检测版本程序进行反编译处理,获得所述待检测版本程序对应的函数集;
确定所述函数集中的目标函数,生成对应的抽象语法树;
遍历所述抽象语法树的所有结点,判断结点是否为调用语句,获得判断结果;
根据判断结果筛选出所述目标函数中的函数调用语句,生成所述目标函数的函数调用语句子集;
根据所述函数集中的所有函数对应的函数调用语句子集生成函数调用语句集;
其中,所述待检测版本程序为历史版本程序和新版本程序。
可选地,所述根据所述关联规则集获得用于所述新版本程序的检测用关联规则集,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京信息科技大学,未经北京信息科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810391348.6/2.html,转载请声明来源钻瓜专利网。