cppcheck Как подавить встроенное непревзойденное подавление?

Я обнаружил, что --suppress=unmatchedSuppression подавляет только несопоставленные типы подавления в параметрах cppcheck, но НЕ несовпадающие встроенные подавления.

Это ожидаемое поведение?

test.c

  • Строка 4 неверна. Следует предупредить arrayIndexOutOfBounds

  • В 7-й строке все в порядке. НЕ следует предупреждать arrayIndexOutOfBounds

У меня есть встроенный cppcheck-suppress для обеих строк.

  1 void f() {
  2     char arr[5];
  3     // cppcheck-suppress arrayIndexOutOfBounds
  4     arr[10] = 0;
  5
  6     // cppcheck-suppress arrayIndexOutOfBounds
  7     const char ok[] = "this line is ok";
  8 }

Ситуация 1

Подавить cstyleCast, который НЕ существует в коде.

 cppcheck --inline-suppr --force --enable=all 
          --xml-version=2 --suppress=cstyleCast test.c 
          2>cppcheckresults.xml

Я получаю предупреждение (среди прочих неуместных предупреждений)

  1. unmatchedSuppression: arrayIndexOutOfBounds через test.c line 7 (как и ожидалось)

  2. unmatchedSuppression: cstyleCast в * line 0 (как и ожидалось)

Ситуация 2

То же, что и в ситуации 1, но с дополнительной опцией --suppress=unmatchedSuppression

 cppcheck --inline-suppr --force --enable=all 
          --xml-version=2 --suppress=cstyleCast --suppress=unmatchedSuppressiontest.c 
          2>cppcheckresults.xml

Я ожидаю, что оба предыдущих предупреждения unmatchedSuppression исчезнут. Но я все равно получаю

  1. unmatchedSuppression через test.c line 7 (НЕ ожидается)

person kgf3JfUtW    schedule 09.12.2016    source источник


Ответы (1)


Недавно я обнаружил, что предупреждение unmatchedSuppression от встроенных подавлений не может быть подавлено общим --suppress=unmatchedSuppression или помещением только этого идентификатора предупреждения в файл --suppressions-list. Вы должны квалифицировать его с помощью имени файла. Например --suppress=unmatchedSuppression:test.c.

person Kurtis Rader    schedule 06.03.2017