[發明專利]一種基于Tree-LSTM的API使用代碼生成式推薦方法有效
| 申請號: | 201811501452.2 | 申請日: | 2018-12-10 |
| 公開(公告)號: | CN109739494B | 公開(公告)日: | 2023-05-02 |
| 發明(設計)人: | 彭鑫;陳馳;趙文耘 | 申請(專利權)人: | 復旦大學 |
| 主分類號: | G06F8/35 | 分類號: | G06F8/35;G06N3/04;G06N3/08 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 tree lstm api 使用 代碼 生成 推薦 方法 | ||
本發明屬于軟件工程和智能化軟件開發技術領域,具體為基于Tree?LSTM的API使用代碼生成式推薦方法。本發明通過對大量包含目標API的源代碼進行解析來構造大量的訓練樣本,在此基礎上使用深度學習和統計模型訓練API使用代碼預測模型;代碼預測模型分為:基于抽象代碼樹結構表示和深度學習的語句預測、基于數據依賴分析和統計模型的API調用參數預測;其中,設計了適合于Tree?LSTM模型處理的代碼的抽象樹結構表示。本發明為軟件開發人員提供基于代碼上下文的API使用代碼智能化推薦,根據已經寫好的代碼逐行推薦開發人員可能會用到的API使用代碼,包括API對象創建/方法調用/屬性訪問、控制語句以及變量聲明等,還會為API方法調用推薦相關的上下文變量作為參數。
技術領域
本發明屬于軟件工程和智能化軟件開發技術領域,具體涉及軟件開發中的智能化推薦和輔助編碼技術,尤其涉及API使用代碼生成式推薦方法。
背景技術
軟件開發人員經常依賴于各種通用API(Application?Programming?Interface,即應用編程接口)(如JDK、Android中的API)完成自己的開發任務。這類API的數量眾多,開發人員難以熟知所有API的功能及其使用場合。如何在具體的代碼上下文中選擇合適的API完成自身的開發任務經常成為開發人員遇到的難題。此外,許多API都有使用方式要求,例如API之間的使用組合、調用順序、相應的控制結構(如條件判斷、循環等)等,而違反API使用方式會導致代碼缺陷。因此,如何在所選擇的API基礎上按照正確的方式進行使用也是開發人員面臨的一個挑戰。
針對這一問題的一個有效解決方案是在軟件集成開發環境等開發工具中提供代碼智能化推薦能力。這種智能化推薦應當通過對于開發人員正在編寫的代碼上下文的分析推測有可能在當前位置上出現的API使用代碼(如API方法調用)并進行推薦,從而輔助開發人員高效、高質量地完成自己的開發任務。
軟件代碼包含分支、循環等多種控制結構,因此相應的代碼數據表示需要能夠反映這種控制結構,從而保留代碼中的結構信息。為此,本發明采用支持樹結構的深度學習網絡Tree-LSTM來訓練API使用代碼預測模型,從而實現生成式的智能化推薦。Tree-LSTM是一種具有樹狀拓撲結構的遞歸神經網絡,接收樹結構的數據作為輸入,并有效地編碼輸入數據中的結構信息。Tree-LSTM的結構如圖1所示。(Tree-LSTM的參考文獻為Kai?Sheng?Tai,Richard?Socher,?Christopher?D.?Manning:Improved?Semantic?Representations?FromTree-Structured?Long?Short-Term?Memory?Networks.?ACL?(1)?2015:?1556-1566)。
發明內容
本發明的目的是為軟件開發人員提供基于代碼上下文的API使用代碼智能化推薦方法。
本發明提供的API使用代碼生成式推薦方法,是基于Tree-LSTM的,具體是通過對大量包含目標API(如JDK、Android中的API)的源代碼(開源代碼或企業代碼)進行解析來構造大量的訓練樣本,在此基礎上使用深度學習和統計模型訓練API使用代碼預測模型。本發明中的代碼預測模型包括兩部分:基于抽象代碼樹結構表示和深度學習的語句預測、基于數據依賴分析和統計模型的API調用參數預測。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學,未經復旦大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811501452.2/2.html,轉載請聲明來源鉆瓜專利網。





