У меня есть фрагмент кода, который сводит cppcheck с ума, потому что он не видит переменные, используемые в вызове журнала, как используемые. Итак, я получаю неиспользуемые переменные и предупреждение об уменьшении объема:
double start = GetTimeOfDayDoubleSec(), afterDb = 0;
if (LoadFromDatabase(serials)) {
afterDb = GetTimeOfDayDoubleSec();
Cache.ResetDebugFlags(serials);
}
double end = GetTimeOfDayDoubleSec();
ZLOG_INFO("DB time %f, total %f", afterDb ? afterDb - start : 0, end - start);
Cppcheck говорит:
The scope of the variable 'afterDb' can be reduced.
Variable 'afterDb' is assigned a value that is never used.
Я не могу разработать синтаксис для подавления обоих из них, и руководство бесполезно. Отдельная строка, пробелы, запятые, двоеточия и точки с запятой не работают. Отдельные строки дают мне «подавление не соответствует», остальные просто недействительны:
//cppcheck-suppress variableScope
//cppcheck-suppress unreadVariable
//cppcheck-suppress variableScope unreadVariable
//cppcheck-suppress variableScope,unreadVariable
//cppcheck-suppress variableScope;unreadVariable
double afterDb = 0;
Failed to add suppression. Invalid id "variableScope:unreadVariable"
Позволяет ли cppcheck сделать это встроенно или мне нужно сделать это с помощью XML в командной строке?
Извините, оказалось, что есть непонятная проблема: нажатие «обновить» в cppcheck-gui не обновляет все, мне нужно перезагрузить файл cppcheck, чтобы изменения в подавлении обновлялись. А именно, значок «открыть файл» на панели инструментов, а не справа «обновить».
Оказывается, что пробел работает:
//cppcheck-suppress variableScope unreadVariable