Skip to main content

1C Enterprise BSL core formatter, diagnostics, LSP server, and CLI

Project description

1C HBK BSL

Инструменты для разработки на 1C Enterprise / BSL: расширение VS Code / Cursor, CLI-линтер, formatter, LSP-сервер и MCP-сервер для AI-агентов.

CI VS Marketplace PyPI License: MIT

Быстрый Гид

VS Code / Cursor

  1. Установите расширение mussolene.1c-hbk-bsl.
  2. Откройте проект с файлами .bsl / .os.
  3. Диагностики появятся в Problems, навигация и форматирование заработают через LSP.

Рекомендуемые настройки проекта:

{
  "[bsl]": {
    "editor.defaultFormatter": "mussolene.1c-hbk-bsl",
    "editor.formatOnSave": true,
    "editor.tabSize": 4,
    "editor.insertSpaces": false
  }
}

CLI / CI

uv tool install onec-hbk-bsl
onec-hbk-bsl check .
onec-hbk-bsl check . --format sarif > bsl-results.sarif
onec-hbk-bsl format . --check

Для GitHub Code Scanning загрузите SARIF:

- name: 1C HBK BSL
  run: |
    pip install onec-hbk-bsl
    onec-hbk-bsl check . --format sarif > bsl-results.sarif

- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: bsl-results.sarif

MCP

Обычная установка onec-hbk-bsl остается полной и включает MCP-зависимости для обратной совместимости. Для продуктовых пайплайнов, где нужны только formatter, diagnostics или Python API, используйте slim-пакет onec-hbk-bsl-core.

pip install onec-hbk-bsl
# slim-вариант без MCP:
pip install onec-hbk-bsl-core

onec-hbk-bsl mcp --stdio --workspace /path/to/project

Пакеты публикуются как два PyPI-дистрибутива:

Пакет Назначение
onec-hbk-bsl-core Реализация: formatter, diagnostics, Python API, CLI и LSP
onec-hbk-bsl Полный backwards-compatible метапакет поверх onec-hbk-bsl-core[mcp]

Что Входит

Поверхность Назначение
VS Code / Cursor Диагностики, навигация, hover, completion, rename, formatting, inlay hints
CLI check, format, SARIF/JSON/text output, baseline для постепенного внедрения
LSP Сервер для редакторов и локальных интеграций
MCP Входит в полный метапакет onec-hbk-bsl; для прямой установки core доступен extra onec-hbk-bsl-core[mcp]
Python API check_files(...) и диагностический движок для встраивания

onec-hbk-bsl не запускает Java-анализатор в рантайме. Совместимость с существующими BSL-практиками поддерживается там, где она полезна: например, комментарии // BSLLS-off/on в коде учитываются как suppression comments.

Конфигурация

Основной конфиг проекта: onec-hbk-bsl.toml.

# onec-hbk-bsl.toml
ignore = ["BSL012"]
exclude = ["vendor", "build", "*.gen.bsl"]
format = "text"
jobs = 0

[per-file-ignores]
"legacy/*.bsl" = ["BSL002", "BSL011"]

Также поддерживается секция [tool."onec-hbk-bsl"] в pyproject.toml. Явные CLI-флаги имеют приоритет над конфигом.

Идентификаторы правил:

  • BSL### — стабильный код onec-hbk-bsl для вывода, --select, --ignore, onec-hbk-bsl.toml и // noqa: BSL###.
  • BSLLS key — совместимое имя диагностики из семантики BSL Language Server, например LineLength или ConsecutiveEmptyLines.
  • CLI и конфиг принимают оба вида, но выводят BSL###.
  • Нумерация не обязана быть сплошной: отсутствующий номер, например BSL053, не является правилом, если его нет в справочнике.

Полный справочник: docs/diagnostic-rules.md.

Подавление в коде:

Пароль = "dev_only";  // noqa: BSL012
// BSLLS:MethodSize-off

Основные Команды

# Линтинг
onec-hbk-bsl check .
onec-hbk-bsl check . --select BSL001,BSL012
onec-hbk-bsl check . --ignore BSL014

# CI / отчеты
onec-hbk-bsl check . --format json
onec-hbk-bsl check . --format sarif > bsl-results.sarif
onec-hbk-bsl check . --exit-zero

# Gradual adoption
onec-hbk-bsl check . --update-baseline bsl-baseline.json
onec-hbk-bsl check . --baseline bsl-baseline.json

# Форматирование
onec-hbk-bsl format .
onec-hbk-bsl format . --check

# Серверы и индекс
onec-hbk-bsl lsp
onec-hbk-bsl mcp --stdio --workspace /path/to/project
onec-hbk-bsl index /path/to/project

Полная классификация публичных, CI и внутренних команд: docs/public-surface.md.

Python API

from onec_hbk_bsl import check_files

diagnostics = check_files(["src/Модуль.bsl"], jobs=1)
for diagnostic in diagnostics:
    print(diagnostic.code, diagnostic.file, diagnostic.line)

Документация

Документ Для чего
docs/public-surface.md Публичный контракт CLI, API, VS Code и MCP
docs/diagnostic-rules.md Справочник правил: BSL###, BSLLS key, RU/EN описание, severity и tags
docs/architecture.md Архитектура сервера, индекса и анализатора
docs/Production-Notes.md Эксплуатация, релизы, проверки
docs/metadata_registry.md Метаданные конфигураций 1С
docs/THIRD_PARTY_NOTICES.md Лицензии и источники данных

Разработка

git clone https://github.com/mussolene/1c_hbk_bsl
cd 1c_hbk_bsl
make install
make lint
make test
make build

Для локальной сборки VSIX используйте make vsix, чтобы в расширение попал актуальный бинарник.

Лицензия

MIT © 2024 1C HBK BSL Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

onec_hbk_bsl_core-0.8.7.tar.gz (348.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

onec_hbk_bsl_core-0.8.7-py3-none-any.whl (369.6 kB view details)

Uploaded Python 3

File details

Details for the file onec_hbk_bsl_core-0.8.7.tar.gz.

File metadata

  • Download URL: onec_hbk_bsl_core-0.8.7.tar.gz
  • Upload date:
  • Size: 348.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for onec_hbk_bsl_core-0.8.7.tar.gz
Algorithm Hash digest
SHA256 a67e918c3b535137b77798a8adbed9d97009ea5606909235ad0108fc7998399b
MD5 81dc2f6af035fc018f7291769ac56c87
BLAKE2b-256 0843af733030b59245f653d4c68966f33bafcacc932fab6299c7d896b94aee28

See more details on using hashes here.

Provenance

The following attestation bundles were made for onec_hbk_bsl_core-0.8.7.tar.gz:

Publisher: release.yml on mussolene/1c_hbk_bsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file onec_hbk_bsl_core-0.8.7-py3-none-any.whl.

File metadata

File hashes

Hashes for onec_hbk_bsl_core-0.8.7-py3-none-any.whl
Algorithm Hash digest
SHA256 19a6da37f51cb512a399a3ac8570889c77811f02142f4558740aaea81a1688de
MD5 e766964f7fd4a6e9f89a4af64c42166a
BLAKE2b-256 545c7a9679ad4d77697c7de6f0891eb7bb2ebf13b1f2257534f6f006447ab3ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for onec_hbk_bsl_core-0.8.7-py3-none-any.whl:

Publisher: release.yml on mussolene/1c_hbk_bsl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page