Как стать автором
Обновить

Комментарии 4

if (side > 0) {
  *is_side_2r = true;
  *use_new_ref = true;
  return false;
}
else if (side < 0) {
  *is_side_2r = false;
  *use_new_ref = false;
  return false;
}

Учитывая return - else избыточный.

и при side == 0
произойдет все равно return false;
  if (side) {
    if (side > 0) {
      *is_side_2r = true;
      *use_new_ref = true;
    }
    else if (side < 0) {          // <=
      *is_side_2r = false;
      *use_new_ref = false;
    }
    return false;
  }

Хотя оригинальный код такое не предусматривает

Известным недостатком всех статических анализаторов кода является выдача ими ложных срабатываний. С предупреждениями компилятора приблизительно такая же история.

Ув. Андрей, это не недостаток, это особенность статических анализаторов. Любое правило, выдающее предупреждение без ложных срабатываний должно быть просто вставлено в компилятор. :-) Тут можно, конечно, поспекулировать на тему полного, а не помодульного анализа программы, учёта библиотек и т.д.

Но так или иначе, без ложных срабатываний не было бы смысла ни в PVS, ни в clang-analyze, ни в других анализаторов — всё рано или поздно было бы вставлено в clang/gcc.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий