github 1c-syntax/bsl-language-server v0.20.0

latest releases: v0.24.0-rc.1, v0.23.1, v0.23.1-rc.1...
2 years ago

Общие изменения

  • Добавлена поддержка Java 17 при сборке проекта;
  • Снижено потребление оперативной памяти, занимаемой данными конфигурации и внутренними кэшами BSL Language Server;
  • Во всплывающую подсказку по методам и переменным добавлена гиперссылка на модуль, в котором описан метод;
  • Окно с описанием, появляющееся при наведении на любой метод, сделано более информативным;
  • В методах с аннотацией &ИзменениеИКонтроль реализовано игнорирование диагностик, срабатывающих на коде вне директив #Вставка-#КонецВставки;
  • Добавлена возможность фильтровать срабатывания диагностик по подсистемам.

Изменения в поддержке LSP протокола

  • Добавлена обработка запроса codeLens/resolve. Все линзы теперь возвращаются "не-разрешенными";
  • Добавлена отправка запроса codeLens/refresh после обновления конфигурационного файла (если клиент поддерживает эту операцию).

Изменения в работе форматирования

  • При запуске форматирования из командной строки, добавлена возможность указать несколько файлов сразу (перечисление через запятую);
  • Добавлена возможность приводить ключевые слова к каноническому виду.

Новые диагностики

Изменения в существующих диагностиках

  • LineLength - добавлен параметр checkMethodDescription, позволяющий отключить работу диагностики в описаниях методов;
  • MissingReturnedValueDescription - добавлен параметр allowShortDescriptionReturnValues, управляющий необходимостью полного описания возвращаемого значения функции;
  • NestedFunctionInParameters - добавлен параметр allowOneliner, позволяющий отключить срабатывание диагностики в методах-однострочниках;
  • SpaceAtStartComment - добавлен параметр useStrictValidation, позволяющий разрешить закомментированный комментарий;
  • RedundantAccessToObject - исправлено избыточное обращение по имени к общему модулю с повторным использованием значений;
  • CompilationDirectiveLost - теперь анализ игнорирует модули обычных форм;
  • OneStatementPerLine - исправлены ложные срабатывания с Ждать;
  • SemicolonPresence - исправлены ложные срабатывания с Ждать;
  • UsageWriteLogEvent - учтено использование КраткоеПредставлениеОшибки, диагностика переименована из WriteLogEvent в UsageWriteLogEvent;
  • CodeAfterAsyncCall - учтено использование Возврат,Прервать;
  • UsingSynchronousCalls - оптимизирована работа диагностики;
  • UnknownPreprocessorSymbol - исправлены ложные срабатывания на директиве МобильныйАвтономныйСервер;
  • CommonModuleMissingAPIDiagnostic - важность диагностики понижена с Major до Minor;
  • UsingSynchronousCallsDiagnostic - оптимизирована производительность;
  • QueryParseError - исправлены ложные срабатывания диагностики на строковых литералах не являющихся текстом запроса;
  • NonExportMethodsInApiRegionDiagnostic - добавлен параметр для пропуска проверки расширенных методов;
  • NestedFunctionInParametersDiagnostic - теперь глобальные методы НСтр и ПредопределенноеЗначение считаются допустимыми для использования в качестве параметров методов и конструкторов.
    Для управления списком глобальных методов разрешенных для использования, добавлен новый параметр.

Скорректированы описания диагностик

Исправленные общие ошибки

  • Исправлены периодические падения при анализе конфигурации из-за дублирования узлов дерева разбора;
  • Исправлены периодические падения при анализе конфигурации из-за наличия переменных с одинаковым именем;
  • Исправлена ошибка не-сброса конфигурации BSL Language Server до дефолтных значений при удалении конфигурационного файла .bsl-language-server.json;
  • Исправлена ошибка, приводившая к двойному расчету метаданных конфигурации.

Обновление значимых зависимостей

  • встроенный словарь Language Tool обновлен до версии 5.6;
  • MDClasses обновлен до версии 0.9.5;
  • BSL Parser обновлен до версии 0.21.0.

Изменения для разработчиков

  • SymbolTree в DocumentContext больше не является lazy-полем. Оно хранится всегда и рассчитывается синхронно в момент вызова DocumentContext#rebuild;
  • В ReferenceIndex добавлено хранение данных об используемых переменных и параметрах методов;
  • В Reference добавлено поле OccurrenceType occurrenceType для хранения типа обращения к символу в ссылке;
  • Добавлен абстрактный класс диагностики AbstractMetadataDiagnostic для упрощения написания диагностик на метаданные, позволяющий зарегистрировать диагностику на модуль метаданного или модуль сеанса, в случае отсутствия модуля метаданного;
  • Добавлен абстрактный класс диагностики AbstractSDBLListenerDiagnostic для создания диагностик для языка запросов в listener-стиле;
  • Смена площадки переводов на английский язык. BSL Language Server теперь переводится на Transifex;
  • Добавлен компонент ClientCapabilitiesHolder для хранения данных возможностей, приходящих от language client;
  • Добавлен компонент LanguageClientHolder для получения ссылки на подключенный language client;
  • Рефакторинг механизма code lens. Добавлена поддержка хранения data для отправляемой code lens и последующего асинхронного разрешения линзы. См. обновленный интерфейс CodeLensSupplier и DTO CodeLensData;
  • Ranges#getFirstSignificantTokenRange объявлен устаревшим и будет удален. Вместо него можно использовать ModuleSymbol#getSelectionRange;
  • В VariableSymbol добавлено поле SourceDefinedSymbol scope, для хранения области доступности переменной (метод или модуль).

Изменения в конфигурации сервера

  • BREAKING CHANGE: Изменен формат конфигурирования линз кода (code lens). Включение и конфигурирование каждой линзы теперь производится по аналогии с конфигурированием диагностик, через секцию codeLens -> parameters;
  • Добавлен новый блок настроек для форматирования через секцию formatting;
  • Для линз когнитивной и цикломатической сложностей добавлены параметры для указания порога срабатывания и показа линзы;
  • Добавлен поиск "глобального" конфигурационного файла .bsl-language-server.json в %HOMEPATH%. Глобальный конфигурационный файл используется, если не был передан "локальный" конфигурационный файл конкретного проекта.

Спасибо!

Don't miss a new bsl-language-server release

NewReleases is sending notifications on new releases.