代碼指南針是諾基亞貝爾實驗室開發的軟件包的上下文搜索引擎。它通過為您的特定軟件項目推薦最佳可能的軟件庫來增強代碼的重複使用。為自己看:

代碼指南針可作為網站,REST API以及VSCODE的IDE插件提供。
我們在NPM上為JavaScript,Python的Python和Java Maven Central索引索引軟件包。
如果您正在尋找來自愛立信的類似命名的代碼理解工具來探索大型代碼庫,請在此處查看。除名稱外,該項目與該項目之間沒有關係(正式或非正式)。
現代軟件開發基於通過開源庫和框架重複使用代碼。這些圖書館發表在軟件包存儲庫中,這些存儲庫以指數率增長。通過構建更好的軟件包搜索工具,我們旨在刺激更多的代碼重複使用,並在“長尾巴”中更可發現軟件包。
在這篇介紹性的博客文章中可以找到有關為什麼,什麼,什麼以及如何找到代碼指南針的介紹。
代碼指南針是軟件包的上下文搜索引擎。
代碼指南針與其他軟件包搜索引擎不同,您可以將搜索“播種”使用您已經知道或使用的庫的名稱。我們稱這些“上下文庫”。然後,代碼指南針使用這些上下文庫來“錨定”與代碼最相關的技術堆棧中的搜索。
當使用Visual Studio Code IDE擴展程序時,無需手動輸入上下文庫:代碼指南針將自動提取活動源文件的導入依賴項以錨定其搜索。
請注意,代碼指南針永遠不會將您的代碼發送到服務器。僅發送代碼中導入的第三方模塊的名稱。
Code Compass使用無監督的機器學習來學習如何通過使用的上下文來群集相似的軟件包,這是由圖書館如何與大型開源代碼庫中的其他庫一起導入的。
軟件包表示為向量,我們通過與單詞矢量類比稱為“庫矢量”。就像Word2Vec通過分析大型文本語料庫中的單詞如何共同發生的方式將單詞轉化為向量一樣,我們的“ import2vec”通過分析導入語句在大型代碼庫中如何共同發生,將庫轉化為向量。
您可以在我們的2019年MSR論文中閱讀詳細信息。 Zenodo上有輔助材料,包括Java,JavaScript和Python的訓練有素的圖書館嵌入。
例如,對於Java,我們查看了Github上的許多開源項目和Maven Central上的圖書館,並研究瞭如何在這些項目中進口圖書館。我們確定了與Web框架,雲計算,網絡服務和大數據分析有關的大量項目集群。眾所周知的項目,例如Apache Hadoop,Spark和Kafka都聚集在同一地區,因為它們通常一起用於支持大數據分析。
以下是Java學習向量空間的3D可視化(T-SNE圖)。每個點代表一個Java庫,各種彩色簇對應於數據中發現的不同細分區域。我們強調了Apache Projects的名稱。

docs/ :代碼指南針搜索服務的REST API文檔plugins/vscode/ :Visual Studio代碼擴展程序以將代碼指南針集成到IDEscripts/ :數據提取腳本以生成庫從源代碼導入共發生的庫nbs/ :帶有張量的jupyter筆記本電腦,可從進口共發生數據訓練庫嵌入庫代碼指南針是由諾基亞貝爾實驗室的應用平台和軟件系統實驗室中的研究團隊開發的。
有關代碼指南針貢獻者的字母列表,請參見貢獻者。
如果您想訓練其他語言的嵌入,請查看import2vec下的腳本,以了解需要哪些數據。
如果您有改進,用戶反饋或想報告錯誤的建議,請在此存儲庫中打開問題。
BSD3