V6012. The '?:' operator, regardless of its conditional expression, always returns one and the same value.
Анализатор обнаружил потенциальную ошибку при использовании тернарного оператора ?:. Независимо от условия, будет выполнено одно и тоже действие. Скорее всего, в коде имеется опечатка.
Рассмотрим простой пример:
int a = b ? c : c;
В любом случае переменной a будет присвоено значение переменной c.
Рассмотрим пример, где уже не так легко заметить подобную ошибку:
double calc(Box bx, int angle, double scale) {
return Math.tan((angle % 2 == 0 ?
bx.side_x : bx.side_x) * 0.42) * scale;
}
Здесь код отформатирован. В тексте программы это может быть одной строкой, и неудивительно, что легко просмотреть опечатку. Ошибка в том, что два раза используется поле side_x. Корректный вариант:
double calc(Box bx, int angle, double scale) {
return Math.tan((angle % 2 == 0 ?
bx.side_x : bx.side_y) * 0.42) * scale;
}
Данная диагностика классифицируется как:
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6012. |