/bsl-language-server

Реализация Language Server Protocol для языка 1C (BSL)

Primary LanguageJavaOtherNOASSERTION

BSL Language Server

Actions Status Download JitPack GitHub Releases GitHub All Releases Quality Gate Maintainability Coverage Benchmark telegram

Реализация протокола language server protocol для языка 1C (BSL) - языка 1С:Предприятие 8 и OneScript.

Сайт проекта - https://1c-syntax.github.io/bsl-language-server

Замеры производительности - SSL 3.1

English version

Возможности

  • Форматирование файла
  • Форматирование выбранного диапазона
  • Определение символов текущего файла (области, процедуры, функции, переменные, объявленные через Перем)
  • Определение сворачиваемых областей - #Область, #Если, процедуры и функции, блоки кода
  • Показ когнитивной сложности метода
  • Диагностики
  • "Быстрые исправления" (quick fixes) для ряда диагностик
  • Запуск движка диагностик из командной строки
  • Запуск форматирования файлов в каталоге из командной строки

Запуск из командной строки

Запуск jar-файлов осуществляется через java -jar path/to/file.jar.

java -jar bsl-language-server.jar --help

BSL language server
Usage: bsl-language-server [-h] [-c=<path>] [COMMAND [ARGS]]
  -c, --configuration=<path>
               Path to language server configuration file
  -h, --help   Show this help message and exit
Commands:
  analyze, -a, --analyze  Run analysis and get diagnostic info
  format, -f, --format    Format files in source directory
  version, -v, --version  Print version
  lsp, --lsp              LSP server mode (default)

При запуске BSL Language Server в обычном режиме будет запущен сам Language Server, взаимодействующий по протоколу [LSP](language server protocol). Для взаимодействия используются stdin и stdout.

По умолчанию тексты диагностик выдаются на русском языке. Для переключения языка сообщений от движка диагностик необходимо настроить параметр diagnosticLanguage в конфигурационном файле или вызвав событие workspace/didChangeConfiguration:

Запуск в режиме анализатора

Для запуска в режиме анализа используется параметр --analyze (сокращенно -a).

Usage: bsl-language-server analyze [-hq] [-c=<path>] [-o=<path>] [-s=<path>]
                                   [-r=<keys>]...
Run analysis and get diagnostic info
  -c, --configuration=<path>
                           Path to language server configuration file
  -h, --help               Show this help message and exit
  -o, --outputDir=<path>   Output report directory
  -q, --silent             Silent mode
  -r, --reporter=<keys>    Reporter key (console, junit, json, tslint, generic)
  -s, --srcDir=<path>      Source directory
  -w, --workspaceDir=<path> 
                           Workspace directory

Для указания каталога расположения анализируемых исходников используется параметр --srcDir (сокращенно -s), за которым следует путь (относительный или абсолютный) к каталогу исходников. Для формирования отчета об анализе требуется указать один или "репортеров". Для указания репортера используется параметр --reporter (сокращенно -r), за которым следует ключ репортера. Допустимо указывать несколько репортеров. Список репортетов см. в разделе Репортеры.

Пример строки запуска анализа:

java -jar bsl-language-server.jar --analyze --srcDir ./src/cf --reporter json

При анализе больших исходников рекомендуется дополнительно указывать параметр -Xmx, отвечающий за предел оперативной памяти для java процесса. Размер выделяемой памяти зависит от размера анализируемой кодовой базы.

java -Xmx4g -jar bsl-language-server.jar ...остальные параметры

Запуск в режиме форматтера

Для запуска в режиме форматтера используется параметр --format (сокращенно -f).

Usage: bsl-language-server format [-hq] [-s=<path>]
Format files in source directory
  -h, --help            Show this help message and exit
  -q, --silent          Silent mode
  -s, --srcDir=<path>   Source directory

Для указания каталога расположения форматируемых исходников используется параметр --srcDir (сокращенно -s), за которым следует путь (относительный или абсолютный) к каталогу исходников.

Пример строки запуска форматирования:

java -jar bsl-language-server.jar --format --srcDir ./src/cf

Благодарности

Огромное спасибо всем контрибьюторам проекта, всем участвовавшим в обсуждениях, помогавшим с тестированием.

Вы потрясающие!

Спасибо компаниям, поддерживающим проекты с открытым исходным кодом, а особенно тем, кто поддержали нас:


YourKit

Создатель инновационных и интеллектуальных инструментов для профилирования приложений Java и .NET YourKit, LLC любезно предоставил нам лицензии на продукт YourKit Java Profiler.

С помощью YourKit Java Profiler мы мониторим и улучшаем производительность проекта.


JetBrains

Создатель профессиональных инструментов разработки программного обеспечения, инновационных и мощных, JetBrains поддержал наш проект, предоставив лицензии на свои продукты, в том числе на IntelliJ IDEA Ultimate.

IntelliJ IDEA Ultimate один из лучших инструментов в своем классе.

ToDo

После реализации построения контекста:

  • Автодополнение методов текущего модуля
  • Автодополнение контекстных методов (конфигурация 1С и OneScript)
  • Сигнатура функций
  • Подробная всплывающая подсказка по методам
  • Переход к определению
  • Поиск мест использования
  • Предпросмотр определения процедуры
  • Поиск определения по символу

Дополнительно:

  • Автодополнение методов глобального контекста