[发明专利]一种基于文档的库函数的代码模型的自动合成方法有效
申请号: | 201611233727.X | 申请日: | 2016-12-28 |
公开(公告)号: | CN106843849B | 公开(公告)日: | 2020-04-14 |
发明(设计)人: | 翟娟;赵建华;黄建军;马仕青;张翔宇;谭琳;秦锋 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/73;G06F11/36 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张苏沛 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 文档 库函数 代码 模型 自动 合成 方法 | ||
1.一种基于文档的库函数的代码模型的自动合成方法,其特征在于,包含步骤如下:
步骤一、获取文档中的有用信息;
步骤二、为自然语言句子生成语法树;
步骤三、变换语法树生成多个语法树的变体,每个变体表示不同的语义;
步骤四、在语法树中识别出参数、程序结构以及操作语义,生成候选的代码模型;
步骤五、检验候选模型,删除与原始的类库具有不一致行为的候选模型;
所述步骤四中:
步骤4.1将语法树中的树节点和组成程序语句的变量、程序结构以及操作语义进行关联;
步骤4.2对关联后的语法树进行分析,将语法树翻译成代码片段;
步骤4.3将一个函数的文档中所有句子对应的代码片段进行组合生成函数的代码模型;
步骤4.4将一个类中所有函数的代码模型组合生成类的代码模型。
2.根据权利要求1所述的自动合成方法,其特征在于:所依据的文档信息包括包名、类名、函数声明、函数的行为描述、函数的返回值描述、函数抛出的异常信息。
3.根据权利要求1所述的自动合成方法,其特征在于:去除文档中包含的冗余信息,并尝试将不完整的信息补充完整。
4.根据权利要求1所述的自动合成方法,其特征在于:将语法树中的部分树节点进行上移或者下推来生成语法树的不同变体,每一个变体表示了一种可能的语义信息;通过这种方式来解决自然语言固有的模糊性。
5.根据权利要求1所述的自动合成方法,其特征在于,其中步骤五中:
步骤5.1对于任意的候选类模型,首先对其进行编译并使用Randoop工具为其自动生成单元测试用例,这些测试用例体现了候选类模型的行为;
步骤5.2使用Junit在原始的JDK类库上运行步骤5.1中生成的测试用例;如果有一个测试用例失败,这就意味着候选的类模型和原始的类库存在行为不一致,那么就将该候选类模型舍弃;如果某个候选的类模型的测试用例全部通过,那么则认为该候选是所期望的类库的代码模型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611233727.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种多功能盐疗口罩
- 下一篇:万家福娃(膀胱太阳)