如何让CPPCheck忽略指定目录及其所有子目录?
如何用CPPCheck忽略指定目录及其所有子目录?
CPPCheck的-i(或等价的--exclude)参数本身就支持递归忽略指定目录下的所有子目录和文件,你之前的问题大概率是路径写法导致的。
针对你的目录结构:
Root └── Lib ├── Lib dir 1 │ └── file.c └── Lib dir 2 └── file.c
正确的命令写法
如果当前工作目录是Root,直接使用不带尾斜杠的目录名即可递归忽略:
cppcheck --project=compile_commands.json -iLib
如果使用绝对路径,同样不要加尾斜杠:
cppcheck --project=compile_commands.json -i/path/to/your/Root/Lib
为什么之前的尝试没生效?
手册里的示例-ifoo其实已经是递归匹配的写法,但如果你的路径写成了-iLib/(带尾斜杠),CPPCheck只会忽略Lib目录下直接存放的文件,不会匹配子目录里的内容。不带尾斜杠的路径会匹配所有以Lib为前缀的文件路径,自然就覆盖了所有子目录。
额外验证方法
你可以加上--verbose参数查看CPPCheck的扫描日志,确认Lib目录下的子文件是否被标记为"excluded":
cppcheck --project=compile_commands.json -iLib --verbose
内容的提问来源于stack exchange,提问作者Grant Dare
相关产品推荐
相关产品推荐

