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.9.tar.gz (349.9 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.9-py3-none-any.whl (370.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: onec_hbk_bsl_core-0.8.9.tar.gz
  • Upload date:
  • Size: 349.9 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.9.tar.gz
Algorithm Hash digest
SHA256 c4b7e3700c4398dbbdc6f412d1541937bf37f216c864810cdc6abcdf41302e37
MD5 2e49bf4dd19e129795a69ec3fa38d9a2
BLAKE2b-256 d27892cc0736e1b21f10f6d34fd5a1dc1ee086f434abab828b07e8df60115e6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for onec_hbk_bsl_core-0.8.9.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.9-py3-none-any.whl.

File metadata

File hashes

Hashes for onec_hbk_bsl_core-0.8.9-py3-none-any.whl
Algorithm Hash digest
SHA256 3d83e998a67c5bc37f251aaad72b1d44b02de846f7f881dd2361e0579bc5d2d5
MD5 766f889d5bf905be8189f85c33939d62
BLAKE2b-256 b573c86152232ee62d891c75bb9a12e57f9ff806e311f84a2b59371297034c1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for onec_hbk_bsl_core-0.8.9-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