我发现--suppress=unmatchedSuppression仅抑制cppcheck选项中不匹配的抑制类型,而不抑制不匹配的行内抑制。

这是预期的行为吗?


  • 第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 }
    



    禁止显示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

    09-30 17:46