(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202211004722.5
(22)申请日 2022.08.22
(71)申请人 南京航空航天大 学
地址 211106 江苏省南京市江宁区将军大
道29号南京航空航天大 学
(72)发明人 张静宣 鞠悦 蓝金鹏 秘相博
(74)专利代理 机构 南京苏高专利商标事务所
(普通合伙) 32204
专利代理师 柏尚春
(51)Int.Cl.
G06F 8/30(2018.01)
G06F 8/41(2018.01)
G06F 40/30(2020.01)
G06K 9/62(2022.01)
G06N 3/04(2006.01)G06N 3/08(2006.01)
(54)发明名称
一种面向Java框架的跨语言名称绑定方法
(57)摘要
本发明公开了一种面向Java框架的跨语言
名称绑定方法, 选择合适项目, 收集数据构建跨
语言名称绑定数据集; 将代码信息的文本向量输
入到名称绑定识别模型并进行微调; 对于有重名
的Java标识符, 提取分类特征, 采用集成学习分
类模型进行区分, 实现名称绑定; 为需要重命名
的标识符匹配全部的同名标识符, 形成绑定对,
提取相关代码信息输入到名称绑定识别模型; 对
于重复多次出现的Java标识符, 提取编程上下文
信息输入到重名标识符名称绑定区分模型, 预测
跨语言名称绑定对是否成立; 执行该标识符的重
命名, 同时对与之绑定的其他同名标识符, 依次
传播重命名, 最终实现完整的跨语 言重命名执行
任务。 本发明使程序在重命名后仍可编译和运
行, 保证软件质量。
权利要求书2页 说明书7页 附图3页
CN 115407978 A
2022.11.29
CN 115407978 A
1.一种面向Java框架的跨语言名称绑定方法, 其特 征在于, 包括以下步骤:
(1)选取同时包含通用语言和特定领域语言的Java语言的框架的流行度较高的项目,
提取项目全部Java语言标识符, 为其在全项目范围内匹配同名标识符, 提取代码信息构建
跨语言名称绑定数据集;
(2)将名称绑定数据集中的代码信息的文本向量输入到名称绑定识别模型, 提取代码
语义信息, 识别名称绑定代码格式; 对于无重名的Java标识符, 构建正确的名称绑定对;
(3)对于有重名的Java标识符, 在确定非Java标识符具备名称绑定条件后, 区分其具体
与哪个类中的Java标识符匹配; 分析代码信息、 编程上下文信息和框架规则, 从中提取特
征, 使用集成学习训练重名标识符名称绑定区分模 型, 实现区分任务, 完成重名J ava标识符
的名称绑定;
(4)为需要重命名的标识符匹配全部的同名标识符, 形成绑定对, 提取代码信息输入到
步骤(2)名称绑定识别模型, 找到绑定成立的所以非Java标识符; 如果该标识符无重名, 则
名称绑定对构建完成; 对于有重名的标识符, 提取编程上下文信息输入到步骤(3)重名标识
符名称绑定区分模型, 区分正确的名称绑定对; 执行该标识符的重命名, 同时对与之绑定的
其他同名标识符, 依次传播重命名, 实现完整的跨语言重命名执 行任务。
2.根据权利要求1所述的一种面向Java框架的跨语言名称绑定方法, 其特征在于, 所述
步骤(1)包括以下步骤:
(11)提取项目全部Java类的成员, 统计出现次数, 分为只出现一次的和多次出现的; 通
过全局搜索, 为每 个java类的成员找到项目中同名的全部标识符;
(12)对项目中的全部名称绑定对, 通过框架规则和专业知识构建跨语言名称绑定正确
绑定集和错误绑定集; 正确绑定集为具备名称绑定关系的J ava标识符和同名非J ava标识符
匹配对以及它们的位置信息; 错误匹配集为不相关的J ava标识符和同名非Java标识符 匹配
对;
(13)收集每个绑定对中的两个标识符的所在代码信息并进行数据预处理, 加入绑定
集;
(14)为正确绑定集和错误绑定集分别添加分类标签1和0, 合并组成名称绑定数据集,
并划分成训练集和 测试集。
3.根据权利要求1所述的一种面向Java框架的跨语言名称绑定方法, 其特征在于, 所述
步骤(2)包括以下步骤:
(21)对步骤(1)构建的名称绑定集中每个绑定对的代码数据进行分词, 将词汇划分成
更细粒度的语义单位, 将所有的文本向量转化成数字向量, 并将格式处理成BERT需要的输
入; BERT的输入是由三种embedding组成的, 分别是词向量token embedding、 对两个句子进
行区分的向量segment embedding和表示 位置特征的向量positi onal embedding;
(22)将向量输入到BERT模型, 经过多层的解码器的自注意力机制和前馈神经网络, 在
每个位置输出融合全文语义信息的CLS向量, 通过Linear层 进行线性映射实现二分类任务;
之后对模型进行微调, 提高准确率;
(23)利用BERT模型从代码信息的文本向量中总结名称绑定成立的代码格式, 完成名称
绑定识别, 判断非 Java标识符是否具有名称绑定关系。
4.根据权利要求1所述的一种面向Java框架的跨语言名称绑定方法, 其特征在于, 所述权 利 要 求 书 1/2 页
2
CN 115407978 A
2步骤(3)包括以下步骤:
(31)特征提取: 为编程上下文 的文本标记构建语料库, 对语料库中的单词及标点建立
数字映射, 将文本标记转化成数字向量表示, 计算Java和非Java绑定对的编程上下文的相
似度, 选取余弦相似度Cosi ne Similarity和欧氏距离 Euclidean Distance
其中, X和Y分别表示重名的Java标识符和同名非Java标识符的编程上下文信息的数字
向量, xi和yi为n维向量X和Y在i维度上的坐标;
将代码信息中的文件名, 去掉后缀信息, 计算相似度, 选取最长公共子序列长度LCS和
莱文斯坦比r:
r=(sum–ldist)/sum
其中, sum是指word1和word2字串的长度总和, ldist是类编辑距离; 根据框架帮助文
档, 总结最基本的区分同名Java标识符的规则, 包括定义在非Java文件内部规则和定义在
其他文件内部两大类, 采用one ‑hot编码方式; 统计J ava标识符所在类的类名在非J ava标识
符所在文件的出现次数; 统计Java标识符同类的其他 成员名在非J ava标识符所在文件的出
现次数, 计算 概率和平均出现次数;
(32)构建分类数据集: 对于匹配成立的非Java标识符, 正确匹配集为名称绑定成立的
一组绑定对, 错误匹配集为其余同名J ava标识符与该非J ava标识符的绑定对, 分类标签为1
和0; 为每一个匹配对提取相应特征进行归一化处理后装入一维数组, 作为分类的特征集
合; 连接数据集中所有匹配对的特 征集合得到二维矩阵;
(33)重名标识符名称绑定区分模型训练: 选择支持 向量机、 决策树、 随机森林和最邻近
分类器作为第一层基本 分类器, 采用第一层基本分类器产生的类别概率值作为新的训练集
输入, 选取逻辑回归分类器作为第二层目标分类器在新的训练集上进行训练, 得到最终的
分类结果, 实现重名标识符的名称绑定区分, 为重名标识符构建正确的名称绑定 。
5.根据权利要求1所述的一种面向Java框架的跨语言名称绑定方法, 其特征在于, 步骤
(3)所述编程上 下文信息为:
对Java标识符, 利用Java Parser将所在类转化成抽象语法树, 提取所在类名、 同类 的
成员名、 定义在其他类中但是类型是该类的成员名 和所在类名, 继承的类或接口包含的成
员名、 注释信息、 注解信息;
对于非Java标识符, 按层次结构和格式提取: 提取文件最外层或者与名称绑定有意义
的层次中定义的标识符, 以及与该 标识符处于相同标签中的相同层次的标识符名称。
6.根据权利要求2所述的一种面向Java框架的跨语言名称绑定方法, 其特征在于, 步骤
(13)所述的代码信息为该 标识符所在文件名、 文件地址、 代码、 位置信息 。权 利 要 求 书 2/2 页
3
CN 115407978 A
3
专利 一种面向Java框架的跨语言名称绑定方法
文档预览
中文文档
13 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共13页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 SC 于 2024-03-03 12:14:06上传分享