一种基于数据挖掘的源代码注释自动生成方法与流程

文档序号:11917516阅读:来源:国知局

技术特征:

1.一种基于数据挖掘的源代码注释自动生成方法,包括以下步骤:

1)分别从三种数据源中爬取与Linux内核函数相关的描述信息,所述三种数据源为Stack Overflow网站、Linux kernel邮件和Linux kernel Commit-log;

2)对步骤1)中得到的描述信息进行预处理,获取可能作为注释的文本,所述预处理包括文本格式处理及剔除无关Linux内核描述的噪声信息;

3)概括函数注释自然文本关键的特性作为提取规则,对步骤2)预处理后获取到的文本进行提取,自动生成函数整体注释。

2.如权利要求1所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,步骤1)包括:从Stack Overflow网站获取编程人员对指定函数讨论的信息,从Linux kernel邮件获取内核开发人员的开发过程邮件信息,从Linux kernel Commit-log获取开发人员提交代码的Commit-log信息,将全部数据分类存储于数据库。

3.如权利要求2所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,从Stack Overflow网站获取编程人员对指定函数讨论的信息的具体步骤如下:

1-1-1)在Stack Overflow网站的搜索页面输入“Linux+目标函数名称”搜索,得到目标函数话题列表的URL,爬取此页的HTML文件内容;

1-1-2)对步骤1-1-1)爬取的HTML文件内容进行解析,获取该网页中多个问题的URL链接并爬取其子HTML文件内容;

1-1-3)对步骤1-1-2)爬取的多个问题的子HTML文件内容,提取出网页中的问题标题、问题标号、投票数、问题描述和答案分类存储于数据库中。

4.如权利要求2所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,按照时间段分隔的邮件服务器http://lkml.iu.edu/hypermail/linux/kernel进行邮件的爬取,从Linux kernel邮件获取内核开发人员的开发过程邮件信息,具体步骤如下:

1-2-1)选取某一时间段为目标,得到的该时间段邮件列表的URL,爬取此页的HTML文件;

1-2-2)对步骤1-2-1)爬取的HTML文件进行解析,获取该时间段内的所有邮件的URL链接并爬取其HTML文件;

1-2-3)对步骤1-2-2)爬取的所有邮件的HTML文件,提取出网页中邮件的标题和正文存储于数据库中。

5.如权利要求2所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,从Linux kernel Commit-log获取开发人员提交代码的Commit-log信息的具体步骤如下:

1-3-1)根据用户指定的起始版本获取第一个要爬取的show页面的URL;

1-3-2)爬取show页面的HTML文档,解析HTML文档获取commit log正文与标题存入数据库,并拼接next页面的URL;

1-3-3)在标题中查找终止版本的标识,如果找到则结束爬取,否则返回步骤1-3-2)继续next页面。

6.如权利要求1所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,步骤2)中所述文本格式处理包括:将从三种数据源中爬取的描述信息以空行为分隔符,将文本分成备选注释段落并去除HTML标签。

7.如权利要求1所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,步骤2)中分别针对三种数据源形成三种对应的过滤规则,从步骤1)中得到的描述信息中剔除无关Linux内核描述的噪声信息;针对Stack Overflow网站形成的过滤规则为:如果问题的投票小于1,删除问题及对应答案的所有段落;如果问题的投票大于1,删除对应答案中小于1的答案的所有段落;针对Linux kernel邮件形成的过滤规则为:以关键字"+"、"WARING"、"ERROR"、"#good"、"#bad"为条件剔除邮件中包含调用栈信息、告警、错误、补丁的段落;针对Linux kernel Commit-log形成的过滤规则为:对于Commit-log正文以关键字"==="、"Fix"、"Signed-off-by"为条件剔除commit-log特有的无关函数注释的内容。

8.如权利要求7所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,从步骤1)中得到的描述信息中剔除无关Linux内核描述的噪声信息包括:按照针对Stack Overflow网站形成的过滤规则,剔除从Stack Overflow网站爬取的描述信息中投票小于1的段落;按照针对Linux kernel邮件形成的过滤规则,剔除邮件特有的不适注释的段落;按照针对Linux kernel Commit-log形成的过滤规则剔除Commit-log特有的不适注释的段落。

9.如权利要求1所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,步骤3)中所述提取规则具体包括:

提取规则1:对函数进行注释说明的文字,包含如下关键字中的一个或几个:

"函数名字+()"、"function"、"methord"、"return"、"call"、"execute"、"invoke";

提取规则2:对于函数的描述性语言中包含如下关键字的句子,不能作为函数的注释性文本:

no,not,error,bug,difficult,difficulty,problem,problems,fix,shouldn’t,doesn’t,can’t,couldn’t,don’t,isn’t,aren’t,wouldn’t,fail,why,what,null,bad,wrong,missing,lack,probably,likely,perhaps,think,may,maybe,unfortunately,unluckily。

10.如权利要求9所述的一种基于数据挖掘的源代码注释自动生成方法,其特征在于,步骤3)具体包括:

3-1)按提取规则1提取段落;

3-2)将提取得到的段落分成句子;

3-3)按提取规则2过滤所述句子,如有剩余,自动生成函数注释。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1