[发明专利]一种代码自动生成质量评估方法有效
申请号: | 202011557515.3 | 申请日: | 2020-12-25 |
公开(公告)号: | CN112698831B | 公开(公告)日: | 2022-08-09 |
发明(设计)人: | 姜瑛;张晓江;汤守国;李凌宇;丁家满;汪海涛 | 申请(专利权)人: | 昆明理工大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06N3/02;G06N3/08 |
代理公司: | 昆明人从众知识产权代理有限公司 53204 | 代理人: | 陈波 |
地址: | 650093 云*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 自动 生成 质量 评估 方法 | ||
1.一种代码自动生成质量评估方法,其特征在于:所述方法步骤如下:
Step1、基于代码自动生成数据和程序员行为数据抽取特征项并进行标注,作为数据集D;
Step2、使用数据集D中代码上下文进行预训练,生成代码符号向量;
Step3、根据代码上下文建立多维语法树;
Step4、通过特征检测器在多维语法树中进行特征提取,将提取到的特征通过全连接神经网络映射到代码自动生成质量属性;
Step5、使用全连接神经网络输出的代码质量属性对代码自动生成质量进行评估;
所述Step3具体如下:
Step3.1、输入数据集D,执行Step3.2;
Step3.2、将数据集D中所有文件路径存入file中并去重,初始化文件路径个数f=0,样本samples=[],执行Step3.3;
Step3.3、判断f是否小于file中文件路径个数,是则执行Step3.4,否则执行Step4;其中,一条代码自动生成数据和程序员行为数据对应一个文件路径;
Step3.4、将第f个文件路径file[f]中代码上下文解析为语法树root,将数据集D中文件路径为file[f]与代码质量属性相关的特征项存入records,代码自动生成质量标注存入label,执行Step3.5;
Step3.5、初始化节点队列queue=[root];根节点字段root_josn={'node':root节点类型,'code':root节点表示的代码,'children':[],'record':None};节点队列字段queue_json=[root_json];f+=1,执行Step3.6;
Step3.6、判断queue是否不为空,是则执行Step3.7,否则执行Step3.3;
Step3.7、当前节点current_node=queue队首元素,并将queue队首元素出队;当前节点字段current_node_json=queue_json=[root_json],执行Step3.8;
Step3.8、孩子节点children=current_node子节点列表,将children存入queue,c=0,执行Step3.9;
Step3.9、判断c是否小于children节点个数,是则执行Step3.10,否则执行Step3.3;
Step3.10、初始化记录re=None,num=0,rc=0,执行Step3.11;
Step3.11、判断rc是否小于records个数,是则执行Step3.12,否则执行Step3.15;其中,一条代码自动生成数据和程序员行为数据对应的records个数取值为1;
Step3.12、判断children[c]代码是否等于数据集D中生成代码内容,是则执行Step3.13,否则执行Step3.14;
Step3.13、re=数据集D中生成代码内容为children[c]的与代码质量属性相关的特征项,子树datum={'tree':root_json,'label':label[num]},num+=1,将datum添加到samples中,执行Step3.15;
Step3.14、rc=rc+1,执行Step3.11;
Step3.15、孩子节点字段child_json={'node':children[c]节点类型,'code':children[c]中生成代码内容,'children':[],'record':re},执行Step3.16;
Step3.16、将child_json添加到current_node_json['children']中,rc+=1,c+=1,执行Step3.9。
2.根据权利要求1所述的代码自动生成质量评估方法,其特征在于:所述Step1具体如下:
Step1.1、定义代码自动生成质量属性集合A,初始化代码自动生成数据和程序员行为数据,执行Step1.2;
Step1.2、基于代码自动生成数据和程序员行为数据抽取与代码质量属性相关的特征项、抽取通用特征项并进行标注,作为数据集D,执行Step2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于昆明理工大学,未经昆明理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011557515.3/1.html,转载请声明来源钻瓜专利网。