sizeof
операнд содержит выражение, которое не выполнено
Этот дефект происходит когда sizeof
операнд содержит выражения, оценка которых не влияет на sizeof
результат. Вместо текущего выражения в sizeof
операнд, тип данных, переменная или более простое выражение, возможно, использовались без любой потери функциональности.
В ситуациях, отмеченных этим дефектом, выражением в sizeof
операнд является напрасно сложным, уменьшает удобочитаемость кода и добавляет к затратам поддерживаемости. Выражение может также произвести ложное впечатление о результате sizeof
операнд.
Например, рассмотрите выражение:
sizeof(void (*[n])(int arr[U+V]))
sizeof
массив n
указатели функции, каждый тип void () (int*)
. Дополнительный U+V
, то, которое не оценено, делает полное выражение напрасно сложным. Выражение также производит ложное впечатление что аргумент указателя функции, являющийся массивом размера U+V
вопросы для sizeof
результат.Первое событие в дефекте traceback показывает где избыточное подвыражение sizeof
операнд начинается.
Упростите или полностью удалите избыточное выражение. Когда возможно, используйте тип данных в качестве sizeof
операнд. Например, в предыдущем примере, более простом эквивалентном sizeof
операция:
sizeof(void (*[n])(int*))
Если вы хотите, чтобы выражение было оценено, выполните оценку в отдельном операторе.
Группа: Хорошая практика |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки:
SIZEOF_USELESS_OP |
Удар: низко |
Find defects (-checkers)
| Side effect of expression ignored