Releases: 1c-syntax/bsl-language-server
Releases · 1c-syntax/bsl-language-server
v0.10.0
Общие изменения
- BREAKING CHANGE По умолчанию процесс расчета диагностик теперь запускается только при сохранении файла. Для возвращения старого поведения (при редактировании файла) используйте конфигурационный файл, свойство
computeDiagnostics
в значенииonType
- Добавлен подсчет метрики "Когнитивная сложность"
- Добавлены диагностики:
- Когнитивная сложность (
CognitiveComplexity
) - Одинаковые выражения слева и справа от 'foo' оператора (
IdenticalExpressions
) - Использование сложных выражений в условии оператора "Если" (
IfConditionComplexity
) - Конструкция "Попытка...Исключение...КонецПопытки" не содержит кода в исключении (
MissingCodeTryCatchEx
) - Нарушение парности использования методов "НачатьТранзакцию()" и "ЗафиксироватьТранзакцию()" / "ОтменитьТранзакцию()" (
PairingBrokenTransaction
) - Ошибочное указание нескольких директив компиляции (
SeveralCompilerDirectives
) - Пробел в начале комментария (
SpaceAtStartComment
) - Использование тернарного оператора (
TernaryOperatorUsage
) - по умолчанию выключена - Оператор "Перейти" не должен использоваться (
UsingGoto
)
- Когнитивная сложность (
- Изменены следующие диагностики:
ExtraCommas
теперь работает всегда, а не только для BSL-файловUsingCancelParameter
- серьезность переведена на уровеньMAJOR
- Добавлен обработчик
textDocument/codeLens
, отображающий информацию о Когнитивной сложности метода - Добавлен quick-fix (быстрое исправление) для диагностики "Пробел в начале комментария"(
SpaceAtStartComment
) - В конфигурационный файл добавлены свойства:
showCognitiveComplexityCodeLens
- Булево - определяет необходимость показа codeLens с Когнитивной сложностью;computeDiagnostics
- Перечисление - определяет триггер для расчета диагностик. Доступные значения - при сохранении файла (по умолчанию), при редактировании файла, никогда.
- Для конфигурационного файла добавлена json-схема. В имеющиеся файлы конфигурации ее можно подключить с помощью свойства:
"$schema": "https://raw.githubusercontent.com/1c-syntax/bsl-language-server/master/src/main/resources/org/github/_1c_syntax/bsl/languageserver/configuration/schema.json"
- Уточнено определение диапазонов начала и конца методов при запросе символов документов
- Исправлено форматирование параметров аннотаций и аннотированных методов и переменных
Значимые внутренние изменения
- Для диагностик в
@DiagnosticMetadata
доступно новое свойствоactivatedByDefault
. Значение по умолчанию -true
- В
DocumentContext
и классы, реализующие интерфейсSymbol
, добавлен метод очистки сохраненных данных ANTLR -void clearASTData()
v0.9.1
v0.9.0
- Добавлен
codeAction
"Fix all", позволяющий исправить все диагностики указанного типа в открытом файле - В информацию о методе добавлена ссылка на
Область
к которой относится данный метод - В дерево символов от
DocumentSymbolProvider
добавлена информация об "Областях" - Добавлен сбор метрики NCLOC_DATA - массив строк файла, являющийся строками кода
- Добавлены новые диагностики:
- Удаление элемента при обходе коллекции посредством оператора Для каждого ... Из ... Цикл
- Запятые без указания параметра в конце вызова метода
- Использование магического числа
- В диагностику "Использование служебных тегов" добавлен поиск распространенных служебных тегов:
!!
@
MRG
ОТЛАДКА
ДЛЯ ОТЛАДКИ
КОНСТРУКТОР_*
- Диагностика "Использование служебных тегов" теперь находит больше служебных комментариев
- Диагностика "Использование НайтиПоНаименованию и НайтиПоКоду" теперь срабатывает и на поиске по числу
- Исправлено падение
codeAction
при получении диагностики от стороннего инструмента, например, отoscript -check
в VSC
v0.8.0
- Добавлена команда
--version
, выводящая версию продукта - В конфигурацию добавлено свойство
traceLog
- путь к файлу для логирования всех входящих и исходящих запросов между BSL Language Server и Language Client из используемой IDE - Добавлен обработчик
textDocument/documentSymbol
- запрос "символов" документа. Выводятся процедуры, функции и переменные, объявленные черезПерем
(в т.ч. внутри процедур и функций) - В провайдер сворачивания областей добавлен поиск последовательных инструкций
#Использовать
(для OneScript) - Добавлены новые диагностики:
- Управляющие конструкции не должны быть вложены слишком глубоко
- Ошибка разбора исходного кода
- Приведение к числу в попытке
- Бесполезный перебор коллекции
- Добавлен обработчик
textDocument/codeAction
- действия в открытом документе. В качестве начальных действий представлены "быстрые исправления" (quick fixes) для диагностик:CanonicalSpellingKeywords
EmptyStatement
SemicolonPresence
- Исправлены падения провайдера сворачивания областей при редактировании файла
- Исправлен выброс ошибок при редактировании файлов в диагностиках
EmptyCodeBlock
,FunctionShouldHaveReturn
,SemicolonPresence
- Если диагностика
OneStatementPerLine
срабатывает несколько раз на одной строчке, то информация о соседних срабатываниях добавляется в "связанные места" (related locations) вместо отдельных замечаний - Убран вывод в stdout ошибок разбора парсера
- Исправлены
NullPointerException
при запуске анализатора как библиотеки в других продуктах - При закрытии документа (
textDocument/didClose
) на клиент отправляется пустой список диагностик - Обновлены зависимости
v0.7.0
- Добавлен обработчик
textDocument/foldingRange
- расчет сворачиваемых областей. Доступно сворачивание многострочных комментариев, инструкций препроцессору#Если ... #КонецЕсли
,#Область ... #КонецОбласти
, процедур и функций, блочных конструкцийЕсли
/Пока
и т.п. - Исправлена ошибка дублирования комментария в начале файла при выполнении форматирования документа
v0.6.1
v0.6.0
- Добавлен подсчет метрик:
- количество процедур
- количество функций
- количество выражений
- количество строк
- количество строк кода
- Изменен формат репортера json - в вывод добавлена информация о метриках
- Добавлен сборщик информации о методах
- Добавлены новые диагностики:
- Ограничение на использование устаревшего метода "Сообщить"
- Ограничение на использование конструкторов с параметрами при объявлении структуры
- Ограничение на количество значений свойств, передваваемых в конструктор структуры
- Использование НайтиПоНаименованию и НайтиПоКоду
- Использование служебных тегов
- Добавлено разграничение диагностик по области применения -
all
,bsl
,os
- Обновлены ссылки на стандарты ИТС в описании диагностик
v0.5.0
- Добавлена возможность конфигурации запускаемых диагностик с помощью конфигурационного файла. Для передачи используется ключ запуска
--configuration
. Подробнее см. документацию. - Удален ключ запуска
--diagnosticLanguage
. Вместо него для указания языка диагностик используется конфигурационный файл - Добавлены возможности конфигурирования диагностик:
- LineLength
- MethodSize
- NumberOfOptionalParams
- NumberOfParams
- Добавлены диагностики:
- IfElseDuplicatedCodeBlock - Повторяющиеся блоки кода в синтаксической конструкции Если...Тогда...ИначеЕсли...
- ProcedureReturnsValue - Процедура не может возвращать значение
- Добавлен внешний API для получения метаданных диагностик
- Добавлен перевод сайта и описаний диагностик на английский язык
- Обновлена версия BSL Parser
v0.4.0
- Добавлена возможность указания каталога, куда сохраняются файлы репортеров в режиме
analyze
. Параметр--outputDir ./out
- Добавлены диагностики:
- Каноническое написание ключевых слов
- Повторяющиеся условия в синтаксической конструкции Если...Тогда...ИначеЕсли...
- Ограничение на количество не обязательных параметров метода
- Ограничение на количество параметров метода
- Порядок параметров метода
- Присвоение переменной самой себе
- Работа с параметром «Отказ»
- Использование буквы "ё" в текстах модулей
- Добавлена возможность форматирования документа и выбранного диапазона
- Добавлен вывод результатов анализа в формате
Generic Issue
- Обновлена зависимость от BSL Parser
v0.3.0
- Добавлен репортер в формат JUnit.xml
- Добавлены диагостики:
- Пустой оператор
- Использование синтаксической конструкции Если...Тогда...ИначеЕсли...
- Вложенный тернарный оператор
- Использование буквы "ё" в текстах модулей
- Исправлена проблема парсинга одиночного CR (символ "возврат каретки")
- Отключены пока нереализованные возможности (completion и hover)
- Диагностика на пустой блок кода больше не срабатывает на процедурах
- Диагностика на длину строки больше не срабатывает в многострочных строках
- Уточнено позиционирование диагностики на наличие точки с запятой
- Диагностика на количество операторов в одной строке больше не срабатывает на пустой оператор
- Обновлена зависимость от BSL Parser