[发明专利]一种面向代码重用的源代码推荐方法有效
申请号: | 202110205302.2 | 申请日: | 2021-02-24 |
公开(公告)号: | CN112925563B | 公开(公告)日: | 2022-01-04 |
发明(设计)人: | 文万志;赵甜;胡晨;郑大顺;胡逸涛;朱星宇;程实 | 申请(专利权)人: | 南通大学 |
主分类号: | G06F8/73 | 分类号: | G06F8/73;G06F8/33;G06F8/36 |
代理公司: | 北京科家知识产权代理事务所(普通合伙) 11427 | 代理人: | 徐思波 |
地址: | 226019 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 代码 重用 源代码 推荐 方法 | ||
1.一种面向代码重用的源代码推荐方法,其特征在于,包括如下步骤:
S1、源代码预处理和验证:对上传的源代码进行预处理,再通过构造抽象语法树从源代码中提取包括函数名和变量名的重要属性,如果在构造AST时出现错误,则将这段代码视为无效并放弃对该代码的上传;完成AST构造后对函数源代码进行验证,判断是否是库内已有函数源代码的功能延展,或者是库内某函数源代码的简版;
S2、生成函数摘要:结合步骤S1针对每个函数源代码构造的抽象语法树,通过AST提取函数源代码的包括函数名和变量的信息,与函数源代码的注释部分结合生成函数源代码的函数摘要;
S3、获取函数标签词:结合步骤S2针对函数源代码生成的函数摘要,识别函数摘要里的函数名、重要变量名以及部分重要注释,将这三部分内容结合在一起得到函数标签词;
S4、构造键值对:将步骤S1中经过预处理后的函数源代码与根据该函数源代码由步骤S2生成的函数摘要以及步骤S3生成的函数标签词生成具有相同“键”的键值对,即构造{Fun_id,Source_code}、{Fun_id,Fun_describe}、{Fun_id,Fun_label}键值对,分成存入数据库;其中,Fun_id表示为函数编号,Source_code表示为函数源代码,Fun_describe表示为函数摘要,Fun_label表示为函数标签词;
S5、生成问题词条:根据用户输入的已知问题项为用户推荐查询,分析用户输入的问题句,通过对比无效词库将自然语言的问题句进行剔除得到问题有效句,再对问题有效句进行分析转换成有效词条;
S6、查询匹配度计算:计算由步骤S5通过分析问题句得到的有效词条与库内各个函数源代码的函数标签词的相关系数,以及问题有效句在函数摘要的存在系数;查询匹配度来源于两个数值:相关系数以及存在系数;
步骤S6中,问题有效句在函数摘要的存在系数,定义如下:
,
其中,为问题有效句的总字数,为函数摘要内存在最多问题有效句字数前提下最短的描述句总字数,为问题有效句出现在函数摘要内选定描述语句的字数;
有效词条与函数标签词的相关系数,定义如下:
,
其中,为问题有效句,为问题有效句对应的一个有效词条的字数,为在函数标签词内带该有效词条的描述句句数,为问题有效句的总字数,为函数标签词的总句数;
S7、搜索结果输出:根据步骤S6计算得到的相关系数、存在系数两个数值,在函数源代码内搜索后输出搜索结果。
2.根据权利要求1所述的面向代码重用的源代码推荐方法,其特征在于,步骤S1包括如下步骤:
S1.1、使用pycodestyle包进行编程规范检查,快速验证代码块是否符合PEP8书写规范,确定代码哪些部分需要被格式化;
S1.2、使用autopep8模块规范代码格式;
S1.3、将上传代码与库内已有源代码进行重复度比较,对于重复读过高甚至完全重复的代码取消上传;
S1.4、使用python的ast模块将源代码转换为AST。
3.根据权利要求1所述的面向代码重用的源代码推荐方法,其特征在于,步骤S2中生成的函数摘要是一个由自然词汇、句子以及短语组成的描述性文本;就单个函数摘要而言,首先从该函数的AST中提取函数名和变量,然后通过简单的文本处理遍历函数的源代码,识别注释符号,获取源代码的注释内容,在提取函数名、变量名和注释之后,将这些信息结合起来生成函数摘要;其中,对于函数名和变量的处理规定如下:
S2.1、对于由几个首字母为大写的英文单词连在一次的函数名或者变量名,读取每个英文单词进行翻译,生成中文注释;
S2.2、针对步骤S2.1,如果部分字母无法翻译,选择忽视该部分字母;
S2.3、在处理带有下划线或其他特殊符号的变量名时,只读取英文单词,而忽视特殊符号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南通大学,未经南通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110205302.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种使用盾构机下穿货运铁路专线施工工法
- 下一篇:一种农业种植用自动施肥装置