Платформа Sourcegraph переведена (https://about.sourcegraph.com/blog/sourcegraph-is-now-open-s.../) в разряд открытых проектов. Sourcegraph предоставляет движок для навигации по исходным текстам и поиска определённых конструкций в коде. Проект состоит из серверной части и web-интерфейса, а также браузерного дополнения (https://chrome.google.com/webstore/detail/sourcegraph/dgjhfo...) для интеграции с GitHub.com. Код написан на языках Go и JavaScript (Node.js). Для хранения данных используется PostgreSQL, а для хранения сеансов Redis. Код открыт (https://github.com/sourcegraph/sourcegraph) под лицензией Apache 2.0.Sourcegraph может применяться как самодостаточная платформа для рецензирования и навигации по исходным текстам, размещённым в Git-репозиториях. Например, имеется возможность анализа произвольного вызова функции и перехода к месту её определения, просмотра других вызовов этой функции в коде, истории изменений, связанных с функций обсуждений, документации и сообщений об ошибках. Sourcegraph также предоставляет гибкие средства поиска ссылок и всплывающие подсказки по использованию различных объектов.
Поддерживается анализ кода на 19 языках и модули интеграции с GitHub.com, GitHub Enterprise, Bitbucket Server и Phabricator. Возможно подключение внешних серверных обработчиков для разбора семантики языка и статического анализа кода, поддерживающих протокол LSP (Language Server Protocol). Для интеграции со сторонними инструментами разработки предоставляется Sourcegraph Extension API.
В состав серверной части входят (https://github.com/sourcegraph/sourcegraph/blob/master/docs/...):
- Cервисы для обеспечения работы фронтэнда (web-интерфейса);
- Прокси для интеграции с GitHub;
- Git-сервер для зеркалирования репозиториев на своём хосте;
- Индексатор для построения поискового индекса на основании содержимого репозитория с учётом семантики кода на разных языках;
- Lsp-proxy для взаимодействия с LSP-модулями для разбора кода на разных языках программирования (имеются собственные модули для Go, Java, TypeScript/JavaScript, Python и PHP);
- query-runner для выполнения проверочных поисковых запросов и отправки уведомлений;
- Repo-updater для отслеживания актуальности репозитория и его обновления при необходимости;
- Searcher для поиска в git-архиве;
- Indexed-search/zoekt (https://github.com/google/zoekt) для поиска с привлечением предварительно построенного индекса;
- Symbols для индексации с учётом обработки в Ctags;- Syntect для обеспечения подсветки синтаксиса;
- Модули для интеграции с редакторами кода и интегрированными средами разработки.
Проект вместо проприетарного продукта теперь будет развиваться в соответствии с моделью OpenCore, которая подразумевает наличие открытой базовой части с поставкой дополнительной функциональности в виде платных редакций. Например, среди возможностей, доступных только в платной версии, упоминаются (https://about.sourcegraph.com/pricing/) поддержка механизма единой аутентификации (SSO), кластеризация, навигация с охватом разных репозиториев, поддержка внешних СУБД и расширенная система логов.URL: https://about.sourcegraph.com/blog/sourcegraph-is-now-open-s.../
Новость: https://www.opennet.dev/opennews/art.shtml?num=49382
Ура! Годный сервис, юзаем в команде из двух трех =) .
трех человек
четверых человек
Трёх-Черверёх
Кто мы? Мы команда! Сколько нас? Нас ¾ человека!
> Нас ¾ человека!это человек, который закончил учебу. Есть все кроме опыта работы.
2/3 ?
Так мало? Даже на одного не хватило? =))
> 2/3 ?
> Так мало? Даже на одного не хватило? =))Юзает тем, во что еще иногда едят.
А код пишется немного другим местом.
Кто из них человек-разумный и гамадрил?
>Код написан на языках Go и JavaScript (Node.js).Зачем туда было ноду пихать, если использовали Go? Они бы ещё туда php запихали для большей солянки.
Пых не модно и молодежно.
> Пых не модно и молодежно.но rust в этой конструкции явно не хватает!
Если только всё переписать на Rust.
Если внимательно посмотреть код, то можно понять что это web-сервис. Nodejs используется для сборки TypeScript+React - в общем это frontend проекта, а не backend как было указано в статье...
Я, конечно, понимаю, что инструмент для мало-мальски серьёзного проекта (когда большой объём кода и куча сторонних либ) нужный, но парадигма "навалим кучу навоза, а потом создадим специальную волшебную лопату чтобы в ней копаться" как-то не очень нравится.
Вы наверно всегда правильно проектируете и код пишете, все предусматриваете.
Прикинь! ))
При чём здесь "правильно" или "неправильно"? Ядро linux правильно написано? Допустим, что да (если нет, выбери любой другой проект сравнимого размера, который написан правильно). Попробуй разобраться в нём без специализированной лопаты. Вот возьми /bin/more и попробуй разобраться.Экскаваторы изобрели вместо лопаты не потому, что теперь приходится копать более сложный грунт, их изобрели потому, что теперь приходится вынимать большие объёмы грунта. То же самое касается и средств разработки, таких как IDE, VCS и всяких там sourcegraph, для которых ещё не придумали категории с трёхбуквенной аббревиатурой.
>Node.jsЕщё Electron очень не хватает для полного счастья.
Не смешно.
Нода предоставляет отличный скриптовый язык для серверов (как Питон, например).
Однопоточный с реализацией всего через дополнения, которые через 5 лет сгинут в небытие. Нет, лучше питон.
Потому что для многих юзкейсов хватает хорошей асинхронности.
Но многопоточка тоже есть https://nodejs.org/api/worker_threads.html
Настолько отличный, что создатель node.js теперь открещивается от неё?)
Где?) Там речь была всего лишь о том, что "я бы DNS писать на ноде не стал бы". Но каждому инструменту свои задачи. Иногда и на чистом C есть смысл писать серверную часть.
А так, Go как полноценный язык - ну сильно такое себе, если честно. А JS работает на клиенте, работает на сервере, работает быстро - что еще для счастья надо?
Всё это полумеры, для счастья нужен Rust. Скоро и js из браузера выпихнем Wasm.
Скриптовый язык и нативные вставки "где надо" - оптимальное решение между скоростью разработки и просто скоростью
Это всё полумеры.
Только компилирумый - тоже не лучший вариант. По крайней мере, в контексте раста
https://gitlab.com/gitlab-org/gitlab-ce/issues/41925 - issue по интеграции sourcegraph в GitLab
Нифига не понял для чего эта шиука
заходишь на какую-нибудь репу на github, или bitbucket, или phabricator. Видишь там функцию в коде, щелкаешь на ней правой кнопкой, появляется меню с пунктами "go to definition" и т.п. Причем этот definition может быть вообще в другой репе.
Ух ты, годнота! Интересно, можно её приспособить как IDE к текстовому редактору, т.е. индексировать локальную дельту? Всегда мечтал вынести тяжёлые функции индексации кода на внешний сервис.
Если бы они это сделали в консоли без джаваскрипт приблуд, то было бы интересно.