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.12.tar.gz (351.2 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.12-py3-none-any.whl (372.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: onec_hbk_bsl_core-0.8.12.tar.gz
  • Upload date:
  • Size: 351.2 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.12.tar.gz
Algorithm Hash digest
SHA256 27794cacbfc869510553f80d8cacd50cf60a0169e6db08385f3e45ed678d21c8
MD5 4251c83c0736003fa1d7df541f207cde
BLAKE2b-256 c2e9a9e20000dae646d503abbde648177edc3f8876b663286929f3ec14a6291b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for onec_hbk_bsl_core-0.8.12-py3-none-any.whl
Algorithm Hash digest
SHA256 00bbc4a909f388d5eabdaec4886c18e4a9df079d9e6805e39ef39c3006d5890d
MD5 0a8f2468d23244b34ee6ad26cb1a22f3
BLAKE2b-256 f1905750351065a410513f2a916086f3706e36c83158059f9455fe3d318c0c56

See more details on using hashes here.

Provenance

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