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.6.tar.gz (348.0 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.6-py3-none-any.whl (368.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: onec_hbk_bsl_core-0.8.6.tar.gz
  • Upload date:
  • Size: 348.0 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.6.tar.gz
Algorithm Hash digest
SHA256 9b89fc662a750cb9a88b41fd2f0b1711731225191d2d7c1eb9842b41503b5fad
MD5 0b7eaf3dd33423e0f8a98eea7b50b748
BLAKE2b-256 1152546fe4bc75bb97a75ab8d91308d6638bdde0f74cbec952a5d3e4ea728c1e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for onec_hbk_bsl_core-0.8.6-py3-none-any.whl
Algorithm Hash digest
SHA256 deba0fa5539a5f67b2777fb434503f3c00a42366c29aacd7261ac2d66f13435b
MD5 9e85cf07cf6f369f42f41797dd25c89b
BLAKE2b-256 54bd957ebbf6f2eaa292a8296e424759846e85a4341d07ba1261cf10f06fdfa4

See more details on using hashes here.

Provenance

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