• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>
    當前位置: 首頁 > 專利查詢>南京大學專利>正文

    一種基于API文檔的約束自動生成方法技術

    技術編號:15690566 閱讀:162 留言: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
    主站蜘蛛池模板: 亚洲午夜福利AV一区二区无码| 中文字幕av无码一二三区电影| 无码人妻丰满熟妇区BBBBXXXX | 精品人妻无码区二区三区| 久久亚洲AV无码精品色午夜麻| 无码人妻少妇色欲AV一区二区| 西西444www无码大胆| 国产亚洲精久久久久久无码AV | 国语成本人片免费av无码| 潮喷失禁大喷水aⅴ无码| 性色AV蜜臀AV人妻无码| 亚洲日韩激情无码一区| 无码一区二区三区免费视频| 人妻丰满熟妇AV无码区乱| 亚洲一本大道无码av天堂| 成人免费午夜无码视频| 亚洲AV中文无码字幕色三| 一级电影在线播放无码| 免费无码黄十八禁网站在线观看| 免费看无码特级毛片| 日韩美无码五月天| 亚洲另类无码一区二区三区| 国产精品VA在线观看无码不卡| 少妇无码?V无码专区在线观看| 91无码人妻精品一区二区三区L| 国产V亚洲V天堂A无码| 中文字幕无码毛片免费看| 亚洲Av无码国产情品久久| 人妻av中文字幕无码专区| 亚洲日韩乱码中文无码蜜桃臀| 亚洲av永久无码制服河南实里| 小泽玛丽无码视频一区| 国产日产欧洲无码视频| aⅴ一区二区三区无卡无码| 无码日韩人妻精品久久| 亚洲AV无码成H人在线观看 | 久久久精品人妻无码专区不卡| 精品无码成人久久久久久| 国产免费av片在线无码免费看| av中文无码乱人伦在线观看| 免费无码专区毛片高潮喷水|