コードコンパスは、Nokia Bell Labsで開発されたソフトウェアパッケージのコンテキスト検索エンジンです。特定のソフトウェアプロジェクトに可能な限り最高のソフトウェアライブラリを推奨することにより、コードの再利用を超過します。あなた自身を見てください:

コードコンパスは、Webサイト、REST API、およびVSCODE用のIDEプラグインとして利用できます。
JavaScriptのNPMでホストされているインデックスパッケージ、Python用のPypi、JavaのMaven Central。
Ericssonの同様に指定されたコード理解ツールを探している場合は、大きなコードベースを探索している場合は、こちらをご覧ください。名前とは別に、そのプロジェクトとこのプロジェクトの間に関係(正式または非公式)はありません。
最新のソフトウェア開発は、オープンソースライブラリとフレームワークを介してコードの再利用に基づいています。これらのライブラリは、ソフトウェアパッケージリポジトリで公開されており、指数関数的な速度で成長しています。より良いソフトウェアパッケージ検索ツールを構築することにより、より多くのコードの再利用を刺激し、「ロングテール」のソフトウェアパッケージをより発見可能にすることを目指しています。
この紹介ブログ投稿で、コードコンパスの理由、何、どのようにどのように見つけるかについての穏やかな紹介。
コードコンパスは、ソフトウェアパッケージのコンテキスト検索エンジンです。
コードコンパスは、他のパッケージ検索エンジンとは異なります。これは、すでに知っている、または使用しているライブラリの名前で検索を「シード」できるということです。これらを「コンテキストライブラリ」と呼びます。コードコンパスは、これらのコンテキストライブラリを使用して、コードに最も関連するテクノロジースタックの検索を「アンカー」します。
Visual Studio Code IDE拡張機能を使用する場合、コンテキストライブラリを手動で入力する必要はありません。コードコンパスは、アクティブソースファイルのインポート依存関係を自動的に抽出して、検索を固定します。
コードコンパスは、コードをサーバーに送信しないことに注意してください。コードにインポートされたサードパーティモジュールの名前のみが送信されます。
Code Compassは、監視されていない機械学習を使用して、大規模なオープンソースコードベースの他のライブラリと一緒にライブラリがどのようにインポートされるかによって決定されるように、使用のコンテキストによって同様のソフトウェアパッケージをクラスター化する方法を学習します。
ソフトウェアパッケージは、単語ベクトルとの類推によって「ライブラリベクター」と呼ばれるベクトルとして表されます。 Word2vecが単語を大規模なテキストコーパスの共同ccurを分析することにより、単語をベクトルに変えるように、「Import2Vec」は、大きなコードベースのインポートステートメントがどのように共同発生するかを分析することにより、ライブラリをベクトルに変えます。
MSR 2019ペーパーで詳細を読むことができます。 Java、JavaScript、Python用の訓練されたライブラリ埋め込みを含む補足資料は、Zenodoで入手できます。
例として、Javaについては、GitHubとMaven Centralの図書館に関する多数のオープンソースプロジェクトを見て、これらのプロジェクト全体で図書館がどのようにインポートされるかを研究しました。 Webフレームワーク、クラウドコンピューティング、ネットワークサービス、ビッグデータ分析に関連するプロジェクトの大規模なクラスターを特定しました。 Apache Hadoop、Spark、Kafkaなどの有名なプロジェクトはすべて、ビッグデータ分析をサポートするために一般的に使用されているため、すべて同じ地域に集まっていました。
以下は、Javaの学習ベクトル空間の3D視覚化(T-SNEプロット)です。各ドットはJavaライブラリを表し、さまざまな色のクラスターは、データで発見されたさまざまなニッチ領域に対応しています。 Apacheプロジェクトの名前を強調しました。

docs/ :コードコンパス検索サービス用のREST APIドキュメントplugins/vscode/ :ビジュアルスタジオコード拡張コードコンパスをIDEに統合するscripts/ :ソースコードからライブラリのインポート共起を生成するためのデータ抽出スクリプトnbs/ :輸入共発生データからライブラリの埋め込みをトレーニングするためのTensorflowモデルを備えたJupyterノートブックコードコンパスは、Nokia Bell Labsのアプリケーションプラットフォームおよびソフトウェアシステムラボの研究チームによって開発されました。
コードコンパスの貢献者のアルファベットリストについては、貢献者を参照してください。
他の言語の埋め込みをトレーニングしたい場合は、 import2vecの下のスクリプトを見て、必要なデータのアイデアを取得してください。
改善、ユーザーのフィードバック、またはバグを報告するための提案がある場合は、このリポジトリで問題を開いてください。
BSD3