cppcheck 看不到一些有错误的子文件夹:找不到或打开任何给定的路径

Posted

技术标签:

【中文标题】cppcheck 看不到一些有错误的子文件夹:找不到或打开任何给定的路径【英文标题】:cppcheck don't see some subfolders with error: could not find or open any of the paths given 【发布时间】:2021-07-15 23:24:32 【问题描述】:

运行 cppcheck 为

cppcheck.exe --enable=all --xml-version=2 2> out.xml folder\subfolder

并且对于某些子文件夹(5 个中的 3 个)出错

error: could not find or open any of the paths given.

如果我重命名文件夹仍然是同样的错误。当我跑步时

 cppcheck.exe --enable=all --xml-version=2 2> out.xml folder

这些子文件夹也未检查,仅检查了该文件夹中的 2 个子文件夹。可能是什么问题?

更新:我没有注意到这一点,但似乎 cppcheck 看不到的文件夹仅包含 .h/.hpp 文件,没有 .cpp 升级版: 我确实可以检查该子文件夹中的确切文件

cppcheck.exe --enable=all --xml-version=2 2> out.xml folder\subfolder\file.cpp

奇怪..

如果我导航到该子文件夹并从那里运行 cppcheck 如果我没有指定确切的文件,我仍然会遇到同样的错误:找不到或打开任何给定的路径。

UPD2:之前没注意到,cppcheck 看不到的文件夹只包含头文件

【问题讨论】:

据我所知,可执行文件只会解析您指定的目录,因此必须多次调用它。您可以通过 bash 脚本循环执行此操作 @NeonFire 它经过 2 个子文件夹,但由于某种原因看不到其他 3 个。 你的文件结构是什么样的? 我会使用我在下面提到的脚本,因为它是一个简单的终端命令,您可以在每次需要时将文件的副本拖到根工作目录中。 @NeonFire 在一些子文件夹中 其他带有文件的子文件夹(cpp 和 hpp),在一些文件和带有文件的子文件夹中。 cppcheck 没问题的那两个,一个只包含 cpp 文件,另一个包含其他带有文件的子文件夹,cppcheck 全部查看 【参考方案1】:

每当我使用 CPPCheck 时,我都会使用 PowerShell 脚本来解析每个文件夹和子文件夹。通常我会使用这些参数把它放在一个数组中:

$LIST_OF_CPP_FILES = @(Get-ChildItem -Path .\ -Filter *.cpp -Recurse -File -Name) # The recurse is what goes through each sub folder and finds files with extension .cpp
$LIST_OF_C_FILES = ... *.c ...
$LIST_OF_H_FILES = ... *.h ...

然后循环遍历现在保存有问题文件的每个数组。

foreach($FILE in $LIST_OF_CPP_FILES)

  &'C:\Program Files\Cppcheck\cppcheck.exe' -q --inline-suppr $FILE --force #Look at CPPCheck documentation for info on these paramters

当然,将其保存在 PWD 中的 .ps1 文件中,然后使用命令提示符运行它。

./CPPCheckScript.ps1

如果您想将其写入 txt 或 xml 文件,您也可以这样做,或者只是让它在终端中打印输出。您也可以在 PowerShell 文件中使用 Write-Host

【讨论】:

以上是关于cppcheck 看不到一些有错误的子文件夹:找不到或打开任何给定的路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cppcheck 忽略某些文件类型?

cppcheck --includes-file 选项不起作用

cppcheck 指定要处理但不报告错误的文件目录

Cppcheck : mismatchAllocDealloc 错误

如何在 gcc 编译器中构建 cppcheck 工具?

新构建的 Cppcheck-gui 会崩溃