Page 30 - 《软件学报》2021年第11期
P. 30
3356 Journal of Software 软件学报 Vol.32, No.11, November 2021
Fig.3 An example of unifying source code
图 3 源代码的统一化处理实例
2.3 训练数据处理模块
在抽取训练数据集时,具体方法是:对一个功能完整的方法块,忽略第 1 行方法的声明,从第 n+1 行开始,以前
n 行为模型输入、第 n+1 行为模型的输出构建模型的一个实例,并依次向下直至方法块最后一行,构建训练数据
集.根据经验,并充分考虑实际开发中的情况,为了得到关系最紧密的代码上下文,n 的可能取值为 1~5.理论上来
说,n 取值越大越好.但是在实际开发过程中,除了功能特别复杂的方法块以外,普通方法块的代码行数通常不会
很大.因此,在保证准确率的情况下,n 的取值越小,在实际使用中实用性会提高.最合适的取值,在本文后面的实
例验证将讨论 n 的合适取值.在此之前,我们假定 n 的取值为 3.
2.4 编程现场数据处理模块
编程现场是指软件生产中与当前编码相关的要素集合,如编程现场行为数据、源代码数据、软件任务数据
和软件系统运维数据等.在本文中没有使用编程现场的所有可用数据,而是根据实际需求抽取了一部分真正需
要的数据.为了更好地获取编程现场大数据,我们开发编程现场数据处理模块,包括开发现场数据采集模块、现
场数据清洗模块和现场数据组织管理模块,对开发现场的数据进行实时采集、清洗、组织和管理.如图 4 所示.
Fig.4 A structure diagram of data processing module in onsite programming
图 4 编程现场的数据处理模块结构图
开发现场数据采集模块主要处理编程现场数据抽取问题.在本文中,开发人员已经输入的编程现场代码行
上下文通过采集模块自动获取,以便根据获取到的代码行上下文,利用训练好的模型预测最可能的当前代码行.