【摘 要】
:
在大规模程序中存在许多隐式编程规则,它们表达了程序的内在特性和特定需求;如果程序员忘记或者未意识到这些规则,那么就很容易将缺陷引入程序。隐式编程规则形态多样,可能包
论文部分内容阅读
在大规模程序中存在许多隐式编程规则,它们表达了程序的内在特性和特定需求;如果程序员忘记或者未意识到这些规则,那么就很容易将缺陷引入程序。隐式编程规则形态多样,可能包含多种类型的程序元素,位置分散,各个成分可能跨函数、跨文件分布,人工审查的方法很难查找到这些规则。因此很有必要研究如何从程序中自动提取隐式规则并形成文档说明。然而,现有的研究成果只能提取简单的基于函数对的程序规则,而不能挖掘出包含函数、变量和数据类型等多种程序元素的隐式规则;而且为实现规则提取,它们还需要程序员提供规则模板,对人工参与的程度要求较高。为从程序中提取更多不同种类的规则,同时减少人工参与的程度,本文提出一种通用且高效的程序隐式规则自动提取与反例检测方法。该方法使用频繁闭合项集挖掘技术从大型软件源码中挖掘包含多种程序元素的编程模式,然后由编程模式产生编程规则;引入正序规则(PSDRule)概念,以避免从同一个编程模式中产生多个冗余规则。在此基础上,还提出一种高效的反例检测算法以检测违反规则的程序片段,它们很有可能包含程序缺陷。整个规则提取和反例检测过程是自动化的,不需要程序员提供任何预设信息,也不需要对目标程序有任何先验知识。在多个大型开源项目源码上的实验结果表明,本文提出的规则提取和反例检测模型能够自动提取程序中存在的隐式编程规则,并且基于提取的规则快速有效地检测程序中违反这些规则的代码片段。通过对实验结果经人工分析和确认,发现本文方法提取出多条有意义的规则,并检测到了一些真实的缺陷。
其他文献
社交是人类生活的本质需求之一。SNS(Social Networking Services,即社会性网络服务)平台是以分布式计算理论为基础,通过P2P(Peer-to-Peer,对等)技术构建的下一代基于个人的
天然气是目前主要的民用能源,其输送的可靠性直接影响着广大人民的切身利益。压缩机组作为天然气输送系统动力环节,其运行的可靠程度以及操作人员技术水平直接影响着整个系统的
网络基础设施的建设和视频编码技术的发展,催生了一系列的视频应用,包括视频电话、网络视频点播、高清电视广播等等。为了使视频编码的码流更好地适应各种网络环境和用户终端
信息时代的来临,使网络来到我们每个人的身边。而病毒、蠕虫、木马等恶意代码,也随着网络经济的蓬勃而迅猛发展。网络安全和人身安全对网民而言一样重要。恶意代码检测系统使
随着服务系统在现代服务业中的广泛应用,服务质量问题引起了人们越来越多地关注,服务质量监控与评价方法成了服务学研究的一个重点内容。服务质量功能展开(SQFD)是覆盖服务系
网络环境下说话人识别是指在互联网音频信息中查找出目标说话人的一种技术,在安全、刑侦等领域具有重要的实际应用价值。本文以搭建工程化的网络环境下说话人识别系统为目的,
随着互联网的发展,使用搜索引擎进行信息查找已经成为人们日常生活的一部分。人们只需要输入查询关键词,搜索引擎就可以将互联网上最匹配的网页链接返回给用户。但是搜索引擎
脑卒中为中老年人常见病和多发病,该病发病率高、致残率高、病死率高、治愈率低。在我国,每年大约有200万新发脑卒中病人,因脑卒中死亡人数约达150万人。存活者75%以上留有不
随着信息技术的飞速发展,桌面计算机系统已经广泛的应用于家庭、公司、政府机关与军队中。桌面计算机系统保存了越来越多对个人和公司具有不可估量价值的数据。但是通用操作
top-k join查询返回用户最感兴趣的k个连接结果。近来top-k join已经成为一个重要的研究课题,其在Web数据库,信息抽取和数据挖掘中均有应用。星型模式的数据仓库在实际应用中