[發明專利]大規模源代碼存儲庫中的自動導入及依賴性有效
| 申請號: | 201680037594.0 | 申請日: | 2016-06-27 |
| 公開(公告)號: | CN107810474B | 公開(公告)日: | 2020-12-29 |
| 發明(設計)人: | 卡爾米·格魯什科 | 申請(專利權)人: | 谷歌有限責任公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F8/74 |
| 代理公司: | 中原信達知識產權代理有限責任公司 11219 | 代理人: | 李寶泉;周亞榮 |
| 地址: | 美國加利*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 大規模 源代碼 存儲 中的 自動 導入 依賴性 | ||
本發明公開了用于找出源代碼文件中的至少一個簡單名的合格名的候選的系統和方法。可以接收具有需要對應合格名的至少一個簡單名的源代碼文件。可以解析所述源代碼文件以確定所述文件中的簡單名和所述文件中的合格名。針對需要對應合格名的至少一個簡單名,可以搜索源代碼圖以找出與所述至少一個簡單名相對應的潛在候選合格名。在從所述源代碼圖中接收到潛在候選合格名的列表后,可以向用戶輸出所述列表以便所述用戶選擇適當的合格名。針對所述合格名,還可以選擇構建依賴性。
背景技術
開發者經常構建包含外部代碼或庫的復雜軟件應用。例如,開發者可能希望在其應用中包括人員列表。開發者可能代替定義他自己的列表對象而包括來自外部包的列表類。在如圖1所示的這個示例中,開發者可以在他的代碼中包括來自標準庫的列表,諸如“java.util.List”。“java.util.List”是通過java.util包可公開獲得的有序集合類。一旦列表被導入開發者的源代碼文件中,開發者便可以簡單地利用簡單名“List”來引用該列表,而不必在各處實例化或使用該列表時使用完全合格名(qualified name)“java.util.List”。例如,在圖1的行3中,代碼僅涉及簡單名“List”,而不涉及合格名“java.util.List”。
雖然使用標準集成開發環境(IDE)能夠使定義合格名的包、庫或外部代碼導入源代碼的過程對于小規模代碼庫簡單直接,但大規模代碼庫對于標準IDE而言具有過多外部依賴性而無法有效率地找出稱為合格名的適當全名或者依賴性的適當構建系統構造。
常規的系統通過查看整個代碼庫并且試圖確定適當的包、庫或其他外部代碼來嘗試實時找出合格名。這個過程非常耗時。使用這種方法根本無法在合理的時間內處理大量的源代碼。
正如本發明人所認識到,期望能夠快速地找出合格名的候選以導入適當的包、庫或外部代碼,以用于源代碼中存在的簡單名引用以及提供合格名的構建系統依賴性。
發明內容
本說明書描述有關針對源代碼文件——例如Java語言的源代碼文件——中的至少一個簡單名找到合格名的候選的技術。
一般而言,本說明書中所述的主題的一方面能夠被實施在一種用于找出源代碼文件中的至少一個簡單名的合格名的候選的系統中。一種示例系統可以包括一個或多個處理設備以及一個或多個存儲設備,所述存儲設備存儲實現示例方法的指令。一種示例方法可以包括:接收具有需要對應合格名的至少一個簡單名的源代碼文件;解析所述源代碼文件以確定所述文件中的簡單名和所述文件中的合格名;針對需要對應合格名的至少一個簡單名,搜索源代碼圖以找出與所述至少一個簡單名相對應的潛在候選合格名;以及在接收到來自所述源代碼圖的潛在候選合格名的列表后,輸出所述列表。
這些及其他實施例能夠可選地包括以下特征中的一個或多個:在輸出所述列表之前,可以用附加信息過濾或充實所述列表;一旦合格名被選擇,便可以確定特定合格名的構建依賴性以及構建目標;在輸出所述列表之前,可以基于其他源代碼文件已經使用特定類型的合格名的次數來過濾所述列表;可以基于源代碼存儲庫的其他部分中已經使用特定合格名的頻率來排名所述列表;如果所述列表僅包含一個潛在合格名,則無需用戶交互便可以自動選擇該名作為所述合格名;可以為用戶提供接口以接收對潛在候選合格名的列表中的合格名的選擇;過濾可以包括:確定合格名包是否從其中與所述合格名潛在相對應的簡單名當前正被引用的源代碼文件可見,以及響應于確定所述合格名包從所述源代碼文件可見,提供所述合格名包的名稱作為潛在候選合格名;以及過濾可以包括:確定合格名包能夠向構建過程增添的復雜度,包括為了構建所述源代碼文件所增加的時間和/或資源,以及響應于確定合格名包向所述構建過程增添的復雜度是可承受的量,將所述合格名包的名稱添加到潛在候選合格名的列表。
附圖說明
圖1是包括合格名和簡單名的源代碼的示例。
圖2是圖示出用于確定源代碼文件中的簡單名的合格名的示例系統的框圖。
圖3是圖示出示例計算設備的框圖。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于谷歌有限責任公司,未經谷歌有限責任公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201680037594.0/2.html,轉載請聲明來源鉆瓜專利網。





