【问题标题】:Cppcheck: how to skip a directory of third party header files?Cppcheck:如何跳过第三方头文件的目录?
【发布时间】:2016-10-03 05:51:43
【问题描述】:

我在源代码库中对我们自己的文件调用 cppcheck。但是,一些源文件包含来自第三方库的头文件,例如来自./lib/some_library/。这些也会被 cppcheck 自动解析。

我不想要这个,因为我不想看到第三方代码的警告。有没有办法解决这个问题?

how can i tell cppcheck to skip a header file 的不同之处在于,这篇文章明确要求跳过整个目录,而不仅仅是单个头文件。

【问题讨论】:

  • -i <dir> 给出忽略的路径。给出几个 -i 参数以忽略多个路径。以路径为参数给出目录名或文件名。目录名称与路径的所有部分匹配。
  • 对我来说它说:-i <dir or file> 提供一个源文件或源文件目录以从检查中排除。 这仅适用于源文件,因此源文件包含的头文件不匹配。目录名称与路径的所有部分匹配。
  • 这里有同样的问题。我在-i 明确排除的目录下看到了头文件的问题。这是不可取的。

标签: cppcheck


【解决方案1】:

另一种可能性是通过文件使用抑制(参见manual 第 7 章“在文件中列出抑制”)或通过commandline

你的 suppresss.txt 可能是

*:/path/to/your/thirdpartylibs/*

这将排除该路径中的所有错误。语法是

[error id]:[filename]:[line]

*(多个字符)和?(单个字符)提供通配符支持。

对 cppcheck 的调用将是

cppcheck --suppressions-list=suppressions.txt .

【讨论】:

    【解决方案2】:

    根据cppcheck manual

    从检查中排除文件或文件夹 要排除文件或文件夹,有两个选项。第一个选项是只提供路径和文件 你想检查一下。

    cppcheck src/a src/b
    

    然后检查 src/a 和 src/b 下的所有文件。

    第二个选项是使用 -i,您可以使用它指定要忽略的文件/路径。使用此命令不会检查 src/c 中的文件:

    cppcheck -isrc/c src
    

    此选项当前不适用于 --project 选项,仅在提供输入时有效 目录。

    要忽略多个目录,请多次提供 -i。以下命令忽略 src/b 和 src/c 目录。

    cppcheck -isrc/b -isrc/c
    

    【讨论】:

      【解决方案3】:

      我也有类似的需要排除在专门的第三方目录上的报告。为此,我直接在 cli 上使用了 --suppress 选项:

      "C:\Program Files\Cppcheck\cppcheck" --suppress=*:*3rdparty\* --language=c++ --enable=all --xml --xml-version=2 . 2> cppcheck-result.xml

      cppcheck 的有趣之处在于它仍然会在stdout 上显示它正在通过“被抑制”目录,但在结果文件中,其中不会有任何来自排除目录的文件。看起来可以进一步优化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        相关资源
        最近更新 更多