论文部分内容阅读
在软件技术和规模不断发展的今天,软件开发过程中出现的问题越来越多,代码缺陷检测工具由于其缺陷检测效率高并且自动化程度高被人们所青睐。但随着代码规模越来越大、代码文件变得越来越复杂,代码缺陷检测工具也面临着更多的挑战,如硬件资源达不到需求、检测时间过长等情况。此时传统单机代码缺陷检测系统并不能很好地解决这些问题,需要采用分布式的方法进行调度。如果能在分布式调度之前知道被测模块大致的时间开销与空间开销,便能更好地进行调度,从而提高缺陷检测效率和硬件资源利用率。本文在对代码缺陷检测过程进行分析的基础上,提出了一种代码缺陷检测中被测模块开销预测方法,并且实现了被测模块开销预测系统。本文根据缺陷检测流程的特点提取出了时间开销特征和空间开销特征,通过被测模块开销预测系统获取到被测模块的抽象语法树序列、时间开销特征和空间开销特征,通过深度记忆网络从抽象语法树序列中提取出语义特征,将时间开销特征与语义特征进行融合得到融合特征,然后使用回归算法对融合特征进行时间开销的预测,使用回归算法对空间开销特征进行空间开销的预测。本文在10个开源C工程上进行了实验评估,试验结果表明,使用被测模块开销预测系统预测时间开销时,其平均绝对误差(Mean Absolute Error,MAE)相较于传统回归模型降低了 0.0136,其均方误差(Mean Square Error,MSE)相较于传统回归模型降低了 0.0085;使用被测模块开销预测系统预测空间开销时,其误差比例小于20%的数据比例为85.1%。总体而言,本文所提出代码缺陷检测中被测模块开销预测方法在开销预测方面有着相对较好的表现。