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