摘要
本发明公开了一种基于LLVM中间表示程序切片的度量模型,包括:将源程序通过LLVM命令行转换成对应的LLVM IR语言;构建程序系统依赖图,对程序LLVM IR语句切片;根据程序切片的结果和源程序转换得到的LLVM IR语句得到程序中各模块的模块大小,输出变量的个数,根据各度量模块所有输出变量的切片集中最大的切片集大小和最小的切片集的大小,和所有变量的公共切片集;将上步所得值带入度量函数中,完成对函数的LLVM IR度量,然后计算程序的Halstead度量;将程序所有度量结果先去除具有相同作用的度量值,再构建复杂性度量函数Complexity,并对程序的各个模块的Complexity进行计算并根据其大小进行排序,软件开发或测试可根据各模块的复杂度大小合理分配开发资源,并进行错误检测。本发明有效提高了程序切片的通用性和度量精度。