[發明專利]一種基于文檔的庫函數的代碼模型的自動合成方法有效
| 申請號: | 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.szxzyx.cn/pat/books/201611233727.X/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種多功能鹽療口罩
- 下一篇:萬家福娃(膀胱太陽)





