[發明專利]基于深度學習及代碼上下文結構和文本信息的API推薦方法有效
| 申請號: | 202010723230.6 | 申請日: | 2020-07-24 |
| 公開(公告)號: | CN111966817B | 公開(公告)日: | 2022-05-20 |
| 發明(設計)人: | 彭鑫;陳馳;趙文耘 | 申請(專利權)人: | 復旦大學 |
| 主分類號: | G06F16/335 | 分類號: | G06F16/335;G06F16/36;G06F16/35;G06N3/08;G06F40/284;G06F8/33 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;陸尤 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 深度 學習 代碼 上下文 結構 文本 信息 api 推薦 方法 | ||
本發明屬于軟件工程技術領域,具體為一種基于深度學習的融合代碼結構和文本信息的API推薦方法。本發明包括通過對大量包含目標API的源代碼進行解析,構造大量的訓練樣本;構造融合代碼結構和文本信息的深度學習網絡;通過訓練樣本對深度學習網絡進行訓練,得到訓練好的深度學習網絡;用訓練好的深度學習網絡進行智能化API推薦;本發明中,設計了用于表示代碼上下文的API上下文圖、處理代碼文本信息的方法以及對代碼結構和文本信息進行融合學習的深度學習網絡。本發明為軟件開發人員提供基于代碼上下文的智能化API推薦,在開發人員已經編寫好的代碼的基礎上為其逐行推薦可能會用到的API,包括API方法調用、成員變量訪問,控制語句以及變量和對象實例聲明等。
技術領域
本發明屬于軟件工程技術領域,具體涉及軟件開發中的智能化推薦和輔助編碼技術,尤其涉及實現軟件編碼過程中的API推薦方法。
背景技術
在軟件開發任務中,軟件開發人員依賴API(Application ProgrammingInterface,即應用編程接口)(如JDK、Android所提供的API)來實現所需要的軟件特性。然而,API數量繁多并且每個API中又包含數量眾多的方法調用和成員變量,這使得開發人員難以熟知所有API的功能及其使用場合。此外,眾多API都有其特定的使用方式要求,例如API之間的使用組合、調用順序、相應的控制結構(如條件判斷、循環等)等。因此,如何在特定的代碼上下文中選擇合適的API來完成特定的開發任務經常成為開發人員遇到的難題。
針對這一問題的一個有效解決方案是在軟件集成開發環境等開發工具中提供智能化API推薦能力。這種智能化API推薦應當通過對開發人員正在編寫的代碼上下文的分析推測進行API(如API方法調用,成員變量等)推薦,從而輔助開發人員選擇正確的API來高效、高質量地完成自己的開發任務。
軟件代碼包含兩種核心類型的信息:結構信息和文本信息。代碼結構信息(如控制流和數據流)通過圖的形式來表示所需實現的軟件特性的程序邏輯。代碼文本信息(如代碼注釋、方法名、變量名)反映了所需實現的軟件特性在自然語言中的語義。為此,本發明設計了一種深度學習網絡來融合代碼結構信息和文本信息,從而實現更有效的API推薦。
發明內容
本發明的目的是為軟件開發人員提供基于代碼上下文的智能化API推薦方法,在開發人員已經編寫好的代碼的基礎上為其逐行推薦可能會用到的API,包括API方法調用、成員變量訪問,控制語句(if、while等)以及變量和對象實例聲明等。
本發明提供的API推薦方法,是基于自主設計的深度學習網絡并融合代碼結構和文本信息的,具體是通過對大量包含目標API(如JDK、Android中的API)的源代碼(開源代碼或企業代碼)進行解析,來構造大量的訓練樣本;構造融合代碼結構和文本信息的深度學習網絡;通過訓練樣本對深度學習網絡進行訓練,得到訓練好的深度學習網絡;用訓練好的深度學習網絡進行智能化API推薦。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學,未經復旦大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010723230.6/2.html,轉載請聲明來源鉆瓜專利網。





