Cppcheck 忽略 -i 并在干净构建后检查所有文件

Posted

技术标签:

【中文标题】Cppcheck 忽略 -i 并在干净构建后检查所有文件【英文标题】:Cppcheck ignores -i and checks all files after clean build 【发布时间】:2021-10-29 21:04:31 【问题描述】:

我的项目结构相当复杂。 它看起来像这样:

App/
   Inc/
   Src/
OtherDir/
   ManyOtherDirsInc/
   ManyOtherDirsSrc/
   OtherDirs/ThatAre/Inside/OtherDirs/Inc
build/

我正在使用带有额外 compile_commands.json 的 CMake 构建它。

为了运行 CppCheck,我正在使用运行此(大量)命令的 VsCode 任务:

cppcheck --addon=$workspaceFolder/misra.json
--cppcheck-build-dir=$workspaceFolder/build 
-D__GNUC__ --enable=warning,style,performance,portability,information
--suppress=missingIncludeSystem --suppress=unmatchedSuppression
--project=$workspaceFolder/build/compile_commands.json
-i$workspaceFolder/ParentFolderOfManyOtherDirs/WithOtherDirsInside
-i$workspaceFolder/OtherDirs/ThatAlsoShouldBeRecursivelyIgnored
--quiet --template=gcc --verbose

这是否意味着 -i 不是递归的?那会很奇怪,因为在添加文件夹时,它们是递归添加的。

如果能提供任何帮助,我将不胜感激。

【问题讨论】:

【参考方案1】:

问题是 .h 文件仍然检查,尽管 -i 标志。 解决方案:

--supress-lists=suppressions.txt

suppressions.txt

*:/home/Projects/Full/Path/*

重要提示!

抑制路径必须是完整的,相对的由于某种原因不起作用。对于有多个开发人员的项目来说,这有点问题。需要一些会自动生成此文件的脚本。

【讨论】:

以上是关于Cppcheck 忽略 -i 并在干净构建后检查所有文件的主要内容,如果未能解决你的问题,请参考以下文章

cppcheck静态代码检查工具使用教程

cppcheck静态代码检查工具使用教程

CppCheck 忽略了宏定义中变量的使用,如何改变它?

使用 compile_commands.json 时的 Cppcheck 内联抑制

c++代码检测工具

Cppcheck 停止检查未使用的StructMember