Диагностики¶
Используются для проверки кода на соответствие стандартам кодирования и для поиска возможных ошибок.
Некоторые диагностики выключены по умолчанию. Для их включения используйте конфигурационный файл.
Для экранирования отдельных участков кода или файлов от срабатывания диагностик можно воспользоваться специальными комментариями вида // BSLLS:КлючДиагностики-выкл. Более подробно данная функциональность описана в Экранирование участков кода.
Список реализованных диагностик¶
Общее количество: 175
- Потенциальная уязвимость: 8
- Уязвимость: 7
- Ошибка: 55
- Дефект кода: 105
| Ключ | Название | Включена по умолчанию | Важность | Тип | Теги |
|---|---|---|---|---|---|
| AllFunctionPathMustHaveReturn | Все возможные пути выполнения функции должны содержать оператор Возврат | Да | Важный | Дефект кода | unpredictablebadpracticesuspicious |
| AssignAliasFieldsInQuery | Назначение псевдонимов выбранным полям в запросе | Да | Важный | Дефект кода | standardsqlbadpractice |
| BadWords | Запрещенные слова | Нет | Важный | Дефект кода | design |
| BeginTransactionBeforeTryCatch | Нарушение правил работы с транзакциями для метода 'НачатьТранзакцию' | Да | Важный | Ошибка | standard |
| CachedPublic | Кеширование программного интерфейса | Да | Важный | Дефект кода | standarddesign |
| CanonicalSpellingKeywords | Каноническое написание ключевых слов | Да | Информационный | Дефект кода | standard |
| CodeAfterAsyncCall | После вызова асинхронного метода есть строки кода | Нет | Важный | Дефект кода | suspicious |
| CodeBlockBeforeSub | Определения методов должны размещаться перед операторами тела модуля | Да | Блокирующий | Ошибка | error |
| CodeOutOfRegion | Код расположен вне области | Да | Информационный | Дефект кода | standard |
| CognitiveComplexity | Когнитивная сложность | Да | Критичный | Дефект кода | brainoverload |
| CommandModuleExportMethods | Экспортные методы в модулях команд и общих команд | Да | Информационный | Дефект кода | standardclumsy |
| CommentedCode | Закомментированный фрагмент кода | Да | Незначительный | Дефект кода | standardbadpractice |
| CommitTransactionOutsideTryCatch | Нарушение правил работы с транзакциями для метода 'ЗафиксироватьТранзакцию' | Да | Важный | Ошибка | standard |
| CommonModuleAssign | Присвоение общему модулю | Да | Блокирующий | Ошибка | error |
| CommonModuleInvalidType | Общий модуль недопустимого типа | Да | Важный | Ошибка | standardunpredictabledesign |
| CommonModuleMissingAPI | Общий модуль должен иметь программный интерфейс | Да | Незначительный | Дефект кода | brainoverloadsuspicious |
| CommonModuleNameCached | Пропущен постфикс "ПовтИсп" | Да | Важный | Дефект кода | standardbadpracticeunpredictable |
| CommonModuleNameClient | Пропущен постфикс "Клиент" | Да | Незначительный | Дефект кода | standardbadpracticeunpredictable |
| CommonModuleNameClientServer | Пропущен постфикс "КлиентСервер" | Да | Важный | Дефект кода | standardbadpracticeunpredictable |
| CommonModuleNameFullAccess | Пропущен постфикс "ПолныеПрава" | Да | Важный | Потенциальная уязвимость | standardbadpracticeunpredictable |
| CommonModuleNameGlobal | Пропущен постфикс "Глобальный" | Да | Важный | Дефект кода | standardbadpracticebrainoverload |
| CommonModuleNameGlobalClient | Глобальный модуль с постфиксом "Клиент" | Да | Важный | Дефект кода | standard |
| CommonModuleNameServerCall | Пропущен постфикс "ВызовСервера" | Да | Незначительный | Дефект кода | standardbadpracticeunpredictable |
| CommonModuleNameWords | Нерекомендуемое имя общего модуля | Да | Информационный | Дефект кода | standard |
| CompilationDirectiveLost | Директивы компиляции методов | Да | Важный | Дефект кода | standardunpredictable |
| CompilationDirectiveNeedLess | Лишняя директива компиляции | Да | Важный | Дефект кода | clumsystandardunpredictable |
| ConsecutiveEmptyLines | Подряд идущие пустые строки | Да | Информационный | Дефект кода | badpractice |
| CrazyMultilineString | Безумные многострочные литералы | Да | Важный | Дефект кода | badpracticesuspiciousunpredictable |
| CreateQueryInCycle | Выполнение запроса в цикле | Да | Критичный | Ошибка | performance |
| CyclomaticComplexity | Цикломатическая сложность | Да | Критичный | Дефект кода | brainoverload |
| DataExchangeLoading | Отсутствует проверка признака ОбменДанными.Загрузка в обработчике событий объекта | Да | Критичный | Ошибка | standardbadpracticeunpredictable |
| DeletingCollectionItem | Удаление элемента при обходе коллекции посредством оператора "Для каждого ... Из ... Цикл" | Да | Важный | Ошибка | standarderror |
| DenyIncompleteValues | Запрет незаполненных значений у измерений регистров | Нет | Важный | Дефект кода | badpractice |
| DeprecatedAttributes8312 | Устаревшие объекты платформы 8.3.12 | Да | Информационный | Дефект кода | deprecated |
| DeprecatedCurrentDate | Использование устаревшего метода "ТекущаяДата" | Да | Важный | Ошибка | standarddeprecatedunpredictable |
| DeprecatedFind | Использование устаревшего метода "Найти" | Да | Незначительный | Дефект кода | deprecated |
| DeprecatedMessage | Ограничение на использование устаревшего метода "Сообщить" | Да | Незначительный | Дефект кода | standarddeprecated |
| DeprecatedMethodCall | Устаревшие методы не должны использоваться | Да | Незначительный | Дефект кода | deprecateddesign |
| DeprecatedMethods8310 | Использование устаревшего метода клиентского приложения | Да | Информационный | Дефект кода | deprecated |
| DeprecatedMethods8317 | Использование устаревших глобальных методов платформы 8.3.17 | Да | Информационный | Дефект кода | deprecated |
| DeprecatedTypeManagedForm | Устаревшее использование типа "УправляемаяФорма" | Да | Информационный | Дефект кода | standarddeprecated |
| DisableSafeMode | Отключение безопасного режима | Да | Важный | Уязвимость | suspicious |
| DoubleNegatives | Двойные отрицания | Да | Важный | Дефект кода | brainoverloadbadpractice |
| DuplicateRegion | Повторяющиеся разделы модуля | Да | Информационный | Дефект кода | standard |
| DuplicateStringLiteral | Повторное использование строкового литерала | Да | Незначительный | Дефект кода | badpractice |
| DuplicatedInsertionIntoCollection | Повторное добавление/вставка значений в коллекцию | Да | Важный | Дефект кода | brainoverloadsuspiciousbadpractice |
| EmptyCodeBlock | Пустой блок кода | Да | Важный | Дефект кода | badpracticesuspicious |
| EmptyRegion | Область не должна быть пустой | Да | Информационный | Дефект кода | standard |
| EmptyStatement | Пустой оператор | Да | Информационный | Дефект кода | badpractice |
| ExcessiveAutoTestCheck | Избыточная проверка параметра АвтоТест | Да | Незначительный | Дефект кода | standarddeprecated |
| ExecuteExternalCode | Выполнение произвольного кода на сервере | Да | Критичный | Уязвимость | errorstandard |
| ExecuteExternalCodeInCommonModule | Выполнение произвольного кода в общем модуле на сервере | Да | Критичный | Потенциальная уязвимость | badpracticestandard |
| ExportVariables | Запрет экспортных глобальных переменных модуля | Да | Важный | Дефект кода | standarddesignunpredictable |
| ExternalAppStarting | Запуск внешних приложений | Да | Важный | Потенциальная уязвимость | suspicious |
| ExtraCommas | Запятые без указания параметра в конце вызова метода | Да | Важный | Дефект кода | standardbadpractice |
| FieldsFromJoinsWithoutIsNull | Отсутствие проверки на NULL для полей из присоединяемых таблиц | Нет | Критичный | Ошибка | sqlsuspiciousunpredictable |
| FileSystemAccess | Доступ к файловой системе | Нет | Важный | Уязвимость | suspicious |
| ForbiddenMetadataName | Объекту метаданных присвоено запрещенное имя | Да | Блокирующий | Ошибка | standardsqldesign |
| FormDataToValue | Использование метода ДанныеФормыВЗначение | Да | Информационный | Дефект кода | badpractice |
| FullOuterJoinQuery | Использование конструкции "ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ" в запросах | Да | Важный | Дефект кода | sqlstandardperformance |
| FunctionNameStartsWithGet | Имя функции не должно начинаться с "Получить" | Нет | Информационный | Дефект кода | standard |
| FunctionOutParameter | Исходящий параметр функции | Нет | Важный | Дефект кода | design |
| FunctionReturnsSamePrimitive | Функция всегда возвращает одно и то же примитивное значение | Да | Важный | Ошибка | designbadpractice |
| FunctionShouldHaveReturn | Функция должна содержать возврат | Да | Важный | Ошибка | suspiciousunpredictable |
| GetFormMethod | Использование метода ПолучитьФорму | Да | Важный | Ошибка | error |
| GlobalContextMethodCollision8312 | Конфликт имен методов с методами глобального контекста | Да | Блокирующий | Ошибка | errorunpredictable |
| IdenticalExpressions | Одинаковые выражения слева и справа от "foo" оператора | Да | Важный | Ошибка | suspicious |
| IfConditionComplexity | Использование сложных выражений в условии оператора "Если" | Да | Незначительный | Дефект кода | brainoverload |
| IfElseDuplicatedCodeBlock | Повторяющиеся блоки кода в синтаксической конструкции Если...Тогда...ИначеЕсли... | Да | Незначительный | Дефект кода | suspicious |
| IfElseDuplicatedCondition | Повторяющиеся условия в синтаксической конструкции Если...Тогда...ИначеЕсли... | Да | Важный | Дефект кода | suspicious |
| IfElseIfEndsWithElse | Использование синтаксической конструкции Если...Тогда...ИначеЕсли... | Да | Важный | Дефект кода | badpractice |
| IncorrectLineBreak | Неправильный перенос выражения | Да | Информационный | Дефект кода | standardbadpractice |
| IncorrectUseLikeInQuery | Некорректное использование 'ПОДОБНО' | Да | Важный | Ошибка | standardsqlunpredictable |
| IncorrectUseOfStrTemplate | Неверное использование "СтрШаблон" | Да | Блокирующий | Ошибка | brainoverloadsuspiciousunpredictable |
| InternetAccess | Обращение к Интернет-ресурсам | Нет | Важный | Уязвимость | suspicious |
| InvalidCharacterInFile | Недопустимый символ | Да | Важный | Ошибка | errorstandardunpredictable |
| IsInRoleMethod | Использование метода РольДоступна | Да | Важный | Дефект кода | error |
| JoinWithSubQuery | Соединение с вложенными запросами | Да | Важный | Дефект кода | sqlstandardperformance |
| JoinWithVirtualTable | Соединение с виртуальными таблицами | Да | Важный | Дефект кода | sqlstandardperformance |
| LatinAndCyrillicSymbolInWord | Смешивание латинских и кириллических символов в одном идентификаторе | Да | Незначительный | Дефект кода | brainoverloadsuspicious |
| LineLength | Ограничение на длину строки | Да | Незначительный | Дефект кода | standardbadpractice |
| LogicalOrInTheWhereSectionOfQuery | Использование логического "ИЛИ" в секции "ГДЕ" запроса | Да | Важный | Дефект кода | sqlperformancestandard |
| MagicDate | Магические даты | Да | Незначительный | Дефект кода | badpracticebrainoverload |
| MagicNumber | Магические числа | Да | Незначительный | Дефект кода | badpractice |
| MetadataObjectNameLength | Имена объектов метаданных не должны превышать допустимой длины наименования | Да | Важный | Ошибка | standard |
| MethodSize | Ограничение на размер метода | Да | Важный | Дефект кода | badpractice |
| MissedRequiredParameter | Пропущен обязательный параметр метода | Да | Важный | Ошибка | error |
| MissingCodeTryCatchEx | Конструкция "Попытка...Исключение...КонецПопытки" не содержит кода в исключении | Да | Важный | Ошибка | standardbadpractice |
| MissingCommonModuleMethod | Обращение к отсутствующему методу общего модуля | Да | Блокирующий | Ошибка | error |
| MissingEventSubscriptionHandler | Отсутствует обработчик подписки на событие | Да | Блокирующий | Ошибка | error |
| MissingParameterDescription | Отсутствует описание параметров метода | Да | Важный | Дефект кода | standardbadpractice |
| MissingReturnedValueDescription | Отсутствует описание возвращаемого значения функции | Да | Важный | Дефект кода | standardbadpractice |
| MissingSpace | Пропущены пробелы слева или справа от операторов + - * / = % < > <> <= >=, от ключевых слов, а так же справа от , и ; |
Да | Информационный | Дефект кода | badpractice |
| MissingTempStorageDeletion | Отсутствует удаление данных из временного хранилища после использования | Нет | Критичный | Дефект кода | standardperformancebadpractice |
| MissingTemporaryFileDeletion | Отсутствует удаление временного файла после использования | Да | Важный | Ошибка | badpracticestandard |
| MissingVariablesDescription | Все объявления переменных должны иметь описание | Да | Незначительный | Дефект кода | standard |
| MultilineStringInQuery | Многострочный литерал в запросе | Да | Критичный | Ошибка | badpracticesuspiciousunpredictable |
| MultilingualStringHasAllDeclaredLanguages | Есть локализованный текст для всех заявленных в конфигурации языков | Да | Незначительный | Ошибка | errorlocalize |
| MultilingualStringUsingWithTemplate | Частично локализованный текст используется в функции СтрШаблон | Да | Важный | Ошибка | errorlocalize |
| NestedConstructorsInStructureDeclaration | Использование конструкторов с параметрами при объявлении структуры | Да | Незначительный | Дефект кода | badpracticebrainoverload |
| NestedFunctionInParameters | Инициализация параметров методов и конструкторов вызовом вложенных методов | Да | Незначительный | Дефект кода | standardbrainoverloadbadpractice |
| NestedStatements | Управляющие конструкции не должны быть вложены слишком глубоко | Да | Критичный | Дефект кода | badpracticebrainoverload |
| NestedTernaryOperator | Вложенный тернарный оператор | Да | Важный | Дефект кода | brainoverload |
| NonExportMethodsInApiRegion | Неэкспортные методы в областях ПрограммныйИнтерфейс и СлужебныйПрограммныйИнтерфейс | Да | Важный | Дефект кода | standard |
| NonStandardRegion | Нестандартные разделы модуля | Да | Информационный | Дефект кода | standard |
| NumberOfOptionalParams | Ограничение на количество не обязательных параметров метода | Да | Незначительный | Дефект кода | standardbrainoverload |
| NumberOfParams | Ограничение на количество параметров метода | Да | Незначительный | Дефект кода | standardbrainoverload |
| NumberOfValuesInStructureConstructor | Ограничение на количество значений свойств, передаваемых в конструктор структуры | Да | Незначительный | Дефект кода | standardbrainoverload |
| OSUsersMethod | Использование метода ПользователиОС | Да | Критичный | Потенциальная уязвимость | suspicious |
| OneStatementPerLine | Одно выражение в одной строке | Да | Незначительный | Дефект кода | standarddesign |
| OrderOfParams | Порядок параметров метода | Да | Важный | Дефект кода | standarddesign |
| OrdinaryAppSupport | Поддержка обычного приложения | Да | Важный | Дефект кода | standardunpredictable |
| PairingBrokenTransaction | Нарушение парности использования методов "НачатьТранзакцию()" и "ЗафиксироватьТранзакцию()" / "ОтменитьТранзакцию()" | Да | Важный | Ошибка | standard |
| ParseError | Ошибка разбора исходного кода | Да | Критичный | Ошибка | error |
| PrivilegedModuleMethodCall | Обращение к методам привилегированных модулей | Да | Важный | Потенциальная уязвимость | suspicious |
| ProcedureReturnsValue | Процедура не должна возвращать значение | Да | Блокирующий | Ошибка | error |
| ProtectedModule | Защищенные модули | Да | Важный | Дефект кода | badpracticesuspicious |
| PublicMethodsDescription | Все методы программного интерфейса должны иметь описание | Да | Информационный | Дефект кода | standardbrainoverloadbadpractice |
| QueryParseError | Ошибка разбора текста запроса | Да | Важный | Дефект кода | standardsqlbadpractice |
| QueryToMissingMetadata | Обращение к несуществующим метаданным в запросе | Да | Блокирующий | Ошибка | suspicioussql |
| RedundantAccessToObject | Избыточное обращение к объекту | Да | Информационный | Дефект кода | standardclumsy |
| RefOveruse | Избыточное использование "Ссылка" в запросе | Да | Важный | Дефект кода | sqlperformance |
| ReservedParameterNames | Зарезервированные имена параметров | Да | Важный | Дефект кода | standardbadpractice |
| RewriteMethodParameter | Перезапись параметров метода | Да | Важный | Дефект кода | suspicious |
| SameMetadataObjectAndChildNames | Совпадает имя объекта метаданного и его дочернего | Да | Критичный | Ошибка | standardsqldesign |
| ScheduledJobHandler | Обработчик регламентного задания | Да | Критичный | Ошибка | error |
| SelectTopWithoutOrderBy | Использование 'ВЫБРАТЬ ПЕРВЫЕ' без 'УПОРЯДОЧИТЬ ПО' | Да | Важный | Дефект кода | standardsqlsuspicious |
| SelfAssign | Присвоение переменной самой себе | Да | Важный | Ошибка | suspicious |
| SelfInsertion | Вставка коллекции в саму себя | Да | Важный | Ошибка | standardunpredictableperformance |
| SemicolonPresence | Выражение должно заканчиваться символом ";" | Да | Незначительный | Дефект кода | standardbadpractice |
| ServerSideExportFormMethod | Серверный экспортный метод формы | Да | Блокирующий | Ошибка | errorunpredictablesuspicious |
| SetPermissionsForNewObjects | Флажок «Устанавливать права для новых объектов» должен быть установлен только у роли ПолныеПрава | Да | Критичный | Уязвимость | standardbadpracticedesign |
| SetPrivilegedMode | Использование привилегированного режима | Да | Важный | Потенциальная уязвимость | suspicious |
| SeveralCompilerDirectives | Ошибочное указание нескольких директив компиляции | Да | Критичный | Ошибка | unpredictableerror |
| SpaceAtStartComment | Пробел в начале комментария | Да | Информационный | Дефект кода | standard |
| StyleElementConstructors | Конструктор элемента стиля | Да | Незначительный | Ошибка | standardbadpractice |
| TempFilesDir | Вызов функции КаталогВременныхФайлов() | Да | Важный | Дефект кода | standardbadpractice |
| TernaryOperatorUsage | Использование тернарного оператора | Нет | Незначительный | Дефект кода | brainoverload |
| ThisObjectAssign | Присвоение значения свойству ЭтотОбъект | Да | Блокирующий | Ошибка | error |
| TimeoutsInExternalResources | Таймауты при работе с внешними ресурсами | Да | Критичный | Ошибка | unpredictablestandard |
| TooManyReturns | Метод не должен содержать много возвратов | Нет | Незначительный | Дефект кода | brainoverload |
| TransferringParametersBetweenClientAndServer | Передача параметров между клиентом и сервером | Да | Важный | Дефект кода | badpracticeperformancestandard |
| TryNumber | Приведение к числу в попытке | Да | Важный | Дефект кода | standard |
| Typo | Опечатка | Да | Информационный | Дефект кода | badpractice |
| UnaryPlusInConcatenation | Унарный плюс в конкатенации строк | Да | Блокирующий | Ошибка | suspiciousbrainoverload |
| UnionAll | Использование ключевого слова "ОБЪЕДИНИТЬ" в запросах | Да | Незначительный | Дефект кода | standardsqlperformance |
| UnknownPreprocessorSymbol | Неизвестный символ препроцессора | Да | Критичный | Ошибка | standarderror |
| UnreachableCode | Недостижимый код | Да | Незначительный | Ошибка | designsuspicious |
| UnsafeSafeModeMethodCall | Небезопасное использование функции БезопасныйРежим() | Да | Блокирующий | Ошибка | deprecatederror |
| UnusedLocalMethod | Неиспользуемый локальный метод | Да | Важный | Дефект кода | standardsuspiciousunused |
| UnusedLocalVariable | Неиспользуемая локальная переменная | Да | Важный | Дефект кода | brainoverloadbadpracticeunused |
| UnusedParameters | Неиспользуемый параметр | Да | Важный | Дефект кода | designunused |
| UsageWriteLogEvent | Неверное использование метода "ЗаписьЖурналаРегистрации" | Да | Информационный | Дефект кода | standardbadpractice |
| UseLessForEach | Бесполезный перебор коллекции | Да | Критичный | Ошибка | clumsy |
| UseSystemInformation | Использование системной информации | Нет | Критичный | Потенциальная уязвимость | suspicious |
| UsingCancelParameter | Работа с параметром "Отказ" | Да | Важный | Дефект кода | standardbadpractice |
| UsingExternalCodeTools | Использование возможностей выполнения внешнего кода | Да | Критичный | Потенциальная уязвимость | standarddesign |
| UsingFindElementByString | Использование методов "НайтиПоНаименованию", "НайтиПоКоду" и "НайтиПоНомеру" | Да | Важный | Дефект кода | standardbadpracticeperformance |
| UsingGoto | Оператор "Перейти" не должен использоваться | Да | Критичный | Дефект кода | standardbadpractice |
| UsingHardcodeNetworkAddress | Хранение ip-адресов в коде | Да | Критичный | Уязвимость | standard |
| UsingHardcodePath | Хранение путей к файлам в коде | Да | Критичный | Ошибка | standard |
| UsingHardcodeSecretInformation | Хранение конфиденциальной информации в коде | Да | Критичный | Уязвимость | standard |
| UsingLikeInQuery | Использование 'ПОДОБНО' в запросе | Нет | Важный | Ошибка | sqlunpredictable |
| UsingModalWindows | Использование модальных окон | Да | Важный | Дефект кода | standard |
| UsingObjectNotAvailableUnix | Использование объектов недоступных в Unix системах | Да | Критичный | Ошибка | standardlockinos |
| UsingServiceTag | Использование служебных тегов | Да | Информационный | Дефект кода | badpractice |
| UsingSynchronousCalls | Использование синхронных вызовов | Да | Важный | Дефект кода | standard |
| UsingThisForm | Использование устаревшего свойства "ЭтаФорма" | Да | Незначительный | Дефект кода | standarddeprecated |
| VirtualTableCallWithoutParameters | Обращение к виртуальной таблице без параметров | Да | Важный | Ошибка | sqlstandardperformance |
| WrongDataPathForFormElements | У полей формы не указан путь к данным | Да | Критичный | Ошибка | unpredictable |
| WrongHttpServiceHandler | Неверно задан обработчик метода http-сервиса | Да | Критичный | Ошибка | suspiciouserror |
| WrongUseFunctionProceedWithCall | Некорректное использование функции ПродолжитьВызов() | Да | Блокирующий | Ошибка | errorsuspicious |
| WrongUseOfRollbackTransactionMethod | Некорректное использование метода ОтменитьТранзакцию() | Да | Критичный | Ошибка | standard |
| WrongWebServiceHandler | Неверно задан обработчик операции web-сервиса | Да | Критичный | Ошибка | suspiciouserror |
| YoLetterUsage | Использование буквы "ё" в текстах модулей | Да | Информационный | Дефект кода | standard |