Code Compass - это контекстуальная поисковая система для программных пакетов, разработанных в Nokia Bell Labs. Он нагнетает повторное использование кода, рекомендуя наилучшие возможные библиотеки программного обеспечения для вашего конкретного программного проекта. Смотрите сами:

Code Compass доступен в качестве веб-сайта, API REST и как плагин IDE для VSCODE.
Мы индексируем пакеты, размещенные на NPM для JavaScript, PYPI для Python и Maven Central для Java.
Если вы ищете аналогичный инструмент понимания кода от Ericsson для изучения больших кодовых баз, посмотрите здесь. Помимо названия, между этим проектом и этим нет никаких отношений (формальных или неформальных).
Современная разработка программного обеспечения основана на повторном использовании кода через библиотеки и фреймворки с открытым исходным кодом. Эти библиотеки опубликованы в репозиториях программного пакета, которые растут по экспоненциальной ставке. Создавая лучшие инструменты поиска программного обеспечения, мы стремимся стимулировать большее повторное использование кода и сделать программные пакеты в «длинном хвосте» более обнаруженным.
Нежное введение в «Почему», что и как Code Compass можно найти в этом вводном сообщении в блоге.
Code Compass - это контекстная поисковая система для программных пакетов.
Code Compass отличается от других поисковых систем пакетов в том, что вы можете «посетить» поиск с именами библиотек, которые вы уже знаете или используете. Мы называем эти «контекстные библиотеки». Затем Code Compass использует эти контекстные библиотеки для «закрепления» поиска в тех технологических стеке, которые наиболее актуальны для вашего кода.
При использовании расширения Visual Studio Code IDE нет необходимости вводить вручную контекстные библиотеки: Code Compass автоматически извлечет импортные зависимости активного исходного файла, чтобы закрепить его поиск.
Обратите внимание, что Code Compass никогда не отправит ваш код на сервер. Только имена сторонних модулей, импортируемых в вашем коде, отправляются.
Code Compass использует неконтролируемое машинное обучение, чтобы узнать, как класса аналогичные программные пакеты по контексту использования, как определено тем, как библиотеки импортируются вместе с другими библиотеками в больших кодовых базах с открытым исходным кодом.
Программные пакеты представлены как векторы, которые мы называем «векторами библиотеки» по аналогии с векторами слов. Точно так же, как Word2VEC превращает слова в векторы, анализируя, как слова совпадают в крупных текстовых корпусах, наши «import2VEC» превращают библиотеки в векторы, анализируя, как операторы импорта совпадают в крупных кодовых базах.
Вы можете прочитать детали в нашей статье MSR 2019. Дополнительный материал, включающий в себя обученные библиотеки для Java, JavaScript и Python, доступен на Zenodo.
Например, для Java мы рассмотрели большое количество проектов с открытым исходным кодом на GitHub и библиотеках на Maven Central и изучили, как библиотеки импортируются в этих проектах. Мы определили большие кластеры проектов, связанных с веб -структурами, облачными вычислениями, сетевыми службами и аналитикой больших данных. Хорошо известные проекты, такие как Apache Hadoop, Spark и Kafka, были сгруппированы в одну и ту же регион, потому что они обычно используются вместе для поддержки аналитики больших данных.
Ниже приведена 3D-визуализация (сюжет T-SNE) изученного векторного пространства для Java. Каждая точка представляет библиотеку Java, а различные цветные кластеры соответствуют различным нишевым областям, которые были обнаружены в данных. Мы выделили имена проектов Apache.

docs/ : REST API DOCS для службы поиска CODE Compassplugins/vscode/ : расширение кода Visual Studio для интеграции CODE Compass в IDEscripts/ : сценарии извлечения данных для генерации библиотечных коэффициентов импорта из исходного кодаnbs/ : NOPYTER Notebooks с моделями TensorFlow для обучения библиотечных встраиваний из данных об импортеCode Compass разрабатывается исследовательской группой на платформах приложений и лаборатории программных систем Nokia Bell Labs.
См. Участники для алфавитного списка участников Code Compass.
Если вы хотите обучать встраивания для других языков, посмотрите на сценарии в соответствии с import2vec , чтобы получить представление о том, какие данные требуются.
Если у вас есть предложения по улучшению, обратной связи с пользователями или вы хотите сообщить об ошибке, откройте проблему в этом репозитории.
BSD3