我在源代码库中调用cppcheck自己的文件。但是,某些源文件包含来自第三方库的头文件,例如./lib/some_library/
。这些也由cppcheck自动解析。
我不想要这个,因为我不想看到第三方代码的警告。有办法解决这个问题吗?
与how can i tell cppcheck to skip a header file的区别在于此帖明确要求跳过整个目录,而不仅仅是单个头文件。
答案 0 :(得分:3)
另一种可能性是通过文件使用抑制(参见manual第7章"列出文件中的抑制")或通过commandline。
您的suppressions.txt可能是
*:/path/to/your/thirdpartylibs/*
哪个会排除该路径中的所有错误。语法是
[error id]:[filename]:[line]
支持*
(多个字符)和?
(单个字符)的通配符。
对cppcheck的调用将是
cppcheck --suppressions-list=suppressions.txt .
答案 1 :(得分:2)
从检查中排除文件或文件夹 要排除文件或文件夹,有两个选项。第一种选择是仅提供路径和文件 你想检查。
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
答案 2 :(得分:1)
我也有类似的需求要排除专用第三方目录上的报告。为此,我直接在cli上使用了--suppress
选项:
"C:\Program Files\Cppcheck\cppcheck" --suppress=*:*3rdparty\* --language=c++ --enable=all --xml --xml-version=2 . 2> cppcheck-result.xml
使用cppcheck
的有趣之处在于,它仍将在stdout
上显示它正在通过'suppressed'目录,但是在结果文件中,排除的文件中不会有任何文件目录在那里。看起来它可能会进一步优化。