Releases: 1c-syntax/bsl-language-server
Releases · 1c-syntax/bsl-language-server
v0.19.1
v0.19.0
Общие изменения
- Добавлена обработка запросов
textDocument/documentColor
иtextDocument/colorPresentation
для отображения представления цвета. Обрабатываются обращения к системному перечислениюWebЦвета
и создание цвета с помощью конструктораНовый Цвет
; - Добавлена обработка запроса
textDocument/selectionRange
для формирования дерева областей выделения от текущей позиции (командаExpand Selection
вVSCode
); - Линзы когнитивной сложности и цикломатической сложности теперь показывают текст на языке сервера (параметр
language
конфигурационного файла); - Добавлен репортер в формат SARIF;
- Удален репортер в
Generic coverage
, метрикаcovlocData
объявлена устаревшей. При необходимости получения данных по строкам к покрытию используйте другие инструменты, напримерCoverage41C
; - Добавлены диагностики:
- Все возможные пути выполнения функции должны содержать оператор Возврат (
AllFunctionPathMustHaveReturn
); - Назначение псевдонимов выбранным полям в запросе (
AssignAliasFieldsInQuery
); - Флажок «Устанавливать права для новых объектов» должен быть установлен только у роли ПолныеПрава (
SetPermissionsForNewObjects
); - После вызова асинхронного метода есть строки кода (
CodeAfterAsyncCall
);
- Все возможные пути выполнения функции должны содержать оператор Возврат (
- Изменены диагностики:
Typo
- английский словарь больше не ругается на кириллицу и наоборот;IdenticalExpressions
- диагностика переписана на новый движок "дерева выражений", повышена точность срабатывания диагностики с учетом вариативности и приоритетов операций, добавлен параметрpopularDivisors
для отсекания срабатываний на популярных делителях60
и1024
;MissingTemporaryFileDeletion
- исправлено падение при вызове функции от результата вызова функции, исправлены избыточные (не)срабатывания диагностики при частичном совпадении искомого имени метода с созданием/удалением временного файла, добавлена поддержка методов удаления файла, находящихся в общих модулях;AssignAliasFieldsInQuery
- исправлены падения при разрывах запроса в области описания выбираемых полей;IncorrectUseOfStrTemplate
- исправлены ложные срабатывания при сложном экранировании шаблонных переменных через двойные знаки процента или скобки, исправлены ложные несрабатывания при передаче параметров в виде отсутствующего значения;IncorrectLineBreak
- исправлены ложные срабатывания на комментариях и внутри строк;SelectTopWithoutOrderBy
- исправлено срабатывание диагностики на конструкциюВЫБРАТЬ ПЕРВОЕ 0
, исправлено падение диагностики при разрыве запроса;CreateQueryInCycle
- исправлено падение диагностики при наличии ошибок в синтаксисе описания цикла;UsingHardcodeNetworkAddress
- добавлен параметрsearchPopularVersionExclusion
для исключения срабатывания диагностики на популярные конструкции, не являющиеся адресами. По умолчанию игнорируются строки, начинающиеся на1
,2
,3
,8.3
и11
;LatinAndCyrillicSymbolInWord
- добавлен параметрallowTrailingPartsInAnotherLanguage
, разрешающий началу или концу идентификатора быть написанным на другом языке;UsageWriteLogEvent
- исправлено ложное срабатывание диагностики вне блокаИсключение
;CachedPublic
- исправлено ложное срабатывание диагностики на пустой области;IncorrectUseLikeInQuery
- важность понижена доmajor
;UsingLikeInQuery
- важность понижена доmajor
;VirtualTableCallWithoutParameters
- важность понижена доmajor
;MagicDate
- исправлена ошибка, которая не позволяла убрать из разрешенных дат в параметреauthorizedDates
даты, установленные по умолчанию;MagicNumber
- исправлена ошибка, которая не позволяла убрать из разрешенных чисел в параметреauthorizedNumbers
числа, установленные по умолчанию;
- Исправлена ошибка позиционирования некоторых диагностик, опиравшихся на построчный перебор файла;
- Исправлена ошибка разбора исходного кода, если один из параметров метода имеет имя
Ждать
; - Исправлена ошибка чтения параметров диагностик, имеющих тип "число с плавающей точкой" (
float
), приводящая к падению приложения; - Исправлено падение сервера, если путь к файлу содержит квадратные скобки (
[
и]
); - Обновление значимых зависимостей:
Изменения для разработчиков
- BSL Language Server теперь публикуется в Maven Central. Снапшоты develop-ветки доступны в Sonatype Snapshot Repository. Версионируемый javadoc доступен на javadoc.io;
- javadoc теперь содержит кросс-ссылки на объекты mdclasses и antrl4;
- Добавлен механизм
Expression Tree
для построения дерева выражений с учетом приоритетов операций. См. пакетcom.github._1c_syntax.bsl.languageserver.utils.expressiontree
; - Добавлен механизм
Control Flow Graph
для построения графа потока управления в блоке кода (CodeBlockContext
). См. пакетcom.github._1c_syntax.bsl.languageserver.cfg
; - Добавлен метод
DocumentContext::getScriptVariantLocale
, возвращающий вариант встроенного языка текущего файла. Интерфейс классаResources
расширен методами, принимающимиLocale
- Изменения базовых настроек проекта, хранящихся в каталоге
.idea
больше не будут приводить к конфликтам и шуму в измененных файлах репозитория.
v0.19.0-rc.3
Merge pull request #1812 from 1c-syntax/feature/publishToSonatype
v0.19.0-rc.2
Merge pull request #1799 from 1c-syntax/fix/contentList
v0.19.0-rc.1
Merge pull request #1725 from EvilBeaver/feature/cfg ControlFlowGraph и диагностика с примером
v0.18.1
Общие изменения
- Добавлено отслеживание за смертью процесса, запустившего BSL Language Server в режиме LSP. В случае завершения родительского процесса BSL Language Server будет завершать свою работу через 30 секунд.
- В парсер описания метода добавлена обработка конструкций
Array contains Something
. - В парсер описания метода добавлена обработка конструкций для составных типов-коллекций с примитивными типами элементов вида
Массив из Строка
. - Изменены диагностики:
IncorrectLineBreak
- добавлен параметры диагностики, позволяющие конфигурировать допустимые символы в начале и конце строки, исправлено позиционирование срабатываний диагностики.
- Обновление значимых зависимостей:
- BSL Parser обновлен до версии 0.19.3;
v0.18.0
Общие изменения
- Поддержка Java 16.
- Добавлена обработка запроса
textDocument/hover
для формирования всплывающей подсказки по методу/переменной под курсором. - Добавлена обработка запроса
textDocument/definition
для перехода к определению символа под курсором. - Добавлена обработка запроса
textDocument/references
для формирования списка ссылок на символ под курсором. - Добавлена обработка запросов
textDocument/prepareCallHierarchy
,callHierarchy/incomingCalls
иcallHierarchy/outgoingCalls
для формирования иерархии вызовов методов. - Ответы на запросы
textDocument/documentSymbol
иworkspace/symbol
теперь возвращают список тегов символа. - Добавлено заполнение свойства
codeDescription
в данных диагностик, в котором хранится ссылка на документацию по диагностике. - Параметры
siteRoot
иuseDevSite
конфигурационного файла перенесены из объектаdocumentLink
в корень конфигурации. - В параметр конфигурационного файла
documentLink
добавлен параметрshowDiagnosticDescription
, отвечающий за отображение старого механизма показа документации по диагностике в видеdocumentLink
. По умолчанию - выключено. - В параметры регистрации "возможностей" (capabilities) сервера добавлена информация о
DocumentSelector
(где применимо). В качестве значения используется фильтр по языку с идентификаторомbsl
. - В параметры регистрации
CodeActionProvider
добавлен фильтр по поддерживаемым типамCodeAction
(CodeActionKind
). В качестве значения используется список изQuickFix
иRefactor
. - В параметры регистрации
DocumentSymbolProvider
добавленlabel
. В качестве значения используется строкаBSL Language Server
. - Добавлены диагностики:
- Общий модуль должен иметь программный интерфейс (
CommonModuleMissingAPI
); - Безумные многострочные литералы (
CrazyMultilineString
); - Использование конструкции "ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ" в запросах (
FullOuterJoinQuery
); - Некорректное использование 'ПОДОБНО' (
IncorrectUseLikeInQuery
); - Неверное использование "СтрШаблон" (
IncorrectUseOfStrTemplate
); - Использование логического "ИЛИ" в секции "ГДЕ" запроса (
LogicalOrInTheWhereSectionOfQuery
); - Многострочный литерал в запросе (
MultilineStringInQuery
); - Использование 'ВЫБРАТЬ ПЕРВЫЕ' без 'УПОРЯДОЧИТЬ ПО' (
SelectTopWithoutOrderBy
); - Неверное использование метода "ЗаписьЖурналаРегистрации" (
UsageWriteLogEvent
); - Использование 'ПОДОБНО' в запросе (
UsingLikeInQuery
); - Обращение к виртуальной таблице без параметров (
VirtualTableCallWithoutParameters
); - Некорректное использование функции ПродолжитьВызов() (
WrongUseFunctionProceedWithCall
); - Неправильный перенос выражения (
IncorrectLineBreak
);
- Общий модуль должен иметь программный интерфейс (
- Изменены диагностики:
Typo
- значительно ускорено время работы диагностики;Typo
- из обработки убраны строки, напоминающие значения для форматной строки;DeprecatedMethodCall
- увеличена надежность срабатывания диагностики;MissingTemporaryFileDeletion
- в параметрsearchDeleteFileMethod
добавлены значенияНачатьУдалениеФайлов
иBeginDeletingFiles
;RedundantAccessToObject
- исправлено ложное срабатывание при обращении из модуля менеджера к переменной с именем, совпадающим с именем метаданного;RefOveruse
- добавлена обработка обращения к ссылке от собственной таблицы, исправлено ложное срабатывание на обращениях с использованием таблиц из внешнего запроса;StyleElementConstructors
- исправлено ложное не-срабатывание, если конструктор цвета вложен в другой конструктор;UnusedLocalMethod
- добавлен параметрattachableMethodPrefixes
, позволяющий указать префиксы имен методов, исключаемых из проверки;UsingHardcodePath
- оптимизация работы;UsingHardcodeSecretInformation
- оптимизация работы;
- Добавлена возможность запуска анализа проекта в режиме замера производительности. Подробнее в документации.
- Добавлена возможность передавать настройки Spring-приложения как аргументы командной строки (например,
--spring.config.location
). - Действие отключения диагностик в файле больше не предлагает выключить диагностики, пришедшие не от BSL Language Server.
- Добавлена обработка ситуации, когда в запрос инициализации сервера в качестве значения
workspaceFolders
приходит значениеnull
. - Исправлен разбор многострочных строк с разрывом инструкцией препроцессору (
#Вставка
и т.п.). - Обновление значимых зависимостей:
- Обновлены сайт и документация.
- Перевод проекта переведен на платформу CrowdIn.
Изменения для разработчиков
groupId
артефактов изменен наio.github.1c-syntax
.- Добавлена подсистема событий. Подробнее в руководстве разработчика.
- Развитие символьного API - разделены понятия символа и символа, объявленного в исходном коде. Введены интерфейсы
SourceDefinedSymbol
,Describable
иExportable
. - Параметры описания метода в
MethodSymbol
теперь содержат описание и значения по умолчанию. - В символьное API добавлено понятие
ModuleSymbol
для хранения данных о документе в виде символа. - Существенно развит механизм хранения описаний методов и переменных. Добавлен интерфейс
SourceDefinedSymbolDescription
. - Добавлен механизм для хранения ссылок на символы и API по работе с ним. См. пакет
references
- Упрощено использование [
DocumentContext
](https://1c-syntax.github.io/bsl-language-server/javadoc/com/github/_1c_syntax/bsl/languageserver/context/DocumentC...
v0.18.0-rc.2
Исправление поиска ссылок на модулях с именем Module.bsl, но не общих…
v0.18.0-rc.1
fixup tests
v0.18.0-alpha.2
Merge pull request #1567 from artbear/str-template-1235