我发现--suppress=unmatchedSuppression
仅抑制cppcheck选项中不匹配的抑制类型,而不抑制不匹配的行内抑制。
这是预期的行为吗?
arrayIndexOutOfBounds
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 }
禁止显示
cstyleCast
,该代码在代码中不存在。 cppcheck --inline-suppr --force --enable=all
--xml-version=2 --suppress=cstyleCast test.c
2>cppcheckresults.xml
我被警告了(除了其他不相关的警告)
unmatchedSuppression: arrayIndexOutOfBounds
test.c
(如预期)line 7
unmatchedSuppression: cstyleCast
(如预期)与情况1相同,但具有附加的
*
选项 cppcheck --inline-suppr --force --enable=all
--xml-version=2 --suppress=cstyleCast --suppress=unmatchedSuppressiontest.c
2>cppcheckresults.xml
我希望以前的
line 0
警告都消失了。但是我仍然得到--suppress=unmatchedSuppression
unmatchedSuppression
(不期望)最佳答案
我最近发现的是,无法通过通用unmatchedSuppression
来抑制内联抑制产生的--suppress=unmatchedSuppression
警告,也不能仅将该警告ID放入--suppressions-list
文件中。您必须使用文件名来限定它。例如--suppress=unmatchedSuppression:test.c
。