当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于API文档的约束自动生成方法技术

技术编号:15690566 阅读:161 留言:0更新日期:2017-06-24 03:03
本发明专利技术公开了一种基于API文档的约束自动生成方法,包括如下步骤:首先输入一个URL;提取网页中类和函数的文字描述;对提取的句子进行一定的分析;然后使用NLP技术为每个句子生成一个树结构;识别树结构中的参数和结构生成树的中间表示形式;基于中间表示形式定义约束模板;最后遍历树结构自动生成相应的约束;本发明专利技术主要特点是通过API文档自动生成API函数的约束,方便程序员更好的理解API函数,并且能够弥补现有代码分析工具分析API函数的不足,使得代码分析工具能更好的分析源代码。

An automatic constraint generation method based on API document

The invention discloses a method for automatically generating API documents based on constraints, which comprises the following steps: first enter a description of URL; text extraction of classes and functions in the web page; analyzed the extracted sentences; and then use the NLP technology to build a tree structure for each sentence; among the parameters and the structure of the spanning tree identification of a tree structure representation; intermediate representation constraint definition template based on the corresponding constraint; finally automatically traverse the tree structure; the main feature of the invention is to automatically generate the API function through the API document constraints, understanding API function convenient programmers better, and can make up for the lack of existing code analysis tools API function. The code analysis tool can better analyze the source code.

【技术实现步骤摘要】
一种基于API文档的约束自动生成方法
本专利技术设计一种基于API文档的约束自动生成方法。
技术介绍
随着软件行业的快速发展,软件功能越来越强大,代码结构愈加复杂。一些技术人员为了提高软件的开发效率,实现了大量的类库。这些类库封装了的模块化函数,隐藏了特定平台的实现细节,软件开发人员在开发过程中直接使用这些类库,可以省去某些底层细节或功能的现实,提高开发质量和效率。然而这些类库的使用使得软件分析变得更加困难。因为在软件分析过程中,避免不了对这些类库进行分析,但这些类库的源码大部分是无法使用的。类库在实现过程中可能混合许多语言,而且通常进行过高度优化并包含大量的专业化工程技巧,目前的软件分析工具不能对其解析。现今已有许多工作对类库进行分析,但由于类库源码的复杂性,效果并不理想。通过对API(ApplicationProgrammingInterface)调研,发现API文档对函数的功能描述十分完整、简介,通过文档提取API函数性质存在可行性。然而由于需要精确的语言分析方法来分析API文档,这项工作仍然具有挑战性。
技术实现思路
本专利技术的目的,鉴于以上问题,本专利技术旨在提供一种基于API文档的约束自动生成方法,该方法结合NLP技术,构建转换原语,实现API文档到约束的自动生成,从而方便程序员理解API函数,并帮助软件分析工具分析源代码。技术方案:一种基于API文档的约束自动生成方法,包括步骤:步骤1:将API网站中对每个类的描述网页的URL作为输入;步骤2:提取网页中类及其所有成员函数,以及各个成员函数的文档描述信息;步骤3:对提取的文字信息进行预处理,去除冗余的句子,并将同义词进行归类;步骤4:使用NLP技术对步骤3处理后的文字信息进行分析,生成对应的树结构;步骤5:识别步骤4得到的树结构中的参数和结构生成树的中间表示形式;并基于中间表示形式定义约束模板;步骤6:根据步骤5得到的所有中间表示形式提取树模式,为所有树模式分别定义约束,构建约束模板;步骤7:遍历API函数对应的的中间表示形式,识别其中的树模式,根据步骤6定义的模板,将API函数转换成相应的约束。步骤5中对于树结构的结构识别针对分支语句,将分支语句的不同分支提取到同一层次。有益效果:1、基于API文档,为API函数自动生成约束。2、帮助程序员更好的理解、分析API函数。3、弥补现有软件分析工具无法分析API函数的缺陷,帮助软件分析工具更好的分析源代码。附图说明图1为本专利技术API文档自动生成约束示意图。图2为JavaString类库网页中提取的concat函数的文档信息。图3为为使用该工具对concat函数提取的文字信息进行处理,生成的树结构。图4为图3将相应的树节点转换成参数的形式图。图5为识别分支语句转换效果图。图6为图4抽取得到的两个树模式。图7为本专利技术从JavaString类库中提取的部分树模式。图8为逻辑表达式定义。具体实施方式下面结合附图对本专利技术作更进一步的说明。图1为本专利技术API文档自动生成约束示意图。如图1所示,本专利技术的步骤如下:步骤1:输入一个URL(Uniform/UniversalResourceLocator);API网站中,对所有类(class)都有详细的文档说明。这里把每个类的描述网页的URL作为输入。例如JavaString类库,URL为http://docs.oracle.com/javase/8/docs/api/index.html,该网页的文档为Java1.8版本。步骤2:提取网页中类和函数的文字描述;步骤1提供的网页包含了一个类的所有成员函数的声明及其文字描述。编写Python代码,提取网页中类及其所有成员函数,以及各个成员函数的文档描述信息。本
人员知道,通过编写脚本可以很容易获取网页信息,这里的实现细节不再具体描述。图2为JavaString类库网页中提取的concat函数的文档信息。通过图2可以很容易看出该函数的具体信息,包括函数的名称(concat),参数类型(String)及个数(1),返回类型(String)以及函数的功能。例如该函数是将特定的字符串(thespecifiedstring)连接到(concatto)该函数对象字符串(thisString)的后面(theendof)。本
人员知道,面向对象的语言每个函数都有一个对象,这里的thisstring就是concat函数的对象,对象的类型为String。从自然语言的角度出发,根据以上分析,很容易从文档中提取该函数的性质。使用NLP技术对提取的文档进行分析,提取文档中所表达的函数性质,使用约束进行表示,让程序员能更好的理解、分析API。步骤3:对提取的文字信息进行一定的分析;该步骤是对提取的文字进行一定的预处理,去除冗余的句子,将同义词进行归类,使得处理的句子更好的为自然语言处理工具所使用。以图2为例,函数声明(第一行加粗)下面的第一句话已经很详细的描述了该函数的功能,即将特定的字符串连接到对象字符串后面。If后面的内容只是将该句话进行了进一步的说明,对该工作并没有具体的用处,选择在预处理阶段将这些冗余的句子去除掉。对于同义词,例如“beginwith”和“startwith”,在函数的文字描述中表达的语义是完全相同的,如果不加归类,经过处理会生成两个中间形式,而且需要为两个中间形式各自定义一组约束,一定程度上增加了不必要的工作量。这里使用专业领域的字典识别句子中的同义词,进行归类,避免上述情况的发生。经过以上处理,API函数的文档更为简洁、有效,直接为NLP工具所使用。步骤4:使用NLP(NaturalLanguageProcessing)技术为文字信息生成一个树结构;使用NLP技术对预处理后的文字信息进行分析,生成句子的树结构图。目前自然语言工具已经相当成熟,使用已有的工具可以很好的处理这些文字信息。这里使用StanfordParser自然语言处理工具进行处理。StanfordParser工具中包含定义好的英文模板,可以对句子结构进行划分,生成树状结构。该英文模板可以识别文字信息中的S(句子),NP(名词短语),PP(介词短语),VP(动词短语),NN(名词),VB(动词),IN(介词或从属连词),DT(限定词)等,并定义语法规则,S→NPVP(表示句子S由名词短语NP和动词短语VP共同构成),VP→VB,VP→VBNP,VP→VPPP,NP→DTNN,NP→NPPP,PP→INNP等,对文字信息的结构进行划分生成树状结构。图3为使用该工具对concat函数提取的文字信息进行处理,生成的树结构。接着对生成的树结构进行一个初步的处理。对于图3中的名词短语thespecifiedstring,由DT,VBN,NN构成,thespecified修饰string,这种情况选择将这三个节点合并成一个节点,同理thisstring,theend这些名词短语,也将其合并成一个节点。而且在自然语言中,常常含有一些文字信息在本专利技术中没有具体的作用,选择将这些信息摘除。例如图3中的theend,这里将该节点摘除。处理后的树结构如图4。人为理解可以很容易看出该树结构表示的含义,然而直接遍历树并不能自动的生成约束,需要将每个节点与代码部件联系起本文档来自技高网
...
一种基于API文档的约束自动生成方法

【技术保护点】
一种基于API文档的约束自动生成方法,其特征在于:包括步骤:步骤1:将API网站中对每个类的描述网页的URL作为输入;步骤2:提取网页中类及其所有成员函数,以及各个成员函数的文档描述信息;步骤3:对提取的文字信息进行预处理,去除冗余的句子,并将同义词进行归类;步骤4:使用NLP技术对步骤3处理后的文字信息进行分析,生成对应的树结构;步骤5:识别步骤4得到的树结构中的参数和结构生成树的中间表示形式;步骤6:根据步骤5得到的所有中间表示形式提取树模式,为所有树模式分别定义约束,构建约束模板;步骤7:遍历API函数对应的的中间表示形式,识别其中的树模式,根据步骤6定义的模板,将API函数转换成相应的约束。

【技术特征摘要】
1.一种基于API文档的约束自动生成方法,其特征在于:包括步骤:步骤1:将API网站中对每个类的描述网页的URL作为输入;步骤2:提取网页中类及其所有成员函数,以及各个成员函数的文档描述信息;步骤3:对提取的文字信息进行预处理,去除冗余的句子,并将同义词进行归类;步骤4:使用NLP技术对步骤3处理后的文字信息进行分析,生成对应的树结构;步骤5:识别步骤4得到的树结构中...

【专利技术属性】
技术研发人员:张天潘敏学吴少博姜人和陈鑫李宣东
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1