[发明专利]一种基于LLVM中间表示程序切片的度量模型有效
申请号: | 201710089449.3 | 申请日: | 2017-02-20 |
公开(公告)号: | CN106933572B | 公开(公告)日: | 2020-05-19 |
发明(设计)人: | 张迎周;闫丽;徐晨晨;吴寄语 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F8/35 | 分类号: | G06F8/35;G06F8/40 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 许方 |
地址: | 210003 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 llvm 中间 表示 程序 切片 度量 模型 | ||
本发明公开了一种基于LLVM中间表示程序切片的度量模型,包括:将源程序通过LLVM命令行转换成对应的LLVM IR语言;构建程序系统依赖图,对程序LLVM IR语句切片;根据程序切片的结果和源程序转换得到的LLVM IR语句得到程序中各模块的模块大小,输出变量的个数,根据各度量模块所有输出变量的切片集中最大的切片集大小和最小的切片集的大小,和所有变量的公共切片集;将上步所得值带入度量函数中,完成对函数的LLVM IR度量,然后计算程序的Halstead度量;将程序所有度量结果先去除具有相同作用的度量值,再构建复杂性度量函数Complexity,并对程序的各个模块的Complexity进行计算并根据其大小进行排序,软件开发或测试可根据各模块的复杂度大小合理分配开发资源,并进行错误检测。本发明有效提高了程序切片的通用性和度量精度。
技术领域
本发明涉及程序切片和软件度量的相关方法,提供了一种基于LLVM中间表示程序切片的度量模型的构建方法,属于计算机程序技术领域。
背景技术
随着计算机产业的迅速发展,大量软件产品被运用到社会生活中。在软件系统的数量和规模不断壮大的同时,软件开发、测试中出现的问题和软件维护的成本也不断地增加。许多传统的软件分析手段已经无法满足现有的软件分析的需求,需要查找新的技术和方法来帮助解决这一问题。由此,程序分析成为了软件领域中非常重要的组成部分。
自M.weiser于1979年在其博士论文中提出程序切片以后,程序切片的理论和应用开发都取得了很大的发展,使之在软件测试、维护、程序理解、优化等方面均占有非常重要的地位。程序切片是一种分析和理解程序的技术,是通过对源程序中每个兴趣点分别进行切片来达到对程序的分析和理解。简单来说,程序切片技术就是通过简化程序来方便人们对程序进行研究。
软件度量是保证软件质量的重要指标。在Halstead、Maccabe、CyclomaticComplexity、Design Complexity等度量指标不断地运用到软件分析后。基于程序切片的度量指标也被运用到软件的模块化分析中去了。基于切片的度量其实就是利用程序切片技术对模块中的输出变量进行切片,并对切片结果进行处理,从而通过计算得到一系列量化指标,通过指标量化模块中元素的函数相关性的强度,从而对所开发的程序进行分析。现在基于切片的度量方法在衡量软件再造工程的进展情况或者通过对软件错误模块的分析,来预测新的可能出现的软件漏洞方面都起着巨大的作用。
虽然基于程序切片的度量已经被运用的程序分析中去,但是由于程序切片的分析的基本单位是语句,系统依赖图的构建也是基于程序行号的,得到的切片结果的切片集是语句行号集。而片的对象一般都是C、C++、Python等某种特定语言编写的程序,通用性不强。
LLVM IR(Low Level Virtual Machine Intermediate Representation,底层虚拟机中间表示)是一种介于c语言和汇编语言的格式,既有高级语言的可读性,又能比较全面地反映计算机底层数据的运算和传输的情况,精炼而又高效。任何一种编程语言都可以转化成LLVMIR,LLVM IR也可以转化为任何一种编程语言。由LLVM IR构建的系统依赖图和进行程序切片的结果集的基本单位都是指令,这样可以加大程序切片的通用性和分析程序的精度。
本发明使用LLVM IR进行程序切片,并将切片结果及指令集进行度量计算,大大提高了程序切片的通用性和度量的精度。
发明内容
本发明的目的在于克服现有技术的不足之处,提供一种基于LLVM中间表示程序切片的度量模型的构建方法,可以使程序切片的通用性和度量的精度有效提高。
为解决上述现有技术的问题,本发明采用以下技术方案。
本发明的一种基于LLVM中间表示程序切片的度量模型的构建方法,其特征在于,包括以下步骤:
步骤(1)将源程序通过LLVM的命令行转换成对应的LLVM IR语言;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710089449.3/2.html,转载请声明来源钻瓜专利网。