/bsl-language-server

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

BSL Language Server

Build Status JitPack Quality Gate Maintainability Coverage

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

Возможности

  • Показ всплывающей информации по текущей процедуре
  • Диагностики
  • Запуск движка диагностик из командной строки

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

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

java -jar bsl-language-server.jar" --help
usage: BSL language server [-a] [-d <arg>] [-h] [-r <arg>] [-s <arg>]
 -a,--analyze                    Run analysis and get diagnostic info
 -d,--diagnosticLanguage <arg>   Language of diagnostic messages. Possible
                                 values: en, ru. Default is en.
 -h,--help                       Show help.
 -r,--reporter <arg>             Reporter key
 -s,--srcDir <arg>               Source directory

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

По умолчанию тексты диагностик выдаются на английском языке. Для переключения языка сообщений от движка диагностик используется параметр --diagnosticLanguage (сокращенно -d), за которым следует код языка:

java -jar bsl-language-server.jar --diagnosticLanguage ru

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

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

Доступные ключи репортеров:

  • json - вывод результата анализа в собственном формате JSON, поддерживаемым SonarQube 1C (BSL) Community Plugin;
  • console - вывод результата анализа в консоль;
  • tslint - вывод результата анализа в формате TSLint JSON.

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

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

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

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

ToDo

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

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

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

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