C ++ находит пути к коду, которые могут использовать неинициализированные переменные перед выполнением - PullRequest
0 голосов
/ 25 мая 2018

Я хочу обнаружить переменные, которые могут использоваться неинициализированными.Я пробовал -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()};
}
...