23、基于抽象语法树和嵌入技术的类级别重构自动识别

基于抽象语法树和嵌入技术的类级别重构自动识别

1. 引言

软件质量是每个程序的多面特性,取决于设计、复杂性等众多因素。随着时间推移,代码库的修改和添加可能会侵蚀其设计完整性。重构是在不改变软件行为的前提下,增强其内部设计的过程,可通过重命名属性、重新定位类、划分包等多种操作实现。为了恢复持续开发带来的负面影响,避免每次设计偏离原始状态时都从头开始,重构代码是必要的。

此前,许多研究人员将源代码指标纳入机器学习框架进行重构预测,并构建基于指标的重构模型。也有作者基于提交消息构建了基于指标和文本的重构模型来识别重构类型。还有人提出使用词嵌入和机器学习对问答论坛帖子进行分类的方法,以及利用TF - IDF计算词嵌入的加权平均值来推导句子嵌入。

2. 相关工作

重构越来越多地用于在不改变代码外部行为的情况下改善其内部结构。以往许多研究人员将源代码指标作为特征进行重构预测,但这些模型完全基于假设,且不同公司用于检索源代码指标的工具可能不同。因此,开发一个自动化的通用模型以在工业应用中给出可接受的结果至关重要。

重构预测是一个分类问题,可通过各种数据挖掘方法从抽象语法树(AST)代码的文本描述中提取特征来解决。本研究不计算源代码指标,而是为每个项目的代码生成AST,使用checkstyle 9.0.1工具从生成的AST中收集文本。还可以使用PSIMIner等工具生成AST。接着,应用分词将文本转换为单词级别,使用NLTK库中的Word tokenizer工具将文本拆分为单词,并清理文本,去除标点符号、特殊符号、数字和多余空格。最后,将文本转换为向量表示,即词嵌入,用于自然语言处理(NLP)。词嵌入已用于缺陷预测,但基于词嵌入的重构模型尚未得到充分探

源码来自:https://pan.quark.cn/s/fdd21a41d74f 正方教务管理系统成绩推送 简介 使用本项目前: 早晨睡醒看一遍教务系统、上厕所看一遍教务系统、刷牙看一遍教务系统、洗脸看一遍教务系统、吃早餐看一遍教务系统、吃午饭看一遍教务系统、睡午觉前看一遍教务系统、午觉醒来看一遍教务系统、出门前看一遍教务系统、吃晚饭看一遍教务系统、洗澡看一遍教务系统、睡觉之前看一遍教务系统 使用本项目后: 成绩更新后自动发通知到微信 以节省您宝贵的时间 测试环境 正方教务管理系统 版本 V8.0、V9.0 如果你的教务系统页面与下图所示的页面完全一致或几乎一致,则代表你可以使用本项目。 目前支持的功能 主要功能 每隔 30 分钟自动检测一次成绩是否有更新,若有更新,将通过微信推送及时通知用户。 相较于教务系统增加了哪些功能? 显示成绩提交时间,即成绩何时被录入教务系统。 显示成绩提交人姓名,即成绩由谁录入进教务系统。 成绩信息按时间降序排序,确保最新的成绩始终在最上方,提升用户查阅效率。 计算 计算百分制 对于没有分数仅有级别的成绩,例如”及格、良好、优秀“,可以强制显示数字分数。 显示未公布成绩的课程,即已选课但尚未出成绩的课程。 使用方法 Fork 本仓库 → 开启 工作流读写权限 → → → → → 添加 Secrets → → → → → → Name = Name,Secret = 例子 程序会自动填充 尾部的 ,因此你无需重复添加 对于部分教务系统,可能需要在 中添加 路径,如: 开启 Actions → → → 运行 程序 → → 若你的程序正常运行且未报错,那么在此之后,程序将会每隔 30 分钟自动检测一次成绩是否有更新 若你看不懂上述使用...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值