Code Compass ist eine kontextbezogene Suchmaschine für Softwarepakete, die bei Nokia Bell Labs entwickelt wurden. Es wird die Wiederverwendung von Code -Wiederverwendung durch die Empfehlung der bestmöglichen Softwarebibliotheken für Ihr spezifisches Softwareprojekt empfohlen. Überzeugen Sie sich selbst:

Code Compass ist als Website, eine REST-API und als IDE-Plug-In für VSCODE verfügbar.
Wir indexieren Pakete auf NPM für JavaScript, PYPI für Python und Maven Central für Java.
Wenn Sie nach dem ähnlich benannten Code -Verständnis -Tool von Ericsson suchen, um große Codebasen zu erkunden, schauen Sie sich hier an. Abgesehen vom Namen gibt es keine Beziehung (formell oder informell) zwischen diesem und diesem Projekt.
Die moderne Softwareentwicklung basiert auf Open -Source -Bibliotheken und Frameworks. Diese Bibliotheken werden in Softwarepaket -Repositories veröffentlicht, die exponentiell wachsen. Durch Erstellen besserer Software -Paket -Such -Tools wollen wir mehr Code -Wiederverwendung stimulieren und Softwarepakete im "Long Tail" auffindbarer erstellen.
Eine sanfte Einführung in das Warum, Was und Wie von Code Compass finden Sie in diesem einführenden Blog -Beitrag.
Code Compass ist eine kontextbezogene Suchmaschine für Softwarepakete.
Code Compass unterscheidet sich von anderen Paketsuchmaschinen, die die Suche mit Namen von Bibliotheken, die Sie bereits kennen oder verwenden, "säen" können. Wir nennen diese "Kontextbibliotheken". Code Compass verwendet diese Kontextbibliotheken dann, um die Suche in diesen Technologiestapeln zu "verankern", die für Ihren Code am relevantesten sind.
Bei Verwendung der Visual Studio Code IDE -Erweiterung müssen keine Kontextbibliotheken manuell eingeben: Code Compass extrahiert automatisch die Importabhängigkeiten der aktiven Quelldatei, um die Suche zu verankern.
Beachten Sie, dass Code Compass Ihren Code niemals an den Server sendet. Es werden nur die Namen der in Ihrem Code importierten Drittanbietermodule gesendet.
Code Compass verwendet unbeaufsichtigtes maschinelles Lernen, um zu lernen, wie man ähnliche Softwarepakete nach ihrem Gebrauchskontext clustern, wie Bibliotheken zusammen mit anderen Bibliotheken in großen Open -Source -Codebasen importiert werden.
Softwarepakete werden als Vektoren dargestellt, die wir "Bibliotheksvektoren" durch Analogie mit Wortvektoren nennen. Genau wie Word2VEC Wörter in Vektoren verwandelt, indem analysiert, wie Wörter in großen Textkorpora miteinander antreten, verwandelt unsere "Import2Vec" Bibliotheken in Vektoren, indem sie analysieren, wie Importanweisungen in großen Codebasen Co-Occur in großen Codebasen mitnehmen.
Sie können die Details in unserem MSR 2019 -Papier lesen. Zusätzliches Material einschließlich geschulter Bibliotheksbettungen für Java, JavaScript und Python finden Sie auf Zenodo.
Zum Beispiel haben wir uns für Java eine große Anzahl von Open -Source -Projekten auf Github und Bibliotheken auf Maven Central angesehen und untersucht, wie Bibliotheken in diesen Projekten importiert werden. Wir haben große Cluster von Projekten identifiziert, die sich auf Web -Frameworks, Cloud Computing, Netzwerkdienste und Big -Data -Analysen beziehen. Bekannte Projekte wie Apache Hadoop, Spark und Kafka wurden alle in dieselbe Region zusammengefasst, da sie üblicherweise zusammen verwendet werden, um Big Data Analytics zu unterstützen.
Unten finden Sie eine 3D-Visualisierung (eine T-SNE-Handlung) des gelehrten Vektorraums für Java. Jeder Punkt repräsentiert eine Java -Bibliothek und die verschiedenen farbigen Cluster entsprechen verschiedenen Nischenbereichen, die in den Daten entdeckt wurden. Wir haben die Namen von Apache -Projekten hervorgehoben.

docs/ : REST -API -DOCS für den Code -Kompass -Suchdienstplugins/vscode/ : Visual Studio -Code -Erweiterung, um Codekompass in die IDE zu integrierenscripts/ : Datenextraktionskripte zum Generieren von Bibliotheken importieren Co-Erscheinungen aus dem Quellcodenbs/ : Jupyter-Notizbücher mit Tensorflow-Modellen, um Bibliotheksbettendings aus Importdaten zu trainierenCode Compass wurde von einem Forschungsteam in den Anwendungsplattformen und dem Softwaresystemlabor von Nokia Bell Labs entwickelt.
Sehen Sie die Mitwirkenden für eine alphabetische Liste von Mitwirkenden für Code Compass.
Wenn Sie Einbettungen für andere Sprachen trainieren möchten, sehen Sie sich die Skripte unter import2vec an, um eine Vorstellung davon zu erhalten, welche Daten erforderlich sind.
Wenn Sie Vorschläge für Verbesserungen, Benutzer -Feedback haben oder einen Fehler melden möchten, öffnen Sie bitte ein Problem in diesem Repository.
BSD3