基于抽象语法树和嵌入技术的类级别重构自动识别
1. 引言
软件质量是每个程序的多面特性,取决于设计、复杂性等众多因素。随着时间推移,代码库的修改和添加可能会侵蚀其设计完整性。重构是在不改变软件行为的前提下,增强其内部设计的过程,可通过重命名属性、重新定位类、划分包等多种操作实现。为了恢复持续开发带来的负面影响,避免每次设计偏离原始状态时都从头开始,重构代码是必要的。
此前,许多研究人员将源代码指标纳入机器学习框架进行重构预测,并构建基于指标的重构模型。也有作者基于提交消息构建了基于指标和文本的重构模型来识别重构类型。还有人提出使用词嵌入和机器学习对问答论坛帖子进行分类的方法,以及利用TF - IDF计算词嵌入的加权平均值来推导句子嵌入。
2. 相关工作
重构越来越多地用于在不改变代码外部行为的情况下改善其内部结构。以往许多研究人员将源代码指标作为特征进行重构预测,但这些模型完全基于假设,且不同公司用于检索源代码指标的工具可能不同。因此,开发一个自动化的通用模型以在工业应用中给出可接受的结果至关重要。
重构预测是一个分类问题,可通过各种数据挖掘方法从抽象语法树(AST)代码的文本描述中提取特征来解决。本研究不计算源代码指标,而是为每个项目的代码生成AST,使用checkstyle 9.0.1工具从生成的AST中收集文本。还可以使用PSIMIner等工具生成AST。接着,应用分词将文本转换为单词级别,使用NLTK库中的Word tokenizer工具将文本拆分为单词,并清理文本,去除标点符号、特殊符号、数字和多余空格。最后,将文本转换为向量表示,即词嵌入,用于自然语言处理(NLP)。词嵌入已用于缺陷预测,但基于词嵌入的重构模型尚未得到充分探
超级会员免费看
订阅专栏 解锁全文
887

被折叠的 条评论
为什么被折叠?



