Code Compass est un moteur de recherche contextuel pour les packages logiciels développés chez Nokia Bell Labs. Il suralimente le code de réutilisation en recommandant les meilleures bibliothèques de logiciels possibles pour votre projet logiciel spécifique. Voyez par vous-même:

Code Compass est disponible en tant que site Web, une API REST et comme plug-in IDE pour VSCODE.
Nous indexons les packages hébergés sur NPM pour JavaScript, PYPI pour Python et Maven Central pour Java.
Si vous recherchez l'outil de compréhension de code nommé de la même manière d'Ericsson pour explorer les grandes bases de code, regardez ici. En dehors du nom, il n'y a pas de relation (formelle ou informelle) entre ce projet et celui-ci.
Le développement de logiciels moderne est fondé sur la réutilisation du code via des bibliothèques et des cadres open source. Ces bibliothèques sont publiées dans des référentiels de packages logiciels, qui se développent à un rythme exponentiel. En construisant de meilleurs outils de recherche de packages de logiciels, nous visons à stimuler plus de réutilisation de code et à rendre les packages logiciels dans la "longue queue" plus découvrables.
Une douce introduction au pourquoi, à quoi et comment le code Compass peut être trouvé dans cet article de blog d'introduction.
Code Compass est un moteur de recherche contextuel pour les packages logiciels.
Code Compass diffère des autres moteurs de recherche de packages en ce que vous pouvez "semer" la recherche avec les noms des bibliothèques que vous connaissez ou utilisez déjà. Nous appelons ces «bibliothèques de contexte». Code Compass utilise ensuite ces bibliothèques de contexte pour "ancre" la recherche dans les piles de technologie les plus pertinentes pour votre code.
Lorsque vous utilisez l'extension IDE de code Visual Studio, il n'est pas nécessaire de saisir manuellement les bibliothèques de contexte: Code Compass extraire automatiquement les dépendances d'importation du fichier source actif pour ancrer sa recherche.
Notez que le code Compass n'enverra jamais votre code au serveur. Seuls les noms des modules tiers importés dans votre code sont envoyés.
Code Compass utilise l'apprentissage automatique non supervisé pour apprendre à regrouper des packages logiciels similaires par leur contexte d'utilisation, comme déterminé par la façon dont les bibliothèques sont importées aux côtés d'autres bibliothèques dans les grandes bases de code open source.
Les packages logiciels sont représentés comme des vecteurs que nous appelons des "vecteurs de bibliothèque" par analogie avec des vecteurs de mots. Tout comme Word2Vec transforme les mots en vecteurs en analysant comment les mots co-occurnt dans de grands corpus de texte, notre "import2vec" transforme les bibliothèques en vecteurs en analysant comment les instructions d'importation co-occuraient dans les grandes bases de code.
Vous pouvez lire les détails de notre article MSR 2019. Des documents supplémentaires, y compris des intégres de bibliothèque formés pour Java, JavaScript et Python, sont disponibles sur Zenodo.
Par exemple, pour Java, nous avons examiné un grand nombre de projets open source sur GitHub et les bibliothèques sur Maven Central et étudié comment les bibliothèques sont importées dans ces projets. Nous avons identifié de grands groupes de projets liés aux cadres Web, au cloud computing, aux services réseau et à l'analyse des mégadonnées. Des projets bien connus tels que Apache Hadoop, Spark et Kafka ont tous été regroupés dans la même région car ils sont couramment utilisés ensemble pour soutenir l'analyse des mégadonnées.
Vous trouverez ci-dessous une visualisation 3D (un tracé T-SNE) de l'espace vectoriel appris pour Java. Chaque point représente une bibliothèque Java et les différentes grappes colorées correspondent à différentes zones de niche découvertes dans les données. Nous avons mis en évidence les noms des projets Apache.

docs/ : REST API DOCS pour le service de recherche de boussole Codeplugins/vscode/ : Visual Studio Code Extension Pour intégrer le code Compass dans l'IDEscripts/ : Extraction de données scripts pour générer des cooccurrences d'importation de bibliothèque à partir du code sourcenbs/ : cahiers Jupyter avec des modèles TensorFlow pour former des intégres de bibliothèque à partir de données de cooccurrence d'importationCode Compass est développé par une équipe de recherche dans les plates-formes d'application et le laboratoire de systèmes logiciels de Nokia Bell Labs.
Voir les contributeurs d'une liste alphabétique de contributeurs à Code Compass.
Si vous souhaitez former des intégres pour d'autres langues, jetez un œil aux scripts sous import2vec pour avoir une idée des données requises.
Si vous avez des suggestions d'amélioration, des commentaires des utilisateurs ou si vous souhaitez signaler un bogue, veuillez ouvrir un problème dans ce référentiel.
Bsd3