Анализатор обнаружил в коде глобально объявленную переменную с коротким именем. Это, если и не приведёт к ошибкам, то является плохим стилем программирования и усложняет понимание программы.
Начнём с примера:
int i;
Проблема в коротких именах переменных заключается в том, что достаточно легко ошибиться и использовать вместо локальной переменной глобальную внутри тела функции или метода класса. Например, вместо
void MyFunc() { for (i = 0; i < N; i++) AnotherFunc(); .... }
должно быть:
void MyFunc() { for (int i = 0; i < N; i++) AnotherFunc(); .... }
В данных ситуациях анализатор будет предлагать изменить имя переменной на более длинное. Минимальная длина, которая не является подозрительной для анализатора - три символа. Также анализатор не будет выдавать предупреждения на переменные с именами PI, SI, CR, LF.
Анализатор не выдаёт предупреждения на переменные с коротким именем, если они представляют собой структуры. Хотя это тоже плохой стиль кодирования, но случайно неправильно использовать структуру сложнее. Например, если случайно написать так:
struct T { int a, b; } i; void MyFunc() { for (i = 0; i < N; i++) AnotherFunc(); .... }
То код просто не скомпилируется.
А вот на константы с короткими именами анализатор ругается. Их нельзя менять, но ничто не мешает сделать неправильную проверку. Пример:
const float E = 2.71828; void Foo() { S *e = X[i]; if (E) { e->Foo(); } .... }
Исправленный код:
const float E = 2.71828; void Foo() { S *e = X[i]; if (e) { e->Foo(); } .... }
Но лучше использовать более длинное имя или обернуть такие константы в специальный namesapce:
namespace Const { const float E = 2.71828; }
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V707. |