2016-12-09 11 views
3

Я обнаружил, что --suppress=unmatchedSuppression только подавляет непревзойденные типы подавления в параметрах cppcheck, но не является непревзойденным встроенным подавлением.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.cline 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.cline 7 (не ожидается)

ответ

1

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