Releases: 1c-syntax/bsl-language-server
Releases · 1c-syntax/bsl-language-server
v0.13.2
v0.13.1
v0.13.0
- Добавлена возможность исключать из анализа файлы на поддержке (при наличии конфигурации поставщика). Для этого в конфигурационный файл добавлено свойство
computeDiagnosticSkipSupport
(перечисление). Подробнее: Конфигурирование - Время анализа файла сокращено на ~20%
- Обновление до Java11
- Добавлена поставка BSL LS в виде самодостаточного zip-архива для платформ Windows, Linux и MacOS
- Добавлены метрики модуля:
- расчет цикломатической сложности
- количество строк комментариев
- Добавлены новые диагностики:
- Код расположен вне области
CodeOutOfRegion
- Директивы компиляции методов
CompilationDirectiveLost
- Лишняя директива компиляции
CompilationDirectiveNeedLess
- Выполнение запроса в цикле
CreateQueryOnCycle
- Цикломатическая сложность
CyclomaticComplexity
- Повторяющиеся разделы модуля
DuplicateRegion
- Область не должна быть пустой
EmptyRegion
- Использование метода ДанныеФормыВЗначение
FormDataToValue
- Использование метода ПолучитьФорму
GetFormMethod
- Нестандартные разделы модуля
NonStandardRegion
- Использование метода ПользователиОС
OSUsersMethod
- Метод не должен содержать много возвратов
TooManyReturns
- Неиспользуемый параметр
UnusedParameters
- Код расположен вне области
- Доработаны диагностики:
- UsingServiceTag - фраза
// Вставить содержимое обработчика
и ее английские аналоги теперь считается служебным тегом и диагностируется как ошибка - UnreachableCode - исправлено ложное срабатывание на
#Область
и#КонецОбласти
- UsingHardcodeNetworkAddress - исправлены ложные срабатывания на строках, содержащих двоеточия
- SpaceAtStartComment - больше не срабатывает на строках, считающихся закомментированным кодом
- CommentedCode - уточнены правила определения кода
- UnusedLocalMethod - убрано срабатывание на
ПриСозданииОбъекта
в модулях OneScript - TimeoutsInExternalResources - убраны ложные срабатывания на конфигурациях с режимом совместимости 8.3.7 и менее
- MultilingualStringHasAllDeclaredLanguages - исправлен ряд ложных срабатываний на сложных локализованных строках
- OneStatementPerLine - добавлен показ дополнительных срабатываний диагностики
- CommitTransactionOutsideTryCatch - исправлено ложное не-срабатывание в случае, когда
ЗафиксироватьТранзакцию
является последним оператором в модуле - MissingSpace - убрано ложное срабатывание на унарных плюсе и минусе при передаче числового параметра как аргумента метода
- MagicNumbers - добавлен параметр, разрешающий использование магических чисел как индексов
- UsingServiceTag - фраза
- Добавлен quick fix для диагностики:
- EmptyRegion
- Добавлен обработчик
textDocument/codeLens
, отображающий информацию о цикломатической сложности метода - Для диагностик добавлена возможность определения необходимости срабатывания на основе типа модуля
- Добавлен перевод параметров диагностик на английский язык
- Добавлен новый тэг диагностик -
localize
- проблемы локализации - Добавлен новый тип диагностик -
security hotspot
- подробнее в документации - Исправлено необнаружение метаданных конфигурации в некоторых случаях
- Форматер больше не съедает имя библиотеки OneScript, начинающейся с цифры
- json-файл с результатами анализа теперь хранит базовый каталог анализа и относительные пути к файлам
- В конфигурации BSL LS свойство
computeDiagnostics
заменено наcomputeDiagnosticsTrigger
- Расширена документация
- Расширена json-схема для конфигурационного файла
- Конфигурационный файл теперь доступен по короткой ссылке:
https://1c-syntax.github.io/bsl-language-server/configuration/schema.json
v0.12.3
- Исправлена фильтрация диагностик по режиму совместимости
- Исправлено игнорирование параметра
maxAllowedLevel
в диагностикеNestedStatements
- Исправлено ложное срабатывание диагностики
MultilingualStringHasAllDeclaredLanguages
при использовании двух двойных кавычек вместо одной одинарной
v0.12.2
v0.12.1
v0.12.0
Общие изменения
- Время анализа файлов сокращено от 2 до 9 раз.
- Существенно (от 2 до 5 раз) сокращен размер неотдаваемой оперативной памяти в режиме анализа.
- Существенно сокращен размер дистрибутива.
- Форматтер теперь обрезает незначимые символы справа в комментариях
- Добавлены диагностики:
- Использование устаревшего метода "Найти" (
DeprecatedFind
). - Недопустимый символ (
InvalidCharacterInFile
). - Отсутствует удаление временного файла после использования (
MissingTemporaryFileDeletion
). - Есть локализованный текст для всех заявленных в конфигурации языков (
MultilingualStringHasAllDeclaredLanguages
). - Есть локализованный текст для всех заявленных в конфигурации языков (
MultilingualStringHasAllDeclaredLanguages
). - Неэкспортные методы в областях ПрограммныйИнтерфейс и СлужебныйПрограммныйИнтерфейс (
NonExportMethodsInApiRegion
). - Таймауты при работе с внешними ресурсами (
TimeoutsInExternalResources
). - Унарный плюс в конкатенации строк (
UnaryPlusInConcatenation
). - Неиспользуемый локальный метод (
UnusedLocalMethod
). - Хранение ip-адресов в коде (
UsingHardcodeNetworkAddress
).
- Использование устаревшего метода "Найти" (
- Изменены следующие диагностики:
- Определение захардкоженных адресов вынесено из диагностики
UsingHardcodePath
вUsingHardcodeNetworkAddress
. - В сообщения диагностик
NumberOfParams
иNumberOfOptionalParams
добавлена информация о требуемом количестве параметров - Диагностика
LineLength
больше не срабатывает на последнюю длинную строку текста запроса. - Диагностика
CommentedCode
больше не срабатывает на описаниях методов.
- Определение захардкоженных адресов вынесено из диагностики
- Добавлен quick-fix (быстрое исправление) для диагностик:
- Закомментированный фрагмент кода (
CommentedCode
) - Одно выражение в одной строке (
OneStatementPerLine
)
- Закомментированный фрагмент кода (
- Частичная поддержка анализа метаданных конфигурации в форматах выгрузки конфигуратора и EDT.
- В конфигурацию BSL Language Server добавлено свойство
configurationRoot
для хранения пути к корню конфигурации. - В данные метрик добавлена информация о строках для покрытия тестами.
- Для диагностик добавлены тэги и требуемый режим совместимости конфигурации (где применимо).
- При анализе конфигураций по умолчанию не срабатывают диагностики, у которых режим совместимости конфигурации выше, чем режим совместимости анализируемой конфигурации.
- Репортер в GenericIssue теперь использует относительные пути файлов.
- Для ряда диагностик изменены названия на русском и английском языке.
- Названия методов в сообщениях диагностик теперь обернуты в кавычки.
- Исправлены ошибки:
- Исключение при использовании английского варианта игнорирования диагностик (
BSLLS-off
). - Отсутствие пересчета диагностик при сохранении файла.
- Ложное срабатывание диагностик
OneStatementPerLine
,EmptyStatements
,SemicolonPresence
при ошибке разбора - Ложное срабатывание диагностики
UsingHardcodeSecretInformation
при установке значения заголовка элементу формы с именем "Пароль" - Ложное срабатывание диагностики
UsingHardcodeSecretInformation
при установке паролю значения, состоящего только из символов звездочки (*
) - Ложное срабатывание диагностики
UnreachableCodeDiagnostic
при пустом выражении после возврата. - Ложное срабатывание диагностики
UsingHardcodePath
на сложных кодах классификаторов. - Ложное срабатывание диагностики
NestedConstructorsInStructureDeclaration
при использовании пустых конструкторов со скобками. - Ложное срабатывание диагностики
UsingSynchronousCalls
на серверном контексте формы - Ложное срабатывание диагностики
UsingObjectNotAvailableUnix
в некоторых условиях - Двойное срабатывание диагностики
UsingThisForm
. - Код языка диагностик не влиял на язык сообщений диагностик в режиме
analyze
- Неверное английское имя диагностики
MagicNumbers
. - Диагностики на корректность работы с транзакциями срабатывали не только на методы глобального контекста.
- Исключение при использовании английского варианта игнорирования диагностик (
- Обновленный дизайн сайта.
- Информация о диагностиках и репортерах перенесена на отдельные страницы.
- В документацию по диагностикам добавлены блоки по типу, важности, включенности по умолчанию, времени на исправление, тэгам и применимости диагностики.
Значимые внутренние изменения
- Дистрибутив теперь содержит английские версии описаний правил.
groupId
проекта изменен наcom.github.1c-syntax
.
v0.11.0
Общие изменения
- Добавлена возможность игнорирования диагностик в тексте модуля. Для игнорирования используются тэги "BSLLS-выкл", аналогичные "АПК-выкл", с возможностью указания ключа игнорируемой диагностики. Подробная информация - https://1c-syntax.github.io/bsl-language-server/features/DiagnosticIgnorance.html
- В cli добавлена команда массового форматирования файлов (--format)
- Добавлены диагностики:
- Нарушение правил работы с транзакциями для метода 'НачатьТранзакцию' (BeginTransactionBeforeTryCatch)
- Закомментированный фрагмент кода (CommentedCode)
- Нарушение правил работы с транзакциями для метода 'ЗафиксироватьТранзакцию' (CommitTransactionOutsideTryCatch)
- Пропущены пробелы слева или справа от операторов + - * / = % < > <> <= >=, а так же справа от , и ; (MissingSpace.md)
- Вставка коллекции в саму себя (SelfInsertion)
- Недостижимый код (UnreachableCode)
- Хранение путей к файлам и ip-адресов в коде (UsingHardcodePath)
- Хранение конфиденциальной информации в коде (UsingHardcodeSecretInformation)
- Использование модальных окон (UsingModalWindows)
- Использование объектов недоступных в Unix системах (UsingObjectNotAvailableUnix)
- Использование синхронных вызовов (UsingSynchronousCalls)
- Использование устаревшего свойства "ЭтаФорма" (UsingThisForm)
- Изменены следующие диагностики:
- SpaceAtStartComment дополнительно игнорирует комментарии, начинающиеся с //©
- Для диагностики EmptyCodeBlock добавлена настройка, позволяющая считать комментарии внутри блока кода за код
- Уточнено позиционирование диагностики SeveralCompilerDirectives
- Расширена документация по диагностикам:
- Пустой блок кода (EmptyCodeBlock)
- Добавлен quick-fix (быстрое исправление) для диагностик:
- Пропущены пробелы слева или справа от операторов + - * / = % < > <> <= >=, а так же справа от , и ; (MissingSpace)
- Использование устаревшего свойства "ЭтаФорма" (UsingThisFormDiagnostic)
- В вывод репортера json добавлена информация об анализируемом каталоге
- Вывод репортера junit приведен к современному виду
- Исправлено случайное падение прогресс-бара в некоторых windows-терминалах
- Исправлено возможное падение при чтении конфигурационного файла с неполным списком свойств диагностик
- Исправлено падение при расчете символов документа в момент набора ключевого слова Процедура/Функция
- Исправлено падение при форматировании пустого файла
- Поддержка работы режима analyze на java11+
Значимые внутренние изменения
- Версия lsp4j обновлена до 0.8.1
- Данные в DocumentContext теперь рассчитываются только при необходимости, пре первом запросе
- Full qualified package name проекта изменен на com.github._1c_syntax.bsl.languageserver, groupId изменен на com.github.1c-syntax
- Расширена документация разработчика. Добавлена gradle-задача для быстрого создания новой диагностики
v0.10.2
v0.10.1
- Исправлен расчет когнитивной сложности для логических выражений
- Исправлено "съедание" символа переноса строк при применении "быстрого исправления"
SpaceAtStartComment
- Добавлен перевод сообщений и имени диагностики
UsingGoto
на русский язык - Исправлено форматирование экранированных кавычек внутри многострочных строк