Общие изменения
- Добавлена поддержка Java 17 при сборке проекта;
- Снижено потребление оперативной памяти, занимаемой данными конфигурации и внутренними кэшами BSL Language Server;
- Во всплывающую подсказку по методам и переменным добавлена гиперссылка на модуль, в котором описан метод;
- Окно с описанием, появляющееся при наведении на любой метод, сделано более информативным;
- В методах с аннотацией
&ИзменениеИКонтроль
реализовано игнорирование диагностик, срабатывающих на коде вне директив#Вставка
-#КонецВставки
; - Добавлена возможность фильтровать срабатывания диагностик по подсистемам.
Изменения в поддержке LSP протокола
- Добавлена обработка запроса
codeLens/resolve
. Все линзы теперь возвращаются "не-разрешенными"; - Добавлена отправка запроса
codeLens/refresh
после обновления конфигурационного файла (если клиент поддерживает эту операцию).
Изменения в работе форматирования
- При запуске форматирования из командной строки, добавлена возможность указать несколько файлов сразу (перечисление через запятую);
- Добавлена возможность приводить ключевые слова к каноническому виду.
Новые диагностики
- Запрещенные слова (
BadWords
); - Повторное использование строкового литерала (
DuplicateStringLiteral
); - Отсутствие проверки на NULL для полей из присоединяемых таблиц (
FieldsFromJoinsWithoutIsNull
); - Объекту метаданных присвоено запрещенное имя (
ForbiddenMetadataName
); - Отсутствует удаление данных из временного хранилища после использования (
MissingTempStorageDeletion
); - Ошибка разбора текста запроса (
QueryParseError
); - Обращение к несуществующим метаданным в запросе (
QueryToMissingMetadata
); - Совпадает имя объекта метаданного и его дочернего (
SameMetadataObjectAndChildNames
); - Серверный экспортный метод формы (
ServerSideExportFormMethod
); - Неиспользуемая локальная переменная (
UnusedLocalVariable
); - У полей формы не указан путь к данным (
WrongDataPathForFormElements
); - Неверно задан обработчик метода http-сервиса (
WrongHttpServiceHandler
); - Неверно задан обработчик операции web-сервиса (
WrongWebServiceHandler
).
Изменения в существующих диагностиках
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
- теперь глобальные методыНСтр
иПредопределенноеЗначение
считаются допустимыми для использования в качестве параметров методов и конструкторов.
Для управления списком глобальных методов разрешенных для использования, добавлен новый параметр.
Скорректированы описания диагностик
CrazyMultilineString
;IncorrectLineBreak
;IncorrectUseLikeInQuery
;LogicalOrInTheWhereSectionOfQuery
;MultilineStringInQuery
;WrongUseFunctionProceedWithCall
;AssignAliasFieldsInQuery
;CodeBlockBeforeSub
;CodeOutOfRegion
;DeprecatedAttributes8312
;DeprecatedMethods8317
;JoinWithSubQuery
;SelectTopWithoutOrderBy
;StyleElementConstructors
;UsingObjectNotAvailableUnix
;TimeoutsInExternalResources
.
Исправленные общие ошибки
- Исправлены периодические падения при анализе конфигурации из-за дублирования узлов дерева разбора;
- Исправлены периодические падения при анализе конфигурации из-за наличия переменных с одинаковым именем;
- Исправлена ошибка не-сброса конфигурации 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%
. Глобальный конфигурационный файл используется, если не был передан "локальный" конфигурационный файл конкретного проекта.