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

Uploaded Python 3

File details

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

File metadata

  • Download URL: onec_hbk_bsl_core-0.8.8.tar.gz
  • Upload date:
  • Size: 349.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.8.tar.gz
Algorithm Hash digest
SHA256 5af2ae352be0c2bbaa53c18d24509b4804d2444006b7a0975839ce74b5d9901c
MD5 1995aea142ce6e09e073b934c060988c
BLAKE2b-256 f2bd8aa62f2640224920c1d7d7fabfd2044f658d5e34070f543c66f3a3929db2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for onec_hbk_bsl_core-0.8.8-py3-none-any.whl
Algorithm Hash digest
SHA256 799301377ba14e62440bd5c068369ce3116853943ccf7bad753992ffd7800de1
MD5 1cfd326c00a530d4e536670b29bc301c
BLAKE2b-256 94909e58a6ae6709f28794fdf896b7f68634e229224341cf4419d40de2c5b054

See more details on using hashes here.

Provenance

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