Открыты исходные тексты Sourcegraph

Платформа Sourcegraph переведена в разряд открытых проектов. Sourcegraph предоставляет движок для навигации по исходным текстам и поиска определённых конструкций в коде. Проект состоит из серверной части и web-интерфейса, а также браузерного дополнения для интеграции с GitHub.com. Код написан на языках Go и JavaScript (Node.js). Для хранения данных используется PostgreSQL, а для хранения сеансов Redis. Код открыт под лицензией Apache 2.0.

Sourcegraph может применяться как самодостаточная платформа для рецензирования и навигации по исходным текстам, размещённым в Git-репозиториях. Например, имеется возможность анализа произвольного вызова функции и перехода к месту её определения, просмотра других вызовов этой функции в коде, истории изменений, связанных с функций обсуждений, документации и сообщений об ошибках. Sourcegraph также предоставляет гибкие средства поиска ссылок и всплывающие подсказки по использованию различных объектов.

Поддерживается анализ кода на 19 языках и модули интеграции с GitHub.com, GitHub Enterprise, Bitbucket Server и Phabricator. Возможно подключение внешних серверных обработчиков для разбора семантики языка и статического анализа кода, поддерживающих протокол LSP (Language Server Protocol). Для интеграции со сторонними инструментами разработки предоставляется Sourcegraph Extension API.

В состав серверной части входят:

  • Cервисы для обеспечения работы фронтэнда (web-интерфейса);
  • Прокси для интеграции с GitHub;
  • Git-сервер для зеркалирования репозиториев на своём хосте;
  • Индексатор для построения поискового индекса на основании содержимого репозитория с учётом семантики кода на разных языках;
  • Lsp-proxy для взаимодействия с LSP-модулями для разбора кода на разных языках программирования (имеются собственные модули для Go, Java, TypeScript/JavaScript, Python и PHP);
  • query-runner для выполнения проверочных поисковых запросов и отправки уведомлений;
  • Repo-updater для отслеживания актуальности репозитория и его обновления при необходимости;
  • Searcher для поиска в git-архиве;
  • Indexed-search/zoekt для поиска с привлечением предварительно построенного индекса;
  • Symbols для индексации с учётом обработки в Ctags;
  • Syntect для обеспечения подсветки синтаксиса;
  • Модули для интеграции с редакторами кода и интегрированными средами разработки.

Проект вместо проприетарного продукта теперь будет развиваться в соответствии с моделью OpenCore, которая подразумевает наличие открытой базовой части с поставкой дополнительной функциональности в виде платных редакций. Например, среди возможностей, доступных только в платной версии, упоминаются поддержка механизма единой аутентификации (SSO), кластеризация, навигация с охватом разных репозиториев, поддержка внешних СУБД и расширенная система логов.

10/02/2018 13:05:01
0

комментарии (0)