Быстрый старт
Поставить инструментарий, сгенерировать данные о языке из своего дистрибутива 1С:Элемент и получить первую проверку.
Что нужно, чтобы линтер начал отвечать на ваших исходниках: пакет, данные о языке из вашего дистрибутива и язык вывода.
Как всё устроено
Движок один, дотянуться до него можно тремя способами: редактор говорит с долгоживущим сервером, агент зовёт те же операции инструментами MCP, терминал запускает CLI. Исходники на диске – то, что все трое читают и пишут.
Дальше на этой странице – как до этого дойти: пакет, данные, язык вывода.
Подробности установки
pip install xbsl # или из клона репозитория: pip install -e .
xbsl путь/к/исходникам # или: python -m xbsl путь/к/исходникам
xbsl self-update # обновиться до последней версии с PyPI
self-update обновляет пакет распаковкой колеса прямо в site-packages – это безопасно,
даже когда pip install --upgrade падает с WinError 32 из-за занятых exe (типовой случай:
xbsl-lsp.exe держит LSP-сервер VS Code, xbsl-mcp.exe – MCP-сессию агента). Занятые
стабы не трогаются и при следующем запуске вызывают уже новый код; долгоживущие процессы
после обновления нужно перезапустить. --version X.Y.Z ставит конкретную версию.
В editable-установке из клона команда откажет – там обновляет git pull.
Горячие модули (лексер и парсер) могут компилироваться mypyc’ом в C-расширения:
XBSL_MYPYC=1 при сборке (нужны mypy и C-компилятор: Windows – MSVC Build Tools, macOS –
Xcode CLT, Linux – gcc). Пользователю компилятор не нужен: готовые нативные колёса собирает
CI (native-wheels.yml), а без подходящего колеса пакет работает обычным Python – без
компилятора и без потери функциональности.
Данные о языке
Линтер работает по таблицам языка (двуязычные ключевые слова, операторы), каталогу типов stdlib
и метамодели конфигурации (свойства элементов). XBSL реализован на Eclipse Xtext + ANTLR; эти
данные извлекаются из вашего дистрибутива 1С:Элемент (грамматика InternalBsl.g, документация
и метамодель .xcore) и в репозиторий НЕ включены. Сгенерируйте их локально:
xbsl extract --dist "<каталог дистрибутива 1С:Элемент>" # весь датасет разом
xbsl extract --dist ... --only stdlib,terms # подмножество шагов
xbsl extract --dist ... --skip docs # docs строит большой индекс
Команда прогоняет шесть экстракторов в правильном порядке (uischema читает результат docs);
из клона репозитория те же точки входа – python tools/extract.py и отдельные
tools/extract_<шаг>.py. Версию платформы экстракторы определяют сами и кладут данные в
xbsl/data/element/<версия>/ (каталог в .gitignore). Без данных линтер и тесты подскажут,
что их нужно сгенерировать. Ключ --data-dir (или env XBSL_DATA_DIR) кладёт данные в другое
место – например в закрытый пакет, который их и поставляет,
см. Расширение.
Язык вывода
Заголовки правил и тексты замечаний – на русском и английском. Язык выбирается так:
--lang ru|en > env XBSL_LANG > локаль системы > русский. Имена типов, ключевые слова и
прочий XBSL-текст внутри сообщения не переводятся – только формулировки вокруг них. MCP-сервер и
веб-панель подчиняются той же настройке (в веб-панели есть ещё переключатель RU/EN на странице).