SonarQube 1C (BSL) - Выпуск релиза 1.6


#1

1.6.0

Изменены проверки:

  • Оптимизированы (затраты оперативной памяти, производительность) проверки:
    • Имена процедур/функций должны быть написаны без опечаток (bsl:SpellCheckMethodName)
    • Комментарий с тегом “FIXME” FixmeTagPresence (bsl:FixmeTagPresence)
    • Использование тега “NOSONAR” (bsl:NoSonar)
    • Комментарий с тегом “TODO” (bsl:TodoTagPresence)
    • В коде не должно содержаться URL-ссылок (bsl:HardcodedURL)
    • Прямое указание пути в коде (bsl:HardcodedPaths)
    • Прямое указание GUID в коде (bsl:HardcodedGUID)
  • Изменены сообщения в проверках:
    • Соответствие имен процедур и функций соглашению о кодировании (bsl:MethodNaming)
    • Правила образования имен переменных (bsl:VariableNaming)

Добавлены проверки:

  • Блоки кода не должны быть “закомментированы” (bsl:CommentedOutCodeLine)
  • В модуле должны быть определены стандартные области (bsl:StandardRegionCheck)
  • Избыточное наличие описания параметра в комментарии к процедуре (функции), отсутствущего в сигнатуре вызова (bsl:DocumentationExcessParametersInParametersSection)
  • Избыточное наличие секции “Параметры” в комментарии процедуры (функции) без параметров (bsl:DocumentationExcessParametersSection)
  • Использована конструкция “ДанныеФормыВЗначение()” (bsl:DeprecatedMethodFormDataToValue)
  • Использование буквы “ё” в комментариях (bsl:UsingUOInComment)
  • Каноническое написание ключевых слов запроса (bsl:QueryKeyWordNotCanonical)
  • Код должен быть расположен внутри области (bsl:CodeOutsideRegion)
  • Код не должен содержать пустых областей (bsl:EmptyRegion)
  • Наличие всех параметров в комментарии экспортной процедуры (функции) (bsl:DocumentationMissingParametersInParametersSection)
  • Наличие пробела в начале комментария (bsl:SpaceAfterCommentSymbols)
  • Наличие секции параметров в описании экспортной процедуры (функции) (bsl:DocumentationParameters)
  • Неэкспортная процедура (функция) в разделах “ПрограммныйИнтерфейс” или “СлужебныйПрограммныйИнтерфейс” (bsl:NonExportMethodInInterfaceRegion)
  • Секция “Возвращаемое значение” должна располагаться после секции “Параметры” в комментарии к функции (bsl:DocumentationReturnValueSectionPosition)
  • Соответствие имен областей соглашению о кодировании (bsl:RegionNaming)
  • Стандартные области не должны быть вложенными в другие области (bsl:NestedStandardRegion)

Проверки отмечены как устаревшие:

  • Комментарий содержит букву “ё”. (bsl:ACC_FUNC_006)
  • Использована конструкция “ДанныеФормыВЗначение()”. (bsl:ACC_FUNC_068)
  • В модуле должны быть определены стандартные области. (bsl:ACC_FUNC_239)
  • В модуле есть код, который расположен вне области. (bsl:ACC_FUNC_240)
  • Нет пробела в начале комментария. (bsl:ACC_FUNC_246)
  • Ключевое слово запроса написано не канонически. (bsl:ACC_FUNC_254)
  • Закомментированный код расположен вне описания процедуры или функции. (bsl:ACC_FUNC_282)
  • Стандартная область является вложенной. (bsl:ACC_FUNC_286)
  • Неэкспортная процедура (функция) в разделе “ПрограммныйИнтерфейс”. (bsl:ACC_FUNC_388)
  • Неэкспортная процедура (функция) в разделе “СлужебныйПрограммныйИнтерфейс”. (bsl:ACC_FUNC_389)
  • Отсутствует или неверно описана секция “Параметры” в комментарии к экспортной процедуре (функции). (bsl:ACC_FUNC_399)
  • Отсутствует или неверно описана секция “Возвращаемое значение” в комментарии к экспортной функции. (bsl:ACC_FUNC_400)
  • Не описаны некоторые параметры в секции “Параметры” в комментарии к экспортной процедуре (функции). (bsl:ACC_FUNC_401)
  • Секция “Возвращаемое значение” находится перед секцией “Параметры” в комментарии к экспортной функции. (bsl:ACC_FUNC_402)
  • Описаны лишние параметры в секции “Параметры” в комментарии к экспортной процедуре (функции). (bsl:ACC_FUNC_405)
  • Описана секция “Параметры” в комментарии к экспортной процедуре (функции), не имеющей параметров. (bsl:ACC_FUNC_410)

Изменения правил грамматики встроенного языка:

  • Добавлены аннотации расширений (Перед, Вместо, После)
  • Области вынесены в отдельные грамматические узлы
  • Добавлена обертка над стандартным типом узла IDENTIFIER, учитывающая особенности встроенного языка
  • Добавлена частичная поддержка разрыва выражений инструкциями Область
  • В узел директив компиляции добавлены отдельные под-узлы для каждого типа директивы

Изменения правил грамматики запросов:

  • Добавлен высосокоуровеный узел, означающий текст запроса целиком.
  • Добавлена обработка конструкции ВЫБОР в режиме “switch” (ВЫБОР Поле КОГДА 1 ТОГДА ... КОГДА 2 ТОГДА ... КОНЕЦ)
  • Добавлена обработка обращений через точку к результату оператора ВЫРАЗИТЬ
  • Исправлены ошибки разбора вложенных запросов внутри конструкции В

Прочие изменения:

  • Убран спам “Context set to…” из лога sonar-scanner. Вместо него раз в пять секунд выводится информация о текущем анализуеремом файле и об общем количестве файлов
  • В лог добавлен прогресс сохранения результатов анализа
  • Обновлена библиотека проверки орфографии

#2

Баг-фикс релизы тоже бывают… :slight_smile:


#3

1.6.1

Изменены проверки:

  • Изменены сообщения в проверках:

    • Каноническое написание ключевых слов (bsl:KeyWordNotCanonical)
    • Блоки кода не должны быть “закомментированы” (bsl:CommentedOutCodeLine)
    • Чрезмерный уровень вложенности конструкций “Если”, “Для”, “Пока” и “Попытка” (bsl:NestedControlFlowDepth)
    • Использование вложенных запросов в условии соединения (bsl:SubqueryWhere)
    • Запросы, выполняющие соединение с вложенными запросами или виртуальными таблицами(bsl:SubqueryJoin)
    • Использование метода “Сообщить()” (bsl:DeprecatedMethodMessage)
  • Изменены наименования проверок:

    • Использование строковых литералов в тексте запроса (bsl:StringLiteralInQuery)
    • Разыменование полей в запросе (bsl:ExcessiveDereferenceFields)
  • Изменены описания в проверках:

    • В модуле должны быть определены стандартные области (bsl:StandardRegionCheck)
  • Исправлено позиционирование:

    • Для вызова НачатьТранзакцию отсутствует парный вызов ОтменитьТранзакцию (bsl:PairBeginRollbackTransactionCall)
    • Для вызова НачатьТранзакцию отсутствует парный вызов ЗафиксироватьТранзакцию (bsl:PairBeginCommitTransactionCall)
    • Неиспользуемая процедура/функция (bsl:UnusedMethod)
  • Прочие изменения:

    • В проверку Имена процедур/функций должны быть написаны без опечаток (bsl:SpellCheckMethodName) добавлена настройка:
      • Пропускать неизвестные слова
    • Проверка Каноническое написание ключевых слов (bsl:KeyWordNotCanonical) исправлена под изменение грамматики
      • Настройка “Разрешить написание логических операторов “ИЛИ” и “НЕ” как “Или” и “Не”” (AllowTitleCaseLogicalKeywords) по умолчанию включена
      • Настройка “Разрешить в написании оператора “Для каждого” заглавную букву “К”” (AllowTitleCaseForEachKeywords) по умолчанию включена

Проверки отмечены как устаревшие:

  • Строка текста модуля содержит букву “ё”. (bsl:ACC_FUNC_163)
  • В структуре модуля присутствуют пустые области. (bsl:ACC_FUNC_273)

Изменения правил грамматики встроенного языка:

  • Конструкция Для каждого приведена к каноническому написанию

Исправлено:

  • Падение анализатора при наличии комментариев, содержащих "$"
  • Ложное срабатывание проверок описания процедур и функций в случае отсутствия пробела после “//”