[发明专利]一种基于文档的库函数的代码模型的自动合成方法有效
申请号: | 201611233727.X | 申请日: | 2016-12-28 |
公开(公告)号: | CN106843849B | 公开(公告)日: | 2020-04-14 |
发明(设计)人: | 翟娟;赵建华;黄建军;马仕青;张翔宇;谭琳;秦锋 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/73;G06F11/36 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张苏沛 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 文档 库函数 代码 模型 自动 合成 方法 | ||
本发明的基于文档的库函数的代码模型的自动合成方法,包括步骤:1.从文档中抽取有用信息;2.使用自然语言处理工具生成句子的语法树;3.对步骤2中生成的语法树进行结构上的变换生成多个语法树的变体;4.对步骤3中生成的语法树进行分析,识别其中的参数、程序结构以及操作语义,生成候选的代码模型;5.对步骤4中的候选模型进行检验,删除与原始的类库具有行为不一致的候选模型。本发明综合使用了自然语言处理技术与自动化测试技术,成功地为Java容器类生成了代码模型,生成的代码模型可以有效地提高其它程序分析技术的正确性和效率,解决了程序分析过程中由于类库源代码缺失或者类库源代码过于复杂导致难以分析等问题。
技术领域
本发明涉及一种基于文档的库函数的代码模型的自动合成方法,主要利用自然语言处理技术和自动化测试技术来解决库函数的代码模型的自动生成问题,进而提高其它程序分析技术的正确性和效率。属于软件工程、程序合成领域。
背景技术
在现代的程序中,类库被广泛使用,类库的行为是软件行为中不可分割的一部分,对软件程序进行分析的时候,这些类库也应该被分析。然而分析类库是一件非常困难的事情,首先,在很多情况下,类库的源代码是无法获取的。即使可以获取源代码,代码通常也非常复杂,比如包含高度优化的代码、复杂的工程技巧,或者是由多种语言实现,这一系列的原因都导致分析类库源代码非常困难。
目前有很多研究工作人工为类库建立模型,通过对模型的分析来替代对类库的分析。然而,人工建模不仅耗时,而且容易出错。另外还有一些研究工作通过动态执行程序来跟踪输入输出之间的关系,这种方法依赖于测试用例的充分度,而且输入输出之间的依赖关系无法反应类库的精确行为。
发明内容
技术问题:类库的文档中通常包含了丰富的信息,描述了类库的行为,因此,本发明的目标是从文档中抽取有用信息,根据这些信息,综合使用自然语言处理技术与自动化测试技术为类库自动生成代码模型。代码模型模拟了类库的行为,解决了程序分析过程中由于源代码缺失或者源代码过于复杂导致难以分析等问题,有效地提高其它程序分析技术的有效性和效率。
技术方案:给定一个Java API函数,本发明使用自然语言处理工具生成每个句子的语法树,然后在语法树中识别参数和程序结构生成树结构形式的中间表示,接着将中间表示与预定义的一组原语的树模板进行匹配,每个原语是由一个树模板以及该树模板所对应的代码模板组成。在匹配过程中,本发明尝试用若干个原语的树模板对中间表示进行覆盖,当找到合适的树模板将中间表示覆盖完全后,使用中间表示中对应的节点信息来实例化树模板中的节点,实例化的结果是与树模板匹配的子树所对应的代码片段,将这些代码片段组合起来生成一个代码模型。由于自然语言的二义性以及参数识别过程中的不确定性等,每个句子可能对应多个中间表示,此外,每个中间表示可能有多个覆盖方法,因此可能生成多个候选的代码模型,本发明使用测试技术过滤掉与原始的类库具有行为不一致的候选模型。本方法包括以下步骤:
步骤1:从文档中抽取类和函数的描述信息,例如函数的声明、函数的行为描述等。
步骤2:对步骤1抽取的信息进行等价分析、冗余信息删除以及语句增强。
步骤3:使用自然语言处理工具为经过步骤2处理的每一个自然语言句子生成一棵语法树,这棵树给出了每个单词的词性,同时标记了不同的短语。
步骤4:将步骤3生成的语法树进行节点变换生成多个变体,不同变体表示不同的语义。
步骤5:识别步骤4中生成的语法树中表示参数的节点以及从语法树中识别出程序的结构,即循环结构和分支结构,为语法树生成相应的中间表示。
步骤6:结合给定的原语,为步骤5生成的中间表示合成对应的代码片段,然后将一个函数的所有中间表示对应的代码片段组合起来生成每一个函数的模型,然后将不同函数的模型组合起来生成类的模型。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611233727.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种多功能盐疗口罩
- 下一篇:万家福娃(膀胱太阳)