Я хочу обнаружить переменные, которые могут использоваться неинициализированными.Я пробовал -Wall
, -Wextra
и даже -Weffc++
.Есть ли способ (с помощью компилятора или внешнего инструмента), чтобы обнаружить такого рода проблемы?Ниже приведен пример потенциальной проблемы, которую я предпочел бы обнаружить статически, а не проблему времени выполнения.
Если не выполняются итерации цикла for
, то prev
все равно не будет инициализирован, когдаif
достигается, а затем SEGFAULT
при использовании prev
..
decltype(params.begin()) prev;
for (auto it = params.begin();
std::prev(params.end()) - (it + max_chunk_size - 1) >= 0;
prev = it += max_chunk_size) {
auto val = {it, it+max_chunk_size};
}
if (prev != params.end()) {
auto val = {prev, params.end()};
}