Skip to content

v0.16.0

Compare
Choose a tag to compare
@nixel2007 nixel2007 released this 14 Sep 17:33
· 3645 commits to develop since this release
c62ae5c

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

  • Добавлен анализатор текстов запросов, расположенных в модулях.
  • Добавлен отслеживатель факта изменения файла конфигурации. Теперь BSL Language Server будет обновлять свои настройки налету после сохранения/удаления/появления файла конфигурации.
  • Добавлена обработка запроса workspace/symbol для формирования списка символов рабочей области.
  • Добавлена обработка кастомного запроса textDocument/x-diagnostics, который может использоваться для получения списка диагностик документа.
  • Используемый словарь LanguageTool обновлен до версии 5.0.2.
  • Добавлены диагностики:
    • Запрет экспортных глобальных переменных модуля (ExportVariables);
    • Соединение с вложенными запросами (JoinWithSubQuery);
    • Соединение с виртуальными таблицами (JoinWithVirtualTable);
    • Имена объектов метаданных не должны превышать допустимой длины наименования (MetadataObjectNameLength);
    • Конструктор элемента стиля (StyleElementConstructors);
    • Использование ключевого слова "ОБЪЕДИНИТЬ" в запросах (UnionAll).
  • Изменены диагностики:
    • Ключ диагностики "Использование метода РольДоступна" изменен с IsInRoleMethodDiagnostic на IsInRoleMethod;
    • MissingVariableDescription - исправлено определение описания переменной, если она содержит аннотации;
    • CommonModuleNameCached - исправлены ложные срабатывания диагностики при корректном именовании модуля;
    • CommonModuleNameClientServer - исправлено ложное срабатывание диагностики, если у модуля установлен флаг "Обычное приложение";
    • NonStandardRegion - для модуля HTTP-сервиса добавлены стандартные области ОбработчикиСобытий и СлужебныеПроцедурыИФункции
  • Добавлен "сode action" для создания недостающих в модуле стандартных областей.
  • Исправлена ошибка однопоточного парсинга метаданных конфигурации при запуске анализа проекта.
  • Исправлено неверное определение аннотаций расширений, как кастомных.
  • Репортер generic теперь точнее мапит типы и серьезность замечаний из BSL Language Server на типы и серьезность замечаний формата "generic issue".
  • Репортер json теперь содержит ссылку на mdoRef.
  • Обновлена зависимость BSL Parser:
    • Исправлены ошибки разрыва препроцессором;
    • Реализована поддержка препроцессорных вставок #Вставка и #Удаление.
  • Обновлена зависимость MDClasses - увеличен объем доступных к анализу данных конфигураций и расширений, парсинг файлов переведен с Jackson на XStream.

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

  • Проект переведен на фреймворк Spring Boot. Все провайдеры и диагностики теперь являются бинами, как следствие теперь для получения произвольных зависимостей может использоваться (и используется) dependency injection. Например, теперь диагностика может получить ссылку на LanguageServerConfiguration.
  • Добавлены события по обновлению настроек LanguageServerConfiguraion - LanguageServerConfigurationChangeEvent и LanguageServerConfigurationFileChangeEvent. Для подписки на события можно использовать Spring Events API
  • Основным артефактом BSL Language Server теперь является "тонкий" jar-файл без зависимостей. Это позволяет удобнее подключать BSL Language Server как библиотеку в другие приложения. Старый вариант поставки в виде "толстого" исполняемого jar-файла доступен в виде артефакта с классификатором -exec.
  • Добавлен класс BSLLSBinding для упрощения встраивания BSL Language Server в другие приложения и инициализации контекта Spring Boot.
  • Класс DiagnosticSupplier разделен на несколько компонентов и удален. Для расчета списка диагностик документа следует использовать DocumentContext#getDiagnostics(), для получения списка уже рассчитанных диагностик (если они были рассчитаны) - DocumentContext#getComputedDiagnostics()
  • Расширения Symbol API:
    • В интерфейс Symbol добавлен методы getSymbolKind() и isDeprecated() для упрощения анализа символов;
    • В MethodSymbol добавлена информация о применяемой директиве компиляции и списке аннотаций;
    • Добавлен новый тип visitor'а, который можно использовать для построения диагностик - AbstractSymbolTreeDiagnostic.
  • Добавлен API для работы с запросами:
    • Добавлен метод DocumentContext#getQueries() для получения списка запросов документа;
    • Добавлен новый тип visitor'а для построения диагностик языка запросов - AbstractSDBLVisitorDiagnostic.