# V581. Conditional expressions of 'if' statements located next to each other are identical.

Анализатор обнаружил код, в котором рядом находятся два оператора 'if' с одинаковыми условиями. Это является потенциальной ошибкой или избыточным кодом.

Рассмотрим пример:

    if (strlen(S_1) == SIZE)
      Foo(A);
    if (strlen(S_1) == SIZE)
      Foo(B);

Содержит этот код ошибку или нет, зависит от того, что хотел сделать программист. Если во втором условии нужно вычислить длину другой строки, то это ошибка. Исправленный код:

    if (strlen(S_1) == SIZE)
      Foo(A);
    if (strlen(S_2) == SIZE)
      Foo(B);

Код может быть корректен. Но тогда он неэффективен, так как два раза приходится вычислять длину одной и той же строки. Оптимизированный код:

    if (strlen(S_1) == SIZE) {
      Foo(A);
      Foo(B);
    }

Данная диагностика классифицируется как:

CWE-670

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V581.