Skip to content

v0.15.0

Compare
Choose a tag to compare
@nixel2007 nixel2007 released this 31 May 11:03
· 3930 commits to master since this release
9f44026

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

  • BREAKING CHANGE Изменен формат конфигурационного файла. Одно из ключевых отличий - разнесение параметров по типам сервисов. Например, конфигурирование диагностик теперь происходит в diagnostics->parameters, а не в diagnostics. Обновленное описание доступно на сайте и в схеме
  • Для настройки диагностик добавлено свойство mode, позволяющее полностью отключить диагностики, полностью включить все диагностики, включить все кроме указанных, отключить все кроме указанных
  • Расширена документация по BSL LS. Добавлены страницы часто задаваемых вопросов и системных требований
  • Добавлена обработка запроса textDocument/documentLink - по каждой диагностике теперь доступна всплывающая ссылка на страницу с документацией (например, в VSCode)
  • В ответ на запрос textDocument/documentSymbol для каждого символа добавлена информация о статусе "устарел"
  • Гарантированная поддержка JDK14
  • Обновлен внешний вид интерфейса командной строки. Теперь параметры явно привязаны к командам, доступна справка по каждой команде
  • Оптимизирована работа парсера bsl-файлов, парсера метаданных конфигурации, общих механизмов BSL Language Server
  • Добавлен экспорт данных о строках к покрытию в формате GenericCoverage (в виде нового репортера)
  • Тэги игнорирования диагностик (BSLLS-выкл) теперь нечувствительны к регистру
  • В команду analyze добавлен параметр --workspaceDir, отвечающий за базовый каталог, относительно которого формируются пути файлов в отчете
  • В команды добавлен флаг --silent для сокращения количества выводимых в консоль сообщений (в т.ч. прогресс-бар)
  • Исправлена ошибка сбора информации о методе, приводящая к падению анализа, если имя метода совпадало с ключевым словом
  • Добавлены диагностики:
    • Кеширование программного интерфейса (CachedPublic)
    • Присвоение общему модулю (CommonModuleAssign)
    • Общий модуль недопустимого типа (CommonModuleInvalidType)
    • Пропущен постфикс "ПовтИсп" (CommonModuleNameCached)
    • Пропущен постфикс "Клиент" (CommonModuleNameClient)
    • Пропущен постфикс "КлиентСервер" (CommonModuleNameClientServer)
    • Пропущен постфикс "ПолныеПрава" (CommonModuleNameFullAccess)
    • Пропущен постфикс "Глобальный" (CommonModuleNameGlobal)
    • Глобальный модуль с постфиксом "Клиент" (CommonModuleNameGlobalClient)
    • Пропущен постфикс "ВызовСервера" (CommonModuleNameServerCall)
    • Нерекомендуемое имя общего модуля (CommonModuleNameWords)
    • Подряд идущие пустые строки (ConsecutiveEmptyLines)
    • Отсутствует проверка признака ОбменДанными.Загрузка в обработчике событий объекта (DataExchangeLoading)
    • Устаревшие объекты платформы 8.3.12 (DeprecatedAttributes8312)
    • Использование устаревшего метода "ТекущаяДата" (DeprecatedCurrentDate)
    • Устаревшие методы не должны использоваться (DeprecatedMethodCall)
    • Использование устаревшего метода клиентского приложения (DeprecatedMethods8310)
    • Использование устаревших глобальных методов платформы 8.3.17 (DeprecatedMethods8317)
    • Избыточная проверка параметра АвтоТест (ExcessiveAutoTestCheck)
    • Выполнение произвольного кода на сервере (ExecuteExternalCode)
    • Выполнение произвольного кода в общем модуле на сервере (ExecuteExternalCodeInCommonModule)
    • Функция всегда возвращает одно и то же примитивное значение (FunctionReturnsSamePrimitive)
    • Использование метода РольДоступна (IsInRoleMethodDiagnostic)
    • Все объявления переменных должны иметь описание (MissingVariablesDescription)
    • Присвоение значения свойству ЭтотОбъект (ThisObjectAssign)
    • Небезопасное использование функции БезопасныйРежим() (UnsafeSafeModeMethodCall)
  • Изменены диагностики:
    • BeginTransactionBeforeTryCatch - исправлено ложное срабатывание диагностики на методах, содержащих НачатьТранзакцию в имени
    • CreateQueryInCycle - исправлено ложное срабатывание диагностики на коде вида Для Каждого из РезультатЗапроса.Выгрузить() Цикл
    • CompilationDirectiveNeedLess - исправлена ссылка на Источник
    • FunctionNameStartsWithGet - исправлена ссылка на Источник
    • NonExportMethodsInApiRegion - исправлено ложное не-срабатывание диагностики в области СлужебныйПрограммныйИнтерфейс
    • MultilingualStringHasAllDeclaredLanguages - исправлено ложное срабатывание диагностики при передачи строки через переменную
    • ParseError - исправлено неверное позиционирование диагностики, приводящее к остановке анализа в SonarQube, если ошибка вешалась на "конец файла"
    • Typo - расширен список слов-исключений
    • UnreachableCode - исправлено ложное срабатывание диагностики на инструкции препроцессору
    • UsingFindElementByString - исправлено ложное не-срабатывание диагностики при вызове функции, вложенного в вызов функции
    • UsingModalWindows - теперь включена по умолчанию, работает только на режиме совместимости 8.3.3 и новее
    • UsingSynchronousCalls - теперь включена по умолчанию, работает только на режиме совместимости 8.3.3 и новее
  • Оптимизированы диагностики:
    • EmptyRegion
    • FunctionShouldHaveReturn
    • InvalidCharacterInFile
    • MethodSize
    • SelfAssign
    • SelfInsertion
    • SemicolonPresence
    • SeveralCompilerDirectives
    • UsingCancelParameter
    • UsingServiceTag

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

  • На сайте добавлены разделы:
    • javadoc
    • руководство по стилю
    • структура диагностики, назначение и содержимое файлов
  • MethodSymbol теперь содержит информацию о параметрах метода, статусе deprecated
  • Исправлено определение типа переменной в VariableSymbol
  • Для построения дополнительного контекста всего сервера при начале работы выполняется дополнительный проход по всем файлам и построение первичных данных (в т.ч. SymbolTree)
  • Добавлены новые абстрактные диагностики:
    • AbstractCommonModuleNameDiagnostic - для проверки общего модуля на имя
    • AbstractExecuteExternalCodeDiagnostic - для проверки выполнения методов Выполнить и Вычислить
  • AbstractDiagnostic теперь содержит ссылку на DocumentContext в поле по аналогии с другими абстрактными диагностиками
  • DocumentContext#getTokens теперь возвращает токен EOF
  • Исправлена обрезка пустых строк в конце контента при вызове DocumentContext#getContentList