Skip to content

Releases: 1c-syntax/bsl-language-server

v0.10.0

20 Aug 13:35
b5f01a8
Compare
Choose a tag to compare

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

  • 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

23 Jul 07:19
43dd3e5
Compare
Choose a tag to compare
  • Исправлено падение диагностики MagicNumbers

v0.9.0

22 Jul 11:12
eec5144
Compare
Choose a tag to compare
  • Добавлен codeAction "Fix all", позволяющий исправить все диагностики указанного типа в открытом файле
  • В информацию о методе добавлена ссылка на Область к которой относится данный метод
  • В дерево символов от DocumentSymbolProvider добавлена информация об "Областях"
  • Добавлен сбор метрики NCLOC_DATA - массив строк файла, являющийся строками кода
  • Добавлены новые диагностики:
    • Удаление элемента при обходе коллекции посредством оператора Для каждого ... Из ... Цикл
    • Запятые без указания параметра в конце вызова метода
    • Использование магического числа
  • В диагностику "Использование служебных тегов" добавлен поиск распространенных служебных тегов:
    • !!
    • @
    • MRG
    • ОТЛАДКА
    • ДЛЯ ОТЛАДКИ
    • КОНСТРУКТОР_*
  • Диагностика "Использование служебных тегов" теперь находит больше служебных комментариев
  • Диагностика "Использование НайтиПоНаименованию и НайтиПоКоду" теперь срабатывает и на поиске по числу
  • Исправлено падение codeAction при получении диагностики от стороннего инструмента, например, от oscript -check в VSC

v0.8.0

22 Jun 12:23
e2aa8d8
Compare
Choose a tag to compare
  • Добавлена команда --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

27 May 12:44
Compare
Choose a tag to compare
  • Добавлен обработчик textDocument/foldingRange - расчет сворачиваемых областей. Доступно сворачивание многострочных комментариев, инструкций препроцессору #Если ... #КонецЕсли, #Область ... #КонецОбласти, процедур и функций, блочных конструкций Если/Пока и т.п.
  • Исправлена ошибка дублирования комментария в начале файла при выполнении форматирования документа

v0.6.1

23 May 09:05
Compare
Choose a tag to compare
  • Поле metrics для класса FileInfo сделано необязательным. Добавлена возможность сериализации/десериализации отсутствующего значения поля

v0.6.0

20 May 10:32
Compare
Choose a tag to compare
  • Добавлен подсчет метрик:
    • количество процедур
    • количество функций
    • количество выражений
    • количество строк
    • количество строк кода
  • Изменен формат репортера json - в вывод добавлена информация о метриках
  • Добавлен сборщик информации о методах
  • Добавлены новые диагностики:
    • Ограничение на использование устаревшего метода "Сообщить"
    • Ограничение на использование конструкторов с параметрами при объявлении структуры
    • Ограничение на количество значений свойств, передваваемых в конструктор структуры
    • Использование НайтиПоНаименованию и НайтиПоКоду
    • Использование служебных тегов
  • Добавлено разграничение диагностик по области применения - all, bsl, os
  • Обновлены ссылки на стандарты ИТС в описании диагностик

v0.5.0

17 Apr 08:23
Compare
Choose a tag to compare
  • Добавлена возможность конфигурации запускаемых диагностик с помощью конфигурационного файла. Для передачи используется ключ запуска --configuration. Подробнее см. документацию.
  • Удален ключ запуска --diagnosticLanguage. Вместо него для указания языка диагностик используется конфигурационный файл
  • Добавлены возможности конфигурирования диагностик:
    • LineLength
    • MethodSize
    • NumberOfOptionalParams
    • NumberOfParams
  • Добавлены диагностики:
    • IfElseDuplicatedCodeBlock - Повторяющиеся блоки кода в синтаксической конструкции Если...Тогда...ИначеЕсли...
    • ProcedureReturnsValue - Процедура не может возвращать значение
  • Добавлен внешний API для получения метаданных диагностик
  • Добавлен перевод сайта и описаний диагностик на английский язык
  • Обновлена версия BSL Parser

v0.4.0

26 Feb 19:01
Compare
Choose a tag to compare
  • Добавлена возможность указания каталога, куда сохраняются файлы репортеров в режиме analyze. Параметр --outputDir ./out
  • Добавлены диагностики:
    • Каноническое написание ключевых слов
    • Повторяющиеся условия в синтаксической конструкции Если...Тогда...ИначеЕсли...
    • Ограничение на количество не обязательных параметров метода
    • Ограничение на количество параметров метода
    • Порядок параметров метода
    • Присвоение переменной самой себе
    • Работа с параметром «Отказ»
    • Использование буквы "ё" в текстах модулей
  • Добавлена возможность форматирования документа и выбранного диапазона
  • Добавлен вывод результатов анализа в формате Generic Issue
  • Обновлена зависимость от BSL Parser

v0.3.0

15 Feb 07:27
2cc4714
Compare
Choose a tag to compare
  • Добавлен репортер в формат JUnit.xml
  • Добавлены диагостики:
    • Пустой оператор
    • Использование синтаксической конструкции Если...Тогда...ИначеЕсли...
    • Вложенный тернарный оператор
    • Использование буквы "ё" в текстах модулей
  • Исправлена проблема парсинга одиночного CR (символ "возврат каретки")
  • Отключены пока нереализованные возможности (completion и hover)
  • Диагностика на пустой блок кода больше не срабатывает на процедурах
  • Диагностика на длину строки больше не срабатывает в многострочных строках
  • Уточнено позиционирование диагностики на наличие точки с запятой
  • Диагностика на количество операторов в одной строке больше не срабатывает на пустой оператор
  • Обновлена зависимость от BSL Parser