Приложение А. История релизов
Релиз 2024.5 от 24.07.2024
Доработки
- Реализована поддержка работы с SonarQube 10.x
- Исправлены ошибки при анализе модулей с методами Асинх-Ждать
- Исправлено ложное срабатывание правила
Разрываемые тексты запросов
Релиз 2023.5 от 31.03.2023
Новые правила
- Опечатки в комментариях (
CommentSpelling
).
Доработки
- Правило
WrongVerifyEmptyQueryResult
: игнорирует использованиеСледующий()
в условии блокаЕсли...КонецЕсли
при использовании в этом блоке выборки любым способом (например, при присвоении, возврате и передаче в качестве параметров); - Правило
TempTableNotIndexed
: поля таблицы, стоящей в левой части соединения, не требуют индексирования; - Правило
UnknownRole
: имена проверяемых функций вынесены в настраиваемый параметр; - Правило
UsingLeftOuterJoin
: исправлено ошибочное определение стороны соединения при использовании вложенных запросов в источниках (например, в условии временной таблицы).
Релиз 2023.4 от 03.03.2023
Общее
- Экранирующие комментарии не участвуют в парсинге документирующих комментариев. Они не считаются частью текстов документирования и не вызывают ложных срабатываний проверок документирующих комментариев.
Релиз 2023.3 от 17.02.2023
Общее
-
В парсер языка запросов добавлена возможность указывать внешние источники в качестве таблицы оператора
Поместить
. -
Исправлена ошибка экранирования проверки
OneSymbolVariable
. -
Правило
ExportVariable
исключено из профиляРекомендуемый
. -
В исключения синтаксических проверок по умолчанию добавлены исключения форм слов
Штрихкод
,Штрихкодирование
,Маркировка
,Немаркируемый
.
Доработки
-
Правила
QuerySourceAliasNaming
иQueryFieldAliasNaming
: добавлены исключения для псевдонимов, генерируемых конструктором запросов.QuerySourceAliasNaming
также допускает в качестве псевдонима использовать идентификатор последней части квалификатора источника. -
Правило
UnusedParameterCheck
: в сообщении об ошибке выводит имена параметров и методов в том же виде, как они введены в исходном коде (не приводит к заглавным). -
Правило
WrongVerifyEmptyQueryResult
: разрешает использовать выборку из запроса в условии, напримерЕсли Выборка.Следующий() Тогда
, если внутри блока используются данные, полученные из этой выборки. -
Правило
CommentedOutCodeLine
: не проверяет комментарии указания строгой типизацииСм. ОбщийМодуль.ИмяФункции()
. -
Правила
DocumentationReturnValue
иDocumentationParameters
: добавлено игнорирование документирующих комментариев, ссылающихся в описании на другие процедуры и функции// См. ОбщийМодуль.ИмяФункции()
.
Релиз 2023.2 от 03.02.2023
Доработки
-
Правило
ExceptWithoutLog
: настраиваемый параметр для указания своих методов логирования работает регистронезависимо и принимает любые имена методов (глобальные методы, методы общих модулей, модулей менеджеров и объектов). В настройке нужно указывать только имя метода (после точки). -
Правило
ExportMethodOutsideStandardRegion
: добавлено исключение для модулей форм, т.к. в модулях форм по стандарту необязательно наличие областей программного интерфейса. -
Правила
BeginTransactionInTryBlock
иWrongUsageOfRollbackTransactionMethod
: уточнены описания, приведены в соответствие реализованным в правилах проверкам, примеры заменены на рекомендации с ИТС. -
Правило
KeyWordNotCanonical
: добавлена проверкаИ
,Неопределено
,Истина
,Ложь
,Null
. Изменена логика работы настраиваемых параметров: по умолчанию считает вернымиДля Каждого
,Для каждого
,ИЛИ
,Или
,НЕ
,Не
,ЛОЖЬ
,Ложь
,ИСТИНА
,Истина
,NULL
,Null
. Параметрами включается более строгая проверка -Для Каждого
,Или
,Не
,Ложь
,Истина
,Null
. -
Правило
ImmediatelyReturnedVariable
: проверка игнорирует ситуацию, когда в присвоении в правой части участвует возвращаемая переменная. -
Удалено правило
ReturnsDocumentation
, т.к. проверка оказалась задублирована. -
Актуализированы описания всех правил, проверяющих документирующие комментарии (
Documentation*
);
Релиз 2023.1 от 20.01.2023
Общее
-
Исправлена работа настройки пропуска кода основной конфигурации
sonar.bsl.skipVendorCodeInChangeAndValidate
, настройка работает независимо от параметра использования поглощающих комментариевsonar.bsl.skipAbsorptionComments
. -
Настройка
sonar.bsl.skipVendorCodeInChangeAndValidate
добавлена в настраиваемые параметры в веб-интерфейсе.
Доработки
-
Правило
UnusedModule
: актуализирован список исключенных из проверки типов модулей для исправления ложных срабатываний. -
Правило
UndocumentedPublicApi
: по умолчанию проверяет наличие описание только в экспортных процедурах и функциях, размещенных в областиПрограммныйИнтерфейс
. Добавлены параметры для проверки всех экспортных методов и настройки списка проверяемых областей. -
Правило
WrappingArguments
: добавлено исключение для построчного заполнения параметров для исправления ложных срабатываний.
Релиз 2022.8 от 29.12.2022
Общее
- Добавлен параметр
sonar.bsl.maxDepthSearchConfiguration
, позволяющий настроить глубину поиска корня конфигурации. Эта настройка необходима для проектов на больших репозиториях с большой глубиной вложенности. Значение по умолчанию - 4. Если при заданной глубине корень конфигурации не будет найден, то не будут выполняться проверки, использующие метаданные.
Доработки
-
Правило
UnknownRole
: исправлены ложные срабатывания при проверке модулей внешних обработок или модулей без контекста метаданных (без корня конфигурации) и анализ многострочных литералов. -
Правило
CodeOutsideRegion
: исправлено ложное срабатывание при применении в модуле конструкции#Иначе ВызватьИсключение(...) #КонецЕсли
согласно стандарту Поддержка толстого клиента, управляемое приложение, клиент-сервер. -
Правило
NestedFunctionCalls
: добавлена настройка исключений, некоторые исключения установлены по умолчанию, добавлена проверка на использование в качестве параметров конструкторов видаНовый
. Разрешено использовать в качестве параметров глобальные и локальный вызовы без параметров, создание структур с тремя и менее параметрами.
Релиз 2022.7 от 06.12.2022
Общее
-
Обновлена библиотека mdclasses до версии 0.10.3.
-
Обновлен механизм проверки лицензий (текущие лицензии продолжают работать в прежнем виде).
-
Доработан механизм поглощающих комментариев. Добавлена возможность отключать конкретные правила на блоки кода, отключать и включать одним комментарием несколько правил, включать проверку всех ранее отключенных правил.
Доработки
- Правило
UnknownRole
: добавлен параметрПроверять существование по всех конфигурациях проекта (учитывать сводный контекст)
, при включении которого поиск ролей будет выполняться во всех конфигурациях проекта, а не только в конфигурации, содержащей анализируемый модуль.
Релиз 2022.6 от 02.11.2022
Общее
-
Защищенные паролем модули пропускаются при построении контекста конфигурации и не выводятся как ошибки разбора кода.
-
Добавлен расчет сводного контекста объектов метаданных:
-
Если в анализируемом проекте присутствует больше одной конфигурации, по ним строится объединенное дерево метаданных, которое используется в правилах для поиска объектов метаданных (проверки их существования). При этом в анализируемой папке могут находиться несколько конфигураций и/или расширений в любом сочетании, все их объекты будут объединены в сводный контекст.
-
Например, при включении для правила сводного контекста объектов метаданных использование в исходном коде расширений незаимствованных объектов основной конфигурации не будет считаться ошибкой.
-
Построение сводного контекста отключается параметром
sonar.bsl.denyCumulativeContextComputation
.
Доработки
- Правило
VerifyMetadata
: добавлен параметрПроверять существование по всех конфигурациях проекта (учитывать сводный контекст)
, при включении которого поиск объектов метаданных будет выполняться во всех конфигурациях проекта, а не только в конфигурации, содержащей анализируемый модуль. - Правило
VerifyMetadataInQuery
: добавлен параметрПроверять существование по всех конфигурациях проекта (учитывать сводный контекст)
, при включении которого поиск объектов метаданных будет выполняться во всех конфигурациях проекта, а не только в конфигурации, содержащей анализируемый модуль. - Правило
EnumValueExistCheck
: добавлен параметрПроверять существование по всех конфигурациях проекта (учитывать сводный контекст)
, при включении которого поиск значений перечислений будет выполняться во всех конфигурациях проекта, а не только в конфигурации, содержащей анализируемый модуль.
Релиз 2022.5 от 22.09.2022
Общее
- Обновлена библиотека mdclasses до версии 0.10.2. Проведена инвентаризация маппинга доступных mdclasses объектов (недостающие объекты и свойства включены в проверки метаданных).
Новые правила
- Безумные многострочные литералы (
CrazyMultilineString
); - Перенос параметров процедур, функций и методов (
WrappingArguments
); - Имя функции начинается с глагола (
FunctionNameStartsWithVerb
).
Доработки
- Правило
VariableWithoutDescription
: убрано ложное срабатывание при наличии директивы компиляции у переменной.
Документация
- Правило
MethodNaming
: описание приведено в соответствие содержанию и логике проверки.
Релиз 2022.4 от 24.08.2022
Общее
- Обновлена библиотека mdclasses до версии 0.10: в проверки метаданных включены новые типы объектов метаданных (внешние источники данных, планы обменов, боты).
Новые правила
- Перенос арифметических выражений (
WrappingArithmeticExpressions
); - Перенос логических выражений (
WrappingBooleanExpressions
); - Использование "ё" в метаданных (
YOInMetadata
); - Обязательные роли не являются основными (
StandardRolesNotInDefaults
); - Устаревшие синхронные методы объекта HTTPСоединение (
DeprecatedHttpConnectionMethods8321
); - Бесполезные скобки в выражениях (
UselessParenthesis
).
Доработки
- Правило
ParseError
: убрано ложное срабатывание при разборе модулей, защищенных паролем; - Правило
NoPasswordProtectedModules
: включена проверка всех модулей, которые можно защитить паролем, добавлена проверка модулей в формате EDT.
Документация
- Правило
LineLength
: описание приведено в соответствие содержанию и логике проверки; - Правило
VerifyMetadata
: исправлена опечатка в сообщении об ошибке.
Релиз 2022.3 от 24.06.2022
Общее
- Добавлена возможность исключать из проверки код в расширениях;
- При использовании пустого профиля качества плагин не будет начинать полноценный анализ исходных файлов.
Новые правила
- Установлено право "ИнтерактивнаяПометкаУдаленияПредопределенныхДанных" (
InteractiveSetDeletionMarkPredefinedData
); - Установлено право "ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных" (
InteractiveClearDeletionMarkPredefinedData
); - Отсутствуют необходимые права у роли "ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок" (
InteractiveOpenExtMissingRights
).
Релиз 2022.2 от 27.04.2022
Общее
- В проект добавлен препроцессор языка 1С
Новые правила
- Некорректный синоним обязательной роли (
WrongStandardRoleSynonym
) - Отсутствует обязательная роль (
MissingStandardRole
) - Ограничение права интерактивного удаления помеченных на удаление предопределенных объектов (
InteractiveDeletionOfMarkedPredefined
) - Нерекомендуемое использование метода "ЗаписьЖурналаРегистрации" (
WriteLogEventWrongUsage
) - Ограниченное использование оператора "Перейти" (
RestrictedGoToUsage
)
Доработки
- Исправлено наименование правила
AsyncCallOnExitWithoutCancel
Следующие правила переработаны с учетом нового препроцессора языка 1С:
CodeOutsideRegion
EmptyRegion
ExportMethodOutsideStandardRegion
NestedStandardRegion
NonStandardRegion
RegionNaming
RepeatingStandardRegions
StandardRegion
NonExportMethodInInterfaceRegion
Релиз 2022.1 от 18.02.2022
Общее
- Значительно переработаны стандартные профили качества. Часть проверок исключена из всех профилей, для их включения необходимо вручную добавить необходимую проверку в пользовательский профиль качества
Новые правила
- Взаимодействие с внешними ресурсами (
UsingExternalObjectsCheck
) - Метаданные расширения не содержат префикса (
ExtensionMetadataWithoutPrefix
) - Использование недоступных асинхронных методов (
UnavailableAsyncMethods
) - Отсутствие логирования ошибки (
ExceptWithoutLog
) - Неправильный тип расширения (
WrongExtensionType
)
Доработки
- Правило
InteractiveDeletionOfPredefinedCheck
исправлено NPE при проверках пустых ролей. - Исправлено NPE при расчете поглощающих комментариев
Документация
- Версия mkdocs обновлена до 8.1.5
Релиз 2021.7 от 06.12.2021
Общее
- Теперь в проекте 300 нативных правил
- У части проверок снят статус
Beta
Новые правила
- Вызов несуществующего метода объекта (
NonExistentMethod
) - Проверка существования метаданных в коде (
VerifyMetadata
) - Бессмысленный асинхронный метод (
UselessAsyncMethod
) - Опечатки в текстах запросов (
QuerySpelling
) - Некорректный синоним (
WrongSynonym
) - Синонимы должны быть написаны без опечаток (
SynonymSpelling
) - Вызов асинхронных методов в событии ПриЗавершенииРаботыСистемы без установки Отказа (
AsyncCallOnExitWithoutCancel
) - Использование точки с запятой в конце метода (
SemicolonAfterMethod
) - Поддержка обычного приложения (
OrdinaryAppSupport
) - Ограничение права интерактивного удаления предопределенных (
InteractiveDeletionOfPredefined
)
Доработки
- Исправлена ошибка экранирования кода, при использовании русских слов "выкл/вкл"
- Значение свойства
sonar.bsl.platformEdition
по умолчанию теперь в форматеVERSION_8_x_x
- Правило
UndefinedVariableUsage
: учтены реквизиты объектов и форм - Правило
UnusedFormAttribute
: учтены преобразования объектов в прикладные типы и обратно - Правило
CodeOutsideRegion
: модуля команды теперь обрабатывается корректно - Правило
StandardRegion
: исключены срабатывания на области, у которых есть пробел между хешем и ключевым словомОбласть
- Правила
UnusedMethodCheck
иUnusedParameter
: из анализа временно исключены формы (до перехода на mdclasses 1.0) - Правило
DeprecatedGlobalCall
: исключены срабатывания на методах, которые еще не существуют к текущей версии совместимости - Правило
ScheduledOnStart
: теперь поддерживается формат EDT - Правило
EnumValueExist
: теперь поддерживается анализ перечисленияКлавиша
Документация
- Добавлена страница с лицензиями используемых библиотек
- Уточнено описание
SilverLint для EDT
- Поправлена разметка в списках
- Исправлено некоторое количество опечаток
Релиз 2021.6 от 29.09.2021
Общее
- 7 новых правил проверки качества кода
- Поддержка разыменования предопределенных значений в грамматике языка запросов
Новые правила
- Использование экспортной переменной
ExportVariable
- Избыточное использование перечисления параметров
TrailingComma
- Вызов асинхронных методов в событии
ПриЗавершенииРаботыСистемы
AsyncCallOnExit
- Использование синхронных методов в транзакции
SynchronousMethodsInTransaction
- Метод недоступный в веб-клиенте
UnavailableWebClientMethod
- Чтение свойства доступного только для записи
SaveOnlyProperty
- Обращение к несуществующему значению перечисления
EnumValueExist
Доработки
- Правило
DataExchangeLoad
: теперь учитывается параметр-источник в подписках на события - Правило
UnusedParameterCheck
: теперь использует контекст платформы - Правило
SynchronousMethods
: OneScript исключен из анализа - Правило
MDOWithoutSynonym
: исправлен NPE при анализе расширений 1C - Правило
ScheduledOnStartCheck
: исправлен NPE при анализе расширений 1C - Свойство проекта
sonar.bsl.platformEdition
поддерживает значения в формате8.x.x
/VERSION_8_x_x
Документация
- Дополнено описание некоторых правил
Релиз 2021.5.1 от 10.08.2021
Доработки:
- Правило
DeprecatedThisForm
: теперь проверяются только модули форм; - Правило
UsingReservedNames
: теперь не учитывается регистр написания имен каталогов выгрузки общих модулей.
Релиз 2021.5 от 30.07.2021
- 9 новых правил проверки качества кода
- Новое свойство проекта
sonar.bsl.platformEdition
- версия платформы 1С, используется для анализа внешних отчетов и обработок - Анализ потока данных: пред расчет таблицы символов
Новые правила
- Присвоение значения свойству доступному только для чтения
ReadOnlyProperty
- Некорректное использование СтрШаблон
StrTemplate
- Использование зарезервированных имен
UsingReservedNames
- Перекрытие зарезервированных имен
OverlappingReservedNames
- Приведение к числу слишком большой разрядности
CastToNumber
- Использование синхронных методов
SynchronousMethods
- Использование устаревшего метода "Найти"
DeprecatedFind
- Использование устаревшего типа "УправляемаяФорма"
DeprecatedManagedForm
- Использование устаревшего свойства "ЭтаФорма"
DeprecatedThisForm
Доработки
- Правило
UnusedMethod
: учтен контекст платформы - Правило
DeprecatedGlobalCall
: из анализа исключены скрипты на OneScript - Правило
UnknownPreprocessorCommand
: из анализа исключены скрипты на OneScript - Исправлено позиционирования нарушений в динамическом списке
- В анализе метаданных теперь участвуют формы без модулей
Документация
- Добавлена информация о параметре включения поглощающих комментариях
Релиз 2021.4 от 28.06.2021
- 7 новых правил проверки качества
- Доработан парсер с учетом специфики платформы 8.3.18:
- Ключевые слова
Ждать
иАсинх
можно использовать как обычные имена переменных, вне асинхронных методов; - Расширена поддержка асинхронных выражений;
- Добавлена поддержка экранирования срабатывания замечаний в коде с помощью служебных тегов;
- Добавлена начальная поддержка контекста платформы;
- Из плагина удалена телеметрия;
Новые правила
- Использование устаревших методов глобального контекста (
DeprecatedGlobalCall
); - Нарушена сортировка объектов метаданных верхнего уровня по имени по возрастанию в дереве метаданных (
BrokenSortingTopMetadataObjects
); - Скрытие пароля в метаданных (
HidingPasswordInMetadata
). - Краткая информация о конфигурации отличается от синонима (
BriefInformation
); - Подробная информация отличается от синонима (
DetailedInformation
); - Синоним должен оканчиваться на номер редакции/подредакции (
ConfigurationVersion
); - В корне конфигурации не заполнены "авторские права" (
Copyright
);
Доработки
- Правило
ExportMethodOutsideStandardRegion
: исправлено ошибочное определение области к которой относится метод; - Правило
FuncIsAProc
: исправлено некорректное срабатывание, при совпадении имен функции и локальной переменной; - Правило
MetadataSynonymCheck
: теперь для объектов метаданных с префиксом "Удалить" ("Obsolete"), проверяется наличие префикса "(не используется)" (англ. "(not used)"); - Правило
UnusedFormAttribute
: теперь из проверки исключается реквизит "Объект", если у него установлено свойство "Основной реквизит"; - Правило
WrongVerifyEmptyQueryResultCheck
: исправлено ложное срабатывание на корректную работу с выборкой запроса; - Правило
StringLiteralInQuery
: исправлено ложное срабатывание на литералы в запросах динамических списков; - Правила
UnusedMethod
,EmptyMethod
иCommentedOutCodeLine
добавлены в профиль "1С: Совместимо"; - Правило
EqualConditions
: исправлено ложное срабатывание на разные выражения, отличающиеся лишь оператором сравнения; - Правило
ExcessFieldsInTemporaryTable
: Исправлены ложные срабатывания на поля используемые во вложенных запросах; - Правило
LostQueryParameter
: исправлены ложное срабатывание на корректную инициализацию запроса и дублирование замечаний; - Правило
CastInTry
: теперь из проверки исключаются вызовы датыДата(1, 1, 1)
; - Правило
UnreachableCode
: переработано с использованием CFG. Добавлен новый параметр, включенный по умолчанию, который исключает из проверки методы содержащие инструкции препроцессора; - Правило
EmptyMethod
: добавлена проверка английских вариантов именования переопределяемого модуля, улучшена производительность; - Правило
AwaitInAsyncMethods
: исключены ложные срабатывания наЖдать
вне асинхронных методов, дополнено описание; - Правило
Spelling
: исправлены "плавающие" результаты проверки, после повторной проверки конфигурации.
Релиз 2021.3 от 07.05.2021
- Расчет графов потока управления
- Поддержка разбора кода с инструкциями препроцессора
#Вставка
,#КонецВставки
,#Удаление
,#КонецУдаления
Новые правила
- Избыточное наличие секции
Параметры
в комментарии процедуры (функции) без параметров (DocumentationExcessParametersSection
) - Наличие типа возвращаемого значения в описании экспортной функции (
ReturnsDocumentation
) - Приведение типов в
Попытке
(CastInTry
) - Использование
Асинх
методов вне клиентского контекста (NotClientAsync
)
Доработки
- Правило
ReturnStatementLast
: все точки выхода функции должны заканчиватьсяВозврат
илиВызватьИсключение
(с помощью графов потока управления). - Правило
EqualBlock
: при сравнении выражений теперь правильно учитывается порядок в котором идут арифметические знаки. - Правило
UnknownPreprocessorCommand
: поддержка инструкций препроцессора#Вставка
,#КонецВставки
,#Удаление
,#КонецУдаления
. - Правило
PairBeginCommitTransactionCall
: из проверки теперь исключается только те методы, которые находятся внутри блока условий и где следующий оператор является прерыванием потока кода. - Правило
UnreachableCode
: исключены срабатывания при нескольких;
подряд. - Правило
OneStatementPerLine
: исключены срабатывания при нескольких;
подряд. - Правило
NonStandardRegion
: расширен список имен стандартных областей. - Правило
Spelling
: ключевое словоНСтр
добавлено в исключения. - Правило
IllegalDeletionFromCollection
: из проверки исключается случаи, когда после удаления или очистки идет оператор прерывания цикла. - Правило
FormEventHandlerPointsToNonExistingMethod
: расширен список имен стандартных обработчиков. - Правило
ReturnObjectsInReuseModule
: исключены срабатывания на методы, возвращающие ссылку, а не объект.
Релиз 2021.2.2 от 12.04.2021
- Исправлено NPE при проверке запросов динамических списков
Релиз 2021.2.1 от 08.04.2021
- Исправлена ошибка расчета контекста модулей
Релиз 2021.2 от 02.04.2021
- Анализ запросов из макетов СКД
- Новый парсер документирующих комментариев
Новые правила
- Экспортный метод в модуле с повторным использованием значений (
PublicMethodInReuseModule
) - Некорректный порядок программных выражений (
StatementBeforeMethodDef
) - Нерекомендуемый вызов устаревшего метода (
DeprecatedMethodCall
) - Использование нестандартных имен областей верхнего уровня (
NonStandardRegion
) - Использование унарного плюса в конкатенации строк (
StringUnaryExpr
) - Неизвестная команда препроцессора (
UnknownPreprocessorCommand
) - Использование не кроссплатформенных объектов (
UsingNotCrossPlatformObjects
) - Использование "Ждать" в не "Асинх" методах (
AwaitInAsyncMethods
) - Неправильное использование метода "ОтменитьТранзакцию" (
WrongUsageOfRollbackTransactionMethod
) - Неиспользуемые поля в выборке временной таблицы (
ExcessFieldsInTemporaryTable
) - Использование сертификатов в коде (
HardcodeCertificate
)
Доработки
- Правило
ExportMethodOutsideStandardRegion
: расширен список разрешенных областей
Релиз 2021.1 от 12.02.2021
- Новое ядро анализа.
- Анализ запросов динамических списков.
- Поддержка конструкций
Асинх
/Ждать
при разборе текстов модулей.
Новые правила
- Роль "АдминистраторСистемы" не содержит необходимых прав доступа (
AdminRightsWithoutNecessaryRights
) - Имена переменных не должны начинаться с нижнего подчеркивания (
UnderscoreInVariableName
) - Имя метаданных должно быть написано без опечаток (
MetadataSpelling
) - Некорректное имя конфигурации (
InvalidConfigurationName
) - Асинхронные конструкции доступны с версии платформы 8.3.18 (
AsyncConstructionsAvailableSince8318
)
Запросы от клиентов
- Правило
FuncIsAProc
: - Не используемые функции исключены из анализа.
- Обработчики "HTTP-сервисов" и "Web-сервисов" исключены из анализа.
- Правило
TrashComments
: исправлено ложные срабатывания на текстах лицензий в начале модулей. - Правило
CompilationDirectiveUse
: поддержка директив "Клиент, МобильноеПриложениеКлиент, МобильноеПриложениеСервер, МобильныйКлиент, ТолстыйКлиентОбычноеПриложение, ТолстыйКлиентУправляемоеПриложение, Сервер, ВнешнееСоединение, ТонкийКлиент, ВебКлиент"
Доработки
- Правило
UndocumentedPublicApi
: правило добавлено в профиль "1С: Совместимо". - Правило
EqualMethodCallsInDifferentCodeBranches
: при расчете одинаковых блоков учитываются только выражения с возвращаемыми значениями. - Правило
FieldMustHaveAlias
: тексты запросов динамических списков по умолчанию не анализируются, но могут быть включены с помощью параметраАнализировать динамические списки
. - Правило
ComparingWithNull
: при анализе теперь не учитывается конструкцияВыразить(NULL КАК ...)
. - Правило
SymbolsFromDifferentLanguages
: из анализа исключены форматные строки. Например,ДФ=dd.MM.yy
. - Правило
UnusedMethod
: теперь в контексте анализа участвуют обработчики формы / элементов формы, команды, подключаемые обработки. Добавлен параметрСписок методов исключений
для исключения "сложных" подключаемых обработчиков. - Правило
Spelling
: значительно уменьшено время анализа за счет кеширования анализируемых данных. - Проверка
SymbolsFromDifferentLanguages
: из анализа исключены строки, превышающие значение параметраЛимит длины строк
. - Исправлено падение анализа с символом "+" в пути к файлу.
Техническое
- Обновление Gradle до 6.8.1
- Переход на Kotlin DSL при конфигурировании Gradle
Релиз 1.33.1 от 25.12.2020
- Исправлена ошибка чтения метаданных расширения в формате EDT, при отсутствии свойства
defaultLanguage
- Исправлена ошибка расчета метаданного для общий модулей в формате EDT
Релиз 1.33 от 18.12.2020
- Пять новых правил проверки
- Чтение метаданных с помощью MDClasses v0.7.0
- Поддержка анализа кода 1С в двух средах разработки (Конфигуратор, VSCode) с помощью технологии SonarLint
Новые правила
- В выражении
Если... Тогда... ИначеЕсли
отсутствует веткаИначе
(IfWithoutElse) - Использование функции
КаталогВременныхФайлов()
(TempFilesDir) - Роль
ПолныеПрава
не содержит необходимых прав доступа (FullRightsRoleWithoutNecessaryRights) - Отсутствует синоним объекта метаданных (MDOWithoutSynonym)
- Отсутствует синоним конфигурации (ConfigurationWithoutSynonym)
Доработки
- При расчете объектов на поддержке учитывается общий уровень "замка"
Запросы от клиентов
- Правило DeletingTempFile: добавлен параметр
Дополнительные имена методов для удаления файлов
. - Правило DataExchangeLoad: Анализируются подписки на события
- Правило Spelling: исправлена ошибка неверного привязывания замечания при массовых срабатываниях
- Правило ExportMethodOutsideStandardRegion: корректировка расчета вложенных областей
Интеграция со средами разработки
Поддержка анализа модулей 1С (.bsl
) с помощью SonarLint и сервера SonarQube в различных средах разработки.
- Конфигуратор: Phoenix BSL для 1С c версии 0.4.0. Актуальная версия v0.4.1
- VSCode: Расширение SonarLint for VSCode 1.19.0-bsl
Релиз 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
Новый вариант поставки
Подсистема "SonarQube 1C (BSL) Plugin" для управления качеством кода начинает поставляться через «Личный кабинет клиента Серебряной Пули» – 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
Первый релиз