Перейти к содержанию

Приложение А. История релизов

Релиз 1.32 от 13.11.2020

  • 10 новых проверок качества кода
  • Новый тег onec-compatible для 1С: Совместимо
  • Новый профиль качества "1С:Совместимо". Профиль качества с учетом новых проверок содержит уже 23 правила
  • Минимальная версия SonarQube 7.9. Проверки в профиле "Аудит безопасности" разделены на "Уязвимости" и "Потенцииальные уязвимости"

Новые правила

  • Некорректный режим управления блокировкой данных (DataLockControlMode)
  • Использование устаревшего параметра "АвтоТест" (AutoTestUsage)
  • Использование некорректного символа (BadSymbol)
  • Метод "НачатьТранзакцию" должен располагаться непосредственно перед оператором "Попытка" (BeginTransactionInTryBlock)
  • Использование строк подключения к БД (DatabaseConnect)
  • Экспортный метод в модуле команды (ExportMethodInCommandModule)
  • Экспортная процедура или функция в модуле формы (ExportMethodInFormModule)
  • Код с программным интерфейсом должен быть расположен внутри публичных областей (ExportMethodOutsideStandardRegion)
  • Имя переменной не должно состоять из одного символа (OneSymbolVariable)
  • Процедура не должна возвращать значения (ProcedureAsFunction)

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

  • Правила CommonModuleNamePrivileged, HardcodedPaths добавлены в профиль "Аудит безопасности", новый тип проверки "Потенциальная уязвимость"
  • Правила StandardRegion, DocumentationExcessParametersInParametersSection, DocumentationExcessParametersSection, DeprecatedMethodMessage, QueryKeyWordNotCanonical, DocumentationMissingParametersInParametersSection, SpaceAfterCommentSymbols, DocumentationReturnValue, DocumentationParameters, MetadataNameLongerThan, GoTo, InteractiveDelete, OneStatementPerLine, SameMetadataNames, VariableWithoutDescription, DocumentationReturnValueSectionPosition, ExportVariableWithoutDescription, UndocumentedPublicApi добавлены в профиль "1C: Совместимо"
  • Исправлена проблема для формата конфигуратора по исключению отчетов "на поддержке" с опцией skipVendorSupportedObjects

Релиз 1.31 от 08.10.2020

  • Оптимизация использования ОЗУ (при использовании Java 11)
  • Обновление зависимости JLanguageTool до 5.0 (используется для поиска опечаток)
  • Переход на библиотеку CommonMark от Atlassian для парсинга описаний проверок. Теперь описания хранятся в "ванильном" Markdown

Новые правила

  • Использование неиндексированной временной таблицы
  • Стандартные области не должны дублироваться
  • Получение контейнера ключей из файла
  • Обязательное использование непустого пароля в МенеджерКриптографии
  • Одинаковые имена у объекта и его табличной части

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

  • DocumentationReturnValue: исправлено ложное срабатывание проверки на описание возвращаемого результата
  • RepeatingStandardRegions: исправлено FP дублей стандартных областей
  • HardcodedURL: для исключения ссылок добавлена соответствующая настройка Ссылки исключения
  • HardcodeEmail: изменено регулярное выражение для поиска e-mail. Теперь проверка отлавливает адреса вида mail@localhost
  • Проверка SpellCheckName переименована в Spelling. Для отключения вывода в тексте замечания слов для замены добавлена настройка Показывать возможные замены слова
  • DeletingTempFile: исправлено FP при "сильной" вложенности

Изменения в документации

  • Изменение описания проверок UsingLogicalOrInWhere, ForbiddenMethodCurrentDate, QuantityArguments

Релиз 1.30 от 04.09.2020

  • 11 новых проверок кода
  • Новый профиль качества - "Аудит безопасности"
  • Документация по подсистеме открыта и находится по адресу https://docs.checkbsl.org/

Новые правила

  • Код не должен содержать указание паролей в явном виде
  • Конструкторы объектов не должны содержать указания паролей в явном виде
  • Вызовы методов не должны содержать указания паролей в явном виде
  • IP адреса не должны храниться в коде
  • В коде не должны содержаться e-mail
  • Небезопасное подключение внешней компоненты
  • Использование внешних объектов без безопасного режима
  • Ограничение права интерактивного удаления объектов
  • Событие "ПриОткрытии" не должно содержать код открытия других форм
  • Запись файлов в каталог "КаталогПрограммы()"
  • В коде не должны содержаться e-mail адреса неизвестных доменов

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

  • Проверка "Опасность использования операторов сбора системной информации и пользователей операционной системы" разделена на две:
    • Опасность использования информации о пользователях операционной системы
    • Опасность использования операторов сбора системной информации системы
  • Проверка "В коде не должно содержаться URL-ссылок" теперь имеет тип "Уязвимость"
  • Изменен механизм получения абсолютного пути к исходным файлам

Релиз 1.29 от 10.08.2020

Глобальные изменения

  • Поддержка формата EDT

  • Переход на систему сборки Gradle

Новые правила

  • Обращение к несуществующему элементу формы

  • Директива компиляции и определение метода на одной строке

  • Инициализированы не все параметры запроса

  • Циклические ссылки в коллекциях

  • Использование Новый Шрифт, Новый Цвет, Новый Рамка

  • Итератор или счетчик цикла используется вне тела цикла

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

  • Устранена проблема в правиле "Неиспользуемые переменные" с хаотичным падением анализа

  • Проверка описаний переменных работает с несколькими переменными в одной строке

  • Корректировка ссылки на ИТС в описании проверки "Использование метода РольДоступна"

Релиз 1.28 от 07.07.2020

Глобальные изменения

  • Добавлена поддержка сервера SonarQube версии 8.2 и 8.3.

Новые правила

  • Переменные должны содержать описание

  • Экспортные переменные должны содержать описание

  • Неверная проверка на пустой результат выполнения запроса

  • Новые правила языка запросов:

  • Правила образования псевдонимов полей запроса

  • Правила образования псевдонимов источников запроса

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

  • Улучшено отображение правила "Уменьшите количество серверных вызовов" при использовании сервера SonarQube 8.2+

Релиз 1.27 от 10.03.2020

Глобальные изменения

  • Добавлена поддержка JDK 9, 10, 11, 12, 13

  • Значительное ускорение анализа при использовании JDK 11 и выше

  • Добавлена поддержка сервера SonarQube версии 8.1.

  • Значительно уменьшено потребление памяти при работе плагина.

Новые правила

  • Потерянная/затираемая переменная

  • Неверное и бессмысленное арифметическое выражение

  • Новые правила языка запросов:

  • Излишнее разыменование в условии соединения

  • Излишнее разыменование в условии ГДЕ

  • Использование отрицания НЕ для условия И в секции ГДЕ запроса

  • Использование отрицания НЕ для условия И в секции ПО запроса

  • Важность правила "Запросы, выполняющие соединение с вложенными запросами или виртуальными таблицами" увеличена до "Критическая"

Запросы от клиентов

  • В правило «Строковые литералы не должны дублироваться» добавлен параметр для пропуска любых строк, удовлетворяющих регулярному выражению, и уточнено описание параметров

  • Улучшено поведение правила "Отсутствие проверки на NULL или приведения через ЕстьNULL при левых/правых соединениях"

  • Пропускаются выражения внутри оператора "ВЫБОР КОГДА ТОГДА ИНАЧЕ", если есть проверка "КОГДА ТаблицаИзСоединения.Поле ЕСТЬ NULL"

  • Исправлены ложные замечания для правила "Обработчик события формы указывает на несуществующий метод"

  • Удален показ замечаний на переменных у правила Экспортные процедуры/функции/переменные должны содержать описание, теперь правило называется "Экспортные процедуры/функции должны содержать описание"

  • Улучшены правила "Неиспользуемая процедура/функция" и "Неиспользуемый параметр процедуры/функции"

  • Методы-обработчики событий внутри кода расширений, для которых заданы директивы препроцессора &После, &Вместо, &До, исключены из замечаний этих правил

  • Исправлено падение анализа на правиле "Изменение свойств только для чтения на управляемой форме"

Прочие доработки

  • Доработано правило «Излишнее разыменовании полей в запросе», убраны некоторые ложные срабатывания

  • Добавлен показ дополнительных мест вхождения для правил работы с транзакцией

  • Ускорена производительность плагина

  • Дополнена поставляемая документация – добавлены описания правил + расширен раздел FAQ и описание примеров использования.

Релиз 1.26 от 29.11.2019

Новый вариант поставки

Подсистема «Управление качеством кода» начинает поставляться через «Личный кабинет клиента Серебряной Пули» – https://app.silverbulleters.org/

Новые правила

  • Нельзя создавать прикладные объекты с использованием конструктора

  • Неверная передача параметров в конструкторы объектов 1С

  • Проверка удаления временного файла после использования

  • Ожидание завершения фонового задания без указания таймаута

  • Нельзя возвращать изменяемые значения, например, коллекции, из методов модулей с повторным использованием возвращаемых значений

  • Нельзя возвращать МенеджерВременныхТаблиц, Запрос, объекты базы данных из методов модулей с повторным использованием возвращаемых значений с типом На время сеанса

  • Изменение свойств только для чтения на управляемой форме

  • Не следует применять неверные способы параметризации формы при открытии формы

  • Неверное использование метода БезопасныйРежим

  • Не задан префикс Подключаемый для методов модуля формы, подключаемых через УстановитьДействие

Поддержка новых особенностей языка 1С

  • Поддержка для расширений новой аннотации &ИзменениеИКонтроль и директив препроцессора #Вставка … #КонецВставки и #Удаление … #КонецУдаления

Запросы от клиентов

  • Доработан пропуск событий справочников/документов (модули, менеджеры объектов и их форм) для правил Неиспользуемый метод, Неиспользуемый параметр – в т.ч. и англоязычных имен событий

  • Исправлен баг – перестал работать экспорт правил внешнего анализатора

  • Исправлено эпизодическое падение анализа на правиле Обращение к стандартному реквизиту регистра составного типа без использования конструкции Выразить или с неверным использованием Выразить

  • Добавлен специальный параметр для пропуска слов-идентификаторов 1С для уменьшения количества замечаний от правила Строковые литералы не должны дублироваться

  • Изменено поведение правила Не рекомендуется смешивать символы разных языков в названиях переменных и именах процедур/функций для исключения множества одинаковых срабатываний:

  • если есть модуль с неверным наименованием, замечание от правила будет выдано всего один раз для 1й строки модуля – если есть метод с неверным наименованием, замечание от правила будет выдано всего один раз для строки определения метода

  • Доработано поведение правила Проверка существования метаданных в текстах запросов - правило не работает, если нет анализа метаданных, например, при анализе только внешних обработок

  • Для правила Имена процедур/функций должны быть написаны без опечаток добавлены дополнительные исключения

Документация

  • Описание всех новых правил добавлено в поставляемую документацию

Релиз 1.25 от 17.10.2019

Правила для языка запросов

  • "Проверка существования метаданных в запросах" – по запросу от клиентов

  • "Виртуальные таблицы в запросе без отборов"

Правила для кода 1С

  • "Совпадающие выражения в вычислениях"

  • "Таймауты при работе с внешними ресурсами"

  • "Вызов метода из БСП ОбщегоНазначения.WSПрокси без таймаута"

  • "Неверная конкатенация строк с ошибкой "Преобразование к типу число не может быть выполнено"

  • "Неверно использовать подряд знак сложения "Выражение ++ Выражение2"

  • "На управляемой форме нельзя присваивать значение переменной Параметры"

  • "На управляемой форме лучше не использовать отдельную переменную с именем "Параметры", т.к. она скрывает штатную коллекцию формы "Параметры"

Запросы от клиентов

  • Исправлены ложные срабатывания и уточнены правила:
  • "Магические числа"
  • "Излишнее разыменование полей" для поля "Родитель" для языка запросов
  • "Запуск внешнего приложения может быть небезопасен"

  • Доработки:

  • Уточнена работа правила "Запросы, выполняющие соединение с вложенными запросами или виртуальными таблицами" теперь ловятся соединения с вложенными запросами или виртуальными таблицами, описанными как первая таблица в запросе
  • Уточнена грамматика языка для правильного регистронезависимого поиска в некоторых случаях неканонического написания кода 1С

Документация

  • Доработано описание некоторых правил для языка запросов

Релиз 1.24 от 01.10.2019

Правила для языка запросов

  • Обращение к объектной модели при обходе выборки – возможные потери производительности.

Запросы от клиентов

  • Устранены ложные срабатывания правила

  • Магические даты

  • Добавлен параметр для игнорирования пустых дат (в разных вариантах написания)

  • Строковые литералы не должны дублироваться

  • Добавлен параметр исключения для параметров используемых функций

  • Добавлен параметр для управления списком пропускаемых функций.

  • Добавлен параметр "Минимальное количество найденных строк, при котором выдается замечание"

  • Не рекомендуется смешивать символы разных языков в одной строке

  • Подозрительный цикл

  • Функция всегда возвращает одно и то же константное значение

  • Исправлена привнесенная ошибка в правиле "Магические числа" – не работали исключения "Цел, Дата" и прочие.

Новые правила для кода 1С

  • "Подозрительное продолжение цикла"

  • "Подозрительное использование арифметических операций при конкатенации со строкой"

  • "Последней строкой в функции должен быть Возврат"

  • "Сложные условия"

  • Дополнено правило "Пустой блок кода" – теперь ловятся пустые блоки кода, даже если внутри есть комментарии

  • Добавлен параметр – Считать проблемным блок Исключение, в котором нет кода даже при наличии комментария. По умолчанию – Истина

  • Добавлен параметр – Считать проблемным блок, в котором нет кода, но есть комментарий. По умолчанию – Истина

  • В файлах OneScript процедура ПриСозданииОбъекта теперь не помечается как неиспользуемая процедура.

  • Доработки:

  • Ускорен анализ правил для языка запросов
  • "Обращение к стандартному реквизиту регистра составного типа без использования конструкции Выразить или с неверным использованием Выразить"
  • "Совместное использование "УПОРЯДОЧИТЬ ПО" с конструкцией "РАЗЛИЧНЫЕ" "
  • "Запросы, выполняющие соединение с вложенными запросами или виртуальными таблицами"
  • "Использование вложенных запросов в условии соединения"
  • "Отсутствие проверки на NULL или приведения через ЕстьNULL при левых/правых соединениях"
  • Ускорен анализ правил для кода 1С -Ограничения на использование "Выполнить" и "Вычислить" на сервере
  • "Слишком много возвратов внутри функции"
  • "Количество необязательных параметров процедуры/функции более 3"
  • "Неиспользуемый реквизит формы"
  • Исправлены ложные срабатывания правила "Метод вызывается с одинаковыми параметрами" на Дата(ХХХ, 1, 1).
  • Добавлены теги SonarQube к правилам, у которых теги не были указаны.

Документация

  • Добавлены описания новых правил в поставляемую документацию.

Релиз 1.23 от 12.09.2019

Новые правила для кода 1С

  • Перезапись параметров метода, переданных по значению

  • Строковые литералы не должны повторяться – Копипаст

  • Магические даты

  • Уязвимость. Запуск приложения

  • Уязвимость. Прекращение работы с параметром перезапуска

  • Смешивание русских и английских имен в именах переменных и названиях методов

Исправления

  • Исключены ложные срабатывания у правила "Неиспользуемая процедура/функция"

Документация

В поставляемой документации добавлены:

  • история релизов,

  • описания правил из релиза 1.23,

  • описания всех правил для языка запросов 1С;

Дополнительно документированы правила для языка запросов 1С:

  • Правило – Бесполезное приведение к NULL (UselessIsNull),

  • Правило – Сравнение с NULL в запросе должно быть только через ЕСТЬ NULL (ComparingWithNullCheck).

Релиз 1.22 от 09.09.2019

Новые правила для борьбы с дублированием кода/копипаст в коде 1С

  • Одинаковое содержимое методов - копипаст и дублирование кода.

  • Выражение с вызовом метода используется в нескольких ветках кода.

  • В вызове глобального метода 1С совпадают значения передаваемых аргументов.

Новые правила для кода 1С по клиентским запросам

  • Использование кириллицы и латиницы (русских и английских символов) в одной строке.

  • Использование маски . не рекомендуется.

Новые правила для кода 1С

  • Цикл не должен быть бесконечным.

  • Безусловное прерывание цикла.

  • Конкатенация строк может быть заменена на СтрСоединить или СтрШаблон.

  • Вызов вложенного конструктора Структуры при вызове функций.

  • Функция всегда возвращает одно и то же константное значение – булево, строка, дата.

  • Использование Если/ИначеЕсли с константным выражением.

  • Локальные переменные не должны инициализироваться и тут же возвращаться из функции.

  • Правило "Приведение выражения к строке при сравнении со строковой константой".

  • Неверные отступы в коде.

  • Тернарные операторы не рекомендуются к использованию.

  • Отрицание в имени функции/переменной.

  • Функция или булева переменная всегда используется с Не.

  • Проверка заполненности/пустоты коллекции.

Релиз 1.21 от 01.08.2019

Новые правила для языка запросов

  • ЕстьNull для полей, полученных из результатов левого соединения.

Новые правила для кода 1С

  • Несколько вызовов серверных методов внутри клиентского метода.

  • Одинаковые блоки, следующие друг за другом.

  • Значительно улучшено определение одинаковых выражений:

  • улучшено поведение правил + правила ускорены (фактически все правила переписаны):

  • «Сравнение выражения с самим собой»,

  • «Одинаковый код во взаимоисключаемых ветках ветвления кода»,

  • «Одинаковые условия в блоке "Если ИначеЕсли"»,

  • «Одинаковые части условий в разных условиях блока "Если ИначеЕсли"»,

  • добавлена поддержка новых операций для выявления схожества блоков кода,

  • проверке равенства выражений «сравнения, сложения, умножения, И, Или» не учитывается порядок выражений, например,
    А = Б теперь совпадает с Б = А,
    А + 10 + 20 совпадает с 20 + А + 10.

  • Большое количество возвратов в методе.

  • Вложенные вызовы функций.

  • Изменение итератора/счетчика цикла.

Клиентские обращения

  • Редкая ошибка разбора BSL – передача "Знач" перед параметром функции.

  • Проблема с правилом Магические числа для функции и конструктора Цвет – клиент Деснол.

  • Ложное определение строки как текста запроса.

  • Ошибка правила "Возможно выполнение внешнего кода".

  • Исправить двойной показ замечания для Выполнить/Вычислить.

  • Правило значительно ускорено и полностью переписано.

Исправления

  • Исправлен баг – при включенном флаге sonar.bsl.skipVendorSupportedObjects файлы не из конфигурации (внешние обработки) не анализировались, также добавлен показ предупреждения о том, что включен флаг исключения файлов на поддержке, в логе анализа.

  • Баг с падением анализа на 8.3.15 на ванесса-сервисах при расчете метрики "Когнитивная сложность".

Доработки

  • Улучшена обработка некоторых выражений для правила "Возможное использование неинициализированной переменной".

Увеличена до Critical важность правила:

  • "Одинаковые условия в последовательности вида
    Если (....) ИначеЕсли (....) ИначеЕсли (....)",

  • Значение итератора не используется в цикле,

  • Удаление из коллекции внутри цикла по коллекции.

  • Отметить тегами безопасности все правила, в которых есть ссылки на misra, cwe, cert

  • Уточнены описания многих правил, в т.ч. добавлены ссылки на мировые стандарты кода, в т.ч. и по безопасности.

Внутренние работы
  • Восстановлено автоподключение активных правил к Максимальному профилю.

  • Отделил тестовую функциональность из боевого класса BSLAstScanner.

  • Возможность для запросов указать несколько вхождений нод для одного замечания.

  • Решить проблему падения сборки на CI Gitlab – ошибкой сборки caused by: java.io.FileNotFoundException: /builds/products/sonarqube/sonarqube-bsl-plugin/bsl-core/target/classes (Is a directory).

Релиз 1.20 от 13.06.2019

Новые правила

  • Правило “Одинаковые части условий в разных условиях блока ‘Если ИначеЕсли’”.

  • Правило “Неиспользуемый итератор цикла”.

  • Правило “Удаление из коллекции внутри цикла по коллекции”.

Глобальные изменения

  • Упрощена работа с параметризуемыми правилами – запрос от клиента.

  • Настраиваемые правила можно быстро найти по тегу “parameters”.

  • В документацию добавлен раздел “Настраиваемые правила с возможность параметризации”.

  • Исправлено падение анализа на некоторых модулях 1С одного из клиентов – запрос от клиента.

  • Повышена серьезность правила “Разрываемые тексты запросов – Невозможно разобрать строку, которая выглядит как запрос” до уровня “MAJOR”.

Доработано

  • Исключен показ “шумящих” пометок об использовании переменной в правиле “Возможное использование неинициализированной переменной” – запрос от клиента.

Исправлено

  • Правило “Имена процедур/функций должны быть написаны без опечаток” ошибочно не активировалось ни в одном профиле.

Версия 1.3.0 расширения для интеграции с 1С:АПК:

Доработано
  • Особенности и исправленные ошибки теперь не выгружаются как замечания – запрос от клиента.
  • В описаниях правил доработаны ссылки на стандарты ИТС.
  • Дополнена документация – запрос от клиента.
Исправлено
  • Не загружались замечания, связанные с некоторых свойствами некоторых метаданных 1С.

Релиз 1.19 от 14.05.2019

  • Доработан лексический анализатор для корректного учета пробелов/символов табуляции при подсчете строки.

  • Соответственно улучшен алгоритм подсчета количества символов в правиле "Ограничение на длину строки".

  • Из встроенных профилей качества исключаются устаревшие правила.

Релиз 1.2.1 пакета sonar-edt-result

Исправлено
  • Пакет sonar-edt-result мог не устанавливаться при установке из ospx-файла поставки.

Релиз 1.2.0 расширения для интеграции с 1С:АПК.

  • Доработана документация по интеграции с 1С:АПК.
Исправлено
  • Не всегда загружаются замечания от 1С:АПК на сервере SonarQube.
Добавлено
  • При загрузке замечаний от 1С:АПК выдаются предупреждения, если не существует активного правила с указанным кодом правила в файле замечаний от 1С:АПК.

Релиз 1.18 от 30.04.2019

  • 3 поставляемых профиля качества – "Рекомендуемый", "Максимальный" и "Минимальный".

  • Замечания на сервере привязываются к строке и позиции в строке, а не только к строке.

Исправления

  • Для модулей команд не учитываются настройки поддержки и в итоге даже залоченный от изменений модуль команды попадает в анализ.

  • Ложное срабатывание правила bsl:LineLength на последней строке запроса.

  • Ложные срабатывание правила bsl:MetadataSynonym.

  • Созданы полезные скрипты для ускорения запуска коробочных и облачных клиентов SonarQube 1C (BSL) Plugin.

  • Дополнена документация плагина – добавлены более подробные рекомендации об исключениях файлов из анализа.

Инструмент vanessa-sonar версии 1.2.0

  • Уточнена генерация файла sonar-project.properties.

Релиз 1.17 от 29.03.2019

  • Добавлена поддержка версии 7.7 сервера SonarQube.

  • Исправлена ошибка аварийного завершения анализа на некоторых модулях bsl.

Релиз 1.16 от 22.03.2019

  • Значительно ускорена производительность анализа при разбиении исходников на модули SonarQube.

Реализовано значительное ускорение анализа конфигураций, находящихся на частичной поддержке поставщика:

  • реализовано исключение из анализа объектов метаданных, находящихся на полной поддержке поставщика в статусе "Не редактируется",

  • могут исключаться bsl-модули и xml-файлы метаданных.

Реализован импорт полностью управляемых внешних замечаний от сторонних статических анализаторов кода:

  • управляемость замечаниями – главное отличие от штатной загрузки неуправляемых внешних замечаний, предоставляемых сервером SonarQube,

  • документирован формат получения описаний правил сторонних статических анализаторов кода.

Реализован импорт управляемых внешних замечаний от 1С:EDT:

  • файл описания управляемых правил 1С:EDT добавлен в поставку.

Расширен импорт управляемых внешних замечаний от 1С:EDT, получаемых с помощью инструмента "sonar-edt-result":

  • добавлена возможность управления списком правил, выгружаемых из 1С:АПК 1.2,

  • файл описания управляемых правил 1С:АПК 1.2 добавлен в поставку.

vanessa-sonar

В поставку включен инструмент "vanessa-sonar" – инструмент управления настройкой анализа:

Инструмент умеет создавать готовый файл настроек sonar-project.properties, а также группировать исходники по подсистемам 1С для управления подсистема 1С как модулями на сервере SonarQube.

Доработаны правила "Неиспользуемый параметр процедуры/функции" и "Неиспользуемая процедура/функция":

  • Значительно уменьшено количество ложных срабатываний для модулей метаданных, ускорен анализ.

  • Улучшена производительность анализа.

  • Исправлены мелкие ошибки, иногда возникающие при импорте внешних замечаний от 1С:АПК.

Релиз 1.15 от 15.02.2019

  • Значительно доработана поставляемая документация плагина.

  • Новое правило “Использование инструкций препроцессора в клиент-серверных общих модулях”.

  • Улучшена производительность анализа.

  • В поставку включен инструмент “sonar-edt-result” – Конвертер результатов проверки 1C:Enterprise Development Tools (EDT) в json-формат для SonarQube.

Дополнения/исправления:

  • При расчете цикломатической сложности теперь учитывается тернарный оператор “?”.

  • Для исключения ложных срабатываний доработаны правила:

  • “Неиспользуемый параметр процедуры/функции”,

  • “Проверка, что функция является процедурой”,

  • “Ссылка на отсутствующую роль”,

  • “Синоним метаданного не соответствует имени метаданного”,

  • “Псевдонимы для полей таблиц”.

Релиз 1.14 от 26.12.2018

  • Добавлен анализатор описания метаданных для развитие анализа метаданных (требуется дополнительная настройка сканирования. См. ниже «Настройка сканирования для анализа метаданных»)

Новые правила анализа метаданных

  • Представление объекта не соответствует имени метаданного.

  • Длина наименования объекта метаданных больше N символов.

  • Длина наименования объекта процедуры/функции больше N символов.

  • Присутствие защищенных, запароленных модулей.

Новые правила

  • Несколько вложенных и последовательно идущих “Если”.

  • Использование запроса в цикле в рамках одного модуля.

  • Запись константы внутри транзакции проведения документа/из модуля документа.

  • Использование функции “ОткрытьМодально”.

  • Использование функции “НайтиПоРеквизиту”.

  • Проверка наличие метода, объявленного при создании оповещения.

Исправления/дополнения

  • Улучшена производительность анализа.
  • Восстановлена работоспособность XPATH-правил.
  • Доработан парсер языка для более точного учета инструкций препроцессора.

Улучшена работа с АПК – добавлено расширение для работы в АПК, позволяющее выполнять автозапуск АПК и подготовку файла результатов АПК:

  • в поставку включена документация на использование расширения и подключение файла результатов АПК к сканированию исходников с помощью нашего плагина.

Уточнен показ замечаний для правил

  • Одинаковый код во взаимоисключаемых ветках ветвления кода,

  • Одинаковые условия в последовательности вида "Если (....) ИначеЕсли (....) ИначеЕсли (....)".

  • Уточнен разбор запросов.

  • Правила на использование “НайтиПоКоду” и “НайтиПоНаименованию” стали отлавливать больше проблемных ситуаций.

Настройка сканирования для анализа метаданных

Для анализа метаданных требуется перенастроить анализ xml-файлов в файле “sonar-project.properties”. См. раздел «Настройка sonar-project.properties»

Релиз 1.13 от 16.11.2018

  • Плагин поддерживает работу на сервере SonarQube 7.4.

Борьба с дублирование кода и копипастом:

  • Правило “Блоки Тогда и Иначе оператора Если и других взаимоисключаемых операторов полностью совпадают, скорее всего, имеется логическая ошибка.”

  • Правило “Одинаковые условия в последовательности вида Если (....) ИначеЕсли (....) ИначеЕсли (....).”

Проверки использования попыток и исключений

  • Правило “Конструкция Попытка...Исключение...КонецПопытки не содержит кода в исключении”,

  • Правило “Использование конструкции Попытка/Исключение для приведения значения к типу”.

  • Проверки правильности использования директив компиляции:

  • Правило “Все методы на управляемой форме должны иметь директиву компиляции”,

  • Правило “Использована недопустимая директива компиляции.”.

  • Правило “Неразрешимые ссылки на объекты метаданных в элементах форм и в динамических списках”:

  • поиск на форме ошибок вида Справочник.ФизическиеЛица.Форма.ФормаЭлемента.Форма Неразрешимые ссылки на объекты метаданных (12),

Проверки использования процедур/функций

  • Правило “Запрет пропуска обязательных параметров вызываемых методов”,

  • Правило “Вероятно, функция является процедурой”.

  • Правило для поиска уязвимостей “Использование Вычислить”.

Прочие правила

  • Правило “Мусорные или пустые комментарии”,

  • Правило “Использование лишних пробелов”.

  • Уточнены правила, в т.ч. уменьшено количество ложных срабатываний для правил:

  • “Неиспользуемая процедура” при проверке расширения,
  • “Проверка используемости параметров обработчика событий” при проверке расширения.

  • Добавлен FAQ по плагину.

  • Небольшое ускорение работы, исправление разных мелких проблем, иногда возникающих при анализе.

Релиз 1.12 от 24.09.2018

(В том числе релиз 1.12.1 от 09.10.2018 и релиз 1.12.2 от 14.11.2018)

  • Правило “Обращение к стандартному реквизиту составного типа регистров” . Если регистратор регистра является составным типом, тогда использование реквизитов регистратора через точку в запросе без функции “Выразить” является неверным.
  • Правило “Выражение сравнивается с самим собой”

  • Правило “Недостижимый код”

  • Правило на проверку уязвимости “Использование операторов «СистемнаяИнформация» и «ПользователиОС»”

Доработки

  • Уточнено правило “Возможно использование неинициализированной переменной” - уменьшено количество ложных срабатываний

  • Устранены или уточнены ранее не очень понятные предупреждения о метаданных, в xml-описании которых выявлены проблемы

  • Некоторое ускорение анализа исходников с помощью дополнительного кеширования

Релиз 1.11 от 12.07.2018

  • Реализована поддержка сервера SonarQube версии 7.1 и 7.2

  • Исправлены выявленные ошибки в правилах анализа и справке

Релиз 1.10 от 21.06.2018

  • Правило “Возможно использование неинициализированной переменной”. Выявляет случаи, когда переменная создается в блоке условий или циклов, а затем используется вне этих блоков.
  • Добавлен анализ процедур, используемых в качестве обработчиков оповещений. Методы, являющиеся обработчиками оповещений, обрабатываются, как отдельная категория методов.
  • Правило “Экспортные процедуры/функции/переменные должны содержать описание” доработано с учетом использования метода в качестве обработчика оповещения.

Релиз 1.9 от 23.04.2018

Расширение поведения

  • оптимизирована работа с большими конфигурациями 1С за счет перехода на более новое api SonarQube,

  • изменена минимальная версия sonarQube для использования - 6.7, максимально стабильная – 7 0, условно стабильная 7.1,

  • добавлена реализации английских имен областей ОБРАБОТЧИКИСОБЫТИЙФОРМЫ (EVENTSHANDLERS), СЛУЖЕБНЫЕПРОЦЕДУРЫИФУНКЦИИ (SERVICEPROCEDURESANDFUNCTIONS) - пример проекта на английском https://github.com/FoxyLinkIO/FoxyLink/tree/develop/src,

  • реализована поддержка sonarlint в релизах старше 7.0 совместно с плагином sonarlint-vscode,

  • проверка правописания проверяется в многопоточном режиме и выполняется быстрей,

  • оптимизировано построение графа метаданных 1С за счет применение улучшенного парсера XSD схем.

Новые правила в релизе

  • проверка “В строке допускается не более одного оператора”

Изменение (улучшение) правил

  • В правило обработки закоментированого кода добавлена возможность пропускать строки начинающие с определенных символов указанных пользователем, например: “Разделитель - запятая. Пример заполнения: //, //”.

  • Определение клиентского модуля в правиле проверки именования теперь определяется на основе свойств метаданных находящихся в кеше ВызовСервера = Истина или Сервер = Истина (ранее использовалось только свойство ВызовСервера).

  • Оптимизирована работа правила определения правильности именования клиент-серверных модулей.

  • Оптимизирована работа правила определения правильности именования глобальных модулей.

  • Оптимизирована работа правила определения правильности именования модулей работающих в привилегированном режиме.

  • Проверка постфиксов общих модулей теперь поддерживает английские константы ServerCallCached, Cached, ClientCached и т.д.

  • В проверку на обязательность применения конструкции ОбменДанными.Загрузка добавлена оптимизация по работе с английскими наименованиями.

  • В проверку правописания добавлена поддержка типовых аббревиатур используемых в стандарте разработки на 1С.

  • в проверка на неиспользуемый параметр функции добавлена поддержка анализа конструкции внутри функции Выполнить().

  • В анализаторе запросов исправлено позиционирование точки срабатывания правил в случаях когда текст запроса содерджит комментарии.

  • В анализаторе запросов 1С добавлена полная поддержка псевдонимов полей в секциях ИНДЕКСИРОВАТЬ ПО, ГРУППИРОВаТЬ ПО и их английским аналогам.

  • Улучшено определение не документируемых экспортных процедур и функций в части английской документации.

Дополнительные новости
  • Начата локализация SonarQube 7.1 на русский - статус можно наблюдать в связанном репозитории https://github.com/silverbulleters/sonar-l10n-ru/tree/develop

  • На внутреннем контуре начата отладка релиза 1.9.2 c поддержкой версии sonarQube 7.1

Релиз 1.8.1 от 09.11.2017

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

  • Добавлена обработка конструкций вида ВЫРАЖЕНИЕ В (ВложеннаяОперация), например А <> Истина В (ИСТИНА)

  • Исправлена ошибка разбора запроса на операторе МЕЖДУ с отрицательными числами

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

  • Добавлена поддержка всех Unicode символов-букв при разборе текста модуля

  • Исправлены падения sonar-scanner на *nix-системах

Релиз 1.8 от 31.10.2017

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

  • Последовательные пустые строки (bsl:ConsecutiveBlankLines)

  • Пропущено указание последнего параметра при вызове метода (bsl:MissingLastParameter)

  • Ключевые слова должны быть отделены пробелом (bsl:SpaceAroundKeyword)

Исправлены проверки

  • Убрано ложное срабатывание проверки “Разыменование полей в запросе” (bsl:ExcessiveDereferenceFields) на обращении к колонкам табличной части, выбираемым через Объект.ТабличнаяЧасть.(Поле1, Поле2)

  • Убрано ложное срабатывание проверки “Наличие всех параметров в комментарии экспортной процедуры (функции)” (bsl:DocumentationMissingParametersInParametersSection), если тип параметра содержит символ _

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

  • Проверка “Ограничение на выполнение «внешнего» кода на сервере” (bsl:ExecuteExport) переименована в “Ограничения на использование "Выполнить" и "Вычислить" на сервере”. Обновлено описание проверки.

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

  • Плагин переведен на работу с API версии 6.6. Для работы требуется версия SonarQube 6.6 и новее. Более старые версии не поддерживаются.

  • В логах sonar-scanner больше не показывается информация о расчете устаревшей метрики

  • Метрики Cognitive Complexity / Function и Cognitive Complexity / File переведы в домен Complexity

  • Для настройки анализируемых расширений файлов включена возможность указания расширений в виде списка

Релиз 1.7 от 19.10.2017

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

  • Проверка “Необязательные параметры процедуры/функции расположены перед обязательными” (bsl:SequenceArguments) переведена в разряд “Ошибок”, время на исправление увеличено до 5 минут

  • В проверку “Наличие пробела в начале комментария” (bsl:SpaceAfterCommentSymbols) добавлена настройка, позволяющая задать пропуск комментариев, начинающихся с определенных символов

  • Проверка “Имена процедур/функций должны быть написаны без опечаток” (bsl:SpellCheckMethodName) больше не срабатывает с требованием привести слово к верхнему регистру

  • Проверка “Назначение псевдонимов полям запроса” (bsl:AliasMustHaveAsKeyword) переименована в “Пропущено ключевое слово”КАК" перед псевдонимом поля", изменено сообщение, серьезность проверки повышена до MAJOR, время на исправление понижено до 1 минуты. Принцип срабатывания проверки не изменился.

Исправлены проверки

  • Исправлено позиционирование проверки “Не следует использовать логическое”ИЛИ" в секции “ГДЕ” запроса"

  • Исправлены ошибочные срабатывания проверок на устаревшие/запрещенные методы, когда имя функции использовалось как имя свойства или переменной

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

  • Максимальное количество строк кода в процедуре/функции (bsl:MethodSizeLOC)

  • Использование несуществующих директив компиляции (bsl:UnknownCompilationDirective)

  • Назначение псевдонимов полям запроса (bsl:RequireAliasInTempTable)

  • Отсутствует обязательная конструкция Если ОбменДанными.Загрузка Тогда ... (bsl:DataExchangeLoad)

  • Запрет использования выражений и полей таблиц в операторе ПОДОБНО (bsl:ExpressionInLikeOperator)

  • Текст запроса не должен быть написан в одну строку (bsl:QueryOneLiner)

  • Сообщение содержит нерекомендуемое местоимение (“Вы”, “Вас” и пр.). (bsl:NonRecommendedPronoun)

  • В параметрах функций РольДоступна() и Пользователи.РолиДоступны() должны быть указаны существующие роли (bsl:UnknownRole)

  • Термин 1C:Предприятие ошибочно задан с латинской C (bsl:LatinC)

  • Рекомендуется избегать в названии общего модуля таких общих слов как “Процедуры”, “Функции”, “Обработчики”, “Модуль”, “Функциональность” и т.п. (bsl:CommonModuleInvalidName)

  • Клиентский общий модуль должен именоваться с постфиксом Клиент (bsl:CommonModuleNameClient)

  • Клиент-серверный общий модуль должен именоваться с постфиксом КлиентСервер (bsl:CommonModuleNameClientServer)

  • Глобальный общий модуль должен именоваться с постфиксом Глобальный (bsl:CommonModuleNameGlobal)

  • Для глобальных модулей постфикс Клиент добавлять не следует (bsl:CommonModuleNameGlobalClient)

  • Модули, выполняющиеся в привилегированном режиме, именуются с постфиксом ПолныеПрава (bsl:CommonModuleNamePrivileged)

  • Общий модуль с повторно используемыми значениями должен именоваться с постфиксом ПовтИсп (bsl:CommonModuleNameReuseValue)

  • Общий модуль с вызовом сервера должен именоваться с постфиксом ВызовСервера (bsl:CommonModuleNameServerCall)

  • Неиспользуемый реквизит формы (bsl:UnusedFormAttribute)

  • Неиспользуемая переменная (bsl:UnusedVariable) - добавлена в режиме BETA, в режиме анализа конфигурации срабатывает только для общих модулей и модулей менеджеров

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

  • В качестве правого операнда операции сравнения “ПОДОБНО” указано поле таблицы. (bsl:ACC_FUNC_379)

  • Термин “1C:Предприятие” ошибочно задан с латинской “C” (bsl:ACC_FUNC_321)

  • Обращение к несуществующей роли (bsl:ACC_FUNC_283)

  • Сообщение содержит нерекомендуемое местоимение (“Вы”, “Вас” и пр.) (bsl:ACC_000000223)

  • Глобальный общий модуль должен именоваться с постфиксом “Глобальный” (bsl:ACC_FUNC_083)

  • Не следует добавлять постфикс “Клиент” в наименование глобального общего модуля с постфиксом “Глобальный” (bsl:ACC_FUNC_363)

  • Общий модуль с повторно используемыми значениями должен именоваться с постфиксом “ПовтИсп” (bsl:ACC_FUNC_085)

  • Общий модуль, для которого предусмотрен вызов сервера, должен именоваться с постфиксом “ВызовСервера” (bsl:ACC_FUNC_090)

  • Общий модуль, доступный на сервере и на клиенте, должен именоваться с постфиксом “КлиентСервер” (bsl:ACC_000000245)

  • Общий модуль, доступный только на клиенте, должен именоваться с постфиксом “Клиент” (bsl:ACC_FUNC_080)

  • Привилегированный общий модуль должен именоваться с постфиксом “ПолныеПрава” (bsl:ACC_FUNC_084)

  • Рекомендуется избегать в названии общего модуля таких общих слов как “Процедуры”, “Функции”, “Обработчики”, “Модуль”, “Функциональность” и т.п. (bsl:ACC_FUNC_073)

  • Отсутствует обязательная конструкция “Если ОбменДанными.Загрузка Тогда …” (bsl:ACC_FUNC_075)

  • Общий модуль недопустимого типа (bsl:ACC_FUNC_125)

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

  • Исправлена обработка процедур, у которых объявлена и аннотация и директива компиляции

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

  • В грамматику внесены встроенные функции языка запросов

  • Значительно переработана структура выражения EXPRESSION

  • Исправлена ошибка разбора запросов с использованием конструкций ИТОГИ и АВТОУПОРЯДОЧИВАНИЕ в одном пакете запроса

  • Добавлена обработка символов * в значении “все поля таблицы”

  • В конструкции ПЕРИОДАМИ добавлена обработка параметров запроса и пустых ограничивающих значений дат

  • В конструкцию ИТОГИ ... ПО добавлена обработка выражений, не являющихся агрегатной функцией

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

  • Значительно уменьшено потребление оперативной памяти в момент выполнения клиентской части анализа

  • Лексер запросов теперь корректно обрабатывает завершение строки запроса без точки с запятой или скобки. Как следствие большее количество многострочных строк теперь анализируются как запросы.

  • Анализатор запроса теперь корректно обрабатывает запросы, начинающиеся со встроенных функций

  • Разбор результата работы инструмента покрытия кода больше не требует подключения к интернету

  • Сообщение о неуспешном разборе строки как текста запроса переведено на уровень логов TRACE

Релиз 1.6.1 от 11.09.2017

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

Изменены сообщения в проверках
  • Каноническое написание ключевых слов (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)

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

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

Исправлено

  • Падение анализатора при наличии комментариев, содержащих "$"

  • Ложное срабатывание проверок описания процедур и функций в случае отсутствия пробела после “//”

Релиз 1.6.0 от 28.08.2017

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

  • Оптимизированы (затраты оперативной памяти, производительность) проверки:
  • Имена процедур/функций должны быть написаны без опечаток (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. Вместо него раз в пять секунд выводится информация о текущем анализируемом файле и об общем количестве файлов

  • В лог добавлен прогресс сохранения результатов анализа

  • Обновлена библиотека проверки орфографии

Релиз 1.5.0 от 27.07.2017

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

  • Исправлено позиционирование проверок запроса, когда текст модуля содержит комментарии

  • Исправлено определение переопределяемых общих модулей в проверке “Пустая процедура/функция”

  • Исправлено позиционирование проверки “Количество параметров процедуры/функции более 7”

  • Исправлено позиционирование проверки “Количество необязательных параметров процедуры/функции более 3”

  • Исправлено позиционирование проверки “Необязательные параметры процедуры/функции расположены перед обязательными”

  • Убрано ложное срабатывание проверки “Неиспользуемая процедура/функция”, когда вызываемый метод находится внутри сложного выражения

  • Убрано ложное срабатывание проверки “Сравнение с NULL в запросе должно быть только через ЕСТЬ NULL” на конструкции ДЛЯ ИЗМЕНЕНИЯ, блокирующей виртуальную таблицу

  • Проверка “В начале процедуры обработки регламентного задания отсутствует вызов метода”ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();" (bsl:ACC_FUNC_302) объявлена устаревшей

  • Проверка “Ключевое слово написано не канонически.” (bsl:ACC_000000248) объявлена устаревшей

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

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

  • Магические числа не должны использоваться (bsl:MagicNumber). Имеет настройки:

  • Разделенный запятыми список разрешенных чисел
  • Разделенный запятыми список процедур и функций, в которых разрешено использование “магических” чисел

  • Неиспользуемый параметр процедуры/функции (bsl:UnusedParameter). Имеет настройки:

  • Анализировать обработчики подписок на события
  • Анализировать переопределяемые общие модули
  • В режиме анализа конфигурации срабатывает только на общих модулях

  • Использование вложенных запросов в условии соединения (bsl:SubqueryWhere)

  • XPath правило языка запросов (bsl:XPathQuery) – шаблон правила на базе XPath для языка запросов

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

  • В грамматику запросов добавлена обработка упорядочивания и автоупорядичивания во вложенных запросах

  • В грамматику запросов добавлена обработка вложенной выборки из табличной части (ВЫБРАТЬ Документ.Реквизит, Таблица.ТЧ.(Поле1, Поле2))

  • В грамматику запросов добавлена обработка синонимов итоговых полей

  • Исправлена ошибка разбора запроса, содержащего конструкции ИНДЕКСИРОВАТЬ и ДЛЯ ИЗМЕНЕНИЯ в одном пакете

  • Исправлены ошибки разбора запроса, когда имя поля, получаемое через точку, совпадает с одним из ключевых слов языка запросов (например, Ссылка)

  • Исправлена ошибка конфликта конструкции ЕСТЬ NULL и последующего идентификатора

  • Анализатор запросов научился анализировать запросы, начинающиеся с литералов (ВЫБРАТЬ ИСТИНА КАК Поле1...)

  • В грамматику встроенного языка добавлено выделение используемых переменных в отдельный узел

Релиз 1.4.0 от 11.07.2017

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

  • Проверка “Имена процедур/функций должны быть написаны без опечаток”:
  • обновлен словарь
  • в пользовательский интерфейс добавлена настройка слов-исключений
  • проверка переведена в статус READY

  • Исправлено позиционирование проверки “Пустая процедура/функция”

  • Исправлено позиционирование первого срабатывания проверок “Когнитивная сложность методов не должна быть слишком высокой” и “Цикломатическая сложность методов не должна быть слишком высокой”

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

  • Неиспользуемая процедура/функция

  • Запросы, выполняющие соединение с вложенными запросами или виртуальными таблицами

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

В грамматику запросов добавлены
  • обработка ключевых слов периодов (ДЕНЬ, МЕСЯЦ и прочее)

  • обработка конструкций (Поле1, Поле2) В (ВЫБРАТЬ Поле1, Поле2 ИЗ ...)

  • расширены правила секции ИТОГИ, добавлена секция ПЕРИОДАМИ

В грамматику встроенного языка 1С добавлены конструкции
  • ДобавитьОбработчик

  • УдалитьОбработчик

Прочее

  • В интерфейс настроек вынесена настройка File suffixes для указания расширений файлов, анализируемых плагином

  • В ядре плагина и проверках исправлены места, которые могли привести к ошибкам NullPointerException и остановке процесса анализа

  • Выключенные проверки языка запросов больше не приводят к остановке процесса анализа

Релиз 1.3.0 от 02.04.2017

Исправлены проверки

  • В проверке “Экспортные процедуры/функции/переменные должны содержать описание” убрано ложное срабатывание, когда перед определением процедуры находилась инструкция препроцессору

  • В проверке “Прямое указание GUID в коде” убрано ложное срабатывание на пустом GUID

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

  • В начале процедуры обработки регламентного задания отсутствует вызов метода “ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();”.

  • Запрет на использования конструкции “ПЕРВЫЕ” совместно с конструкцией “АВТОУПОРЯДОЧИВАНИЕ”

  • Ограничение на выполнение «внешнего» кода на сервере

  • Ограничение на использование конструкции “АВТОУПОРЯДОЧИВАНИЕ”

  • Совместное использование “УПОРЯДОЧИТЬ ПО” с конструкцией “РАЗЛИЧНЫЕ”

  • Функция должна возвращать значение

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

  • Язык запросов: * Добавлено правило грамматической конструкции “УНИЧТОЖИТЬ” * Добавлено правило грамматической конструкции “ИМЕЮЩИЕ” * Добавлена обработка пустого пакета

Прочее

  • Добавлена обработка метаданных конфигурации в формате XML

  • Обеспечена работа с SonarQube 6.3

Релиз 1.2.0 от 22.02.2017

  • Все проверки (за исключением проверки на дублирующиеся участки кода) переведены на русский язык

Исправлены проверки

  • В проверке “Прямое указание пути в коде” убраны ложные срабатывания c символом ~

  • В проверке “Использование строковых литералов в тексте запроса” убраны ложные срабатывания на пустые строки

  • Скорректировано положение замечания для проверки “Цикломатическая сложность методов не должна быть слишком высокой”

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

  • В коде не должно содержаться URL-ссылок

  • Прямое указание GUID в коде

  • ЗафиксироватьТранзакцию находится вне конструкции ПопыткаИсключение

  • Для вызова НачатьТранзакцию отсутствует парный вызов ЗафиксироватьТранзакцию

  • Для вызова НачатьТранзакцию отсутствует парный вызов ОтменитьТранзакцию

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

  • Добавлено правило грамматической конструкции “ПОДОБНО” в языке запросов

Релиз 1.1.0 от 01.02.2017

Добавлены новые метрики

  • Общая Когнитивная Сложность

  • Общая Когнитивная Сложность файла

  • Средняя Когнитивная Сложность метода

  • Метрики объединены в новый домен “Когнитивная сложность”

Изменены метрики

  • Расчет цикломатической сложности приведен к ее каноничному виду

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

  • Когнитивная сложность метода не должна превышать установленного значения

  • Необязательные параметры расположены перед обязательными

  • Использование конструкции “ДЛЯ ИЗМЕНЕНИЯ”

  • Использование запрещенного метода ТекущаяДата()

  • Использование вложенного тернарного оператора

  • Количество необязательных параметров процедуры/функции более 3

  • Количество параметров процедуры/функции более 7

  • Необязательные параметры процедуры/функции расположены перед обязательными

Добавлена проверка в режиме BETA

  • Имя процедуры/функции должно быть написано без опечаток

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

  • Исправлено правило грамматической конструкции “ДЛЯ ИЗМЕНЕНИЯ” в языке запросов

Релиз 1.0.0 от 11.01.2017

Первый релиз