我尝试对我的代码运行cppcheck分析,代码具有以下文件结构:
/code/module_1/src/a.cpp
/code/module_1/src/b.cpp
/code/module_1/test/c.cpp
/code/module_2/src/d.cpp
/code/module_2/src/e.cpp
/code/module_3/test/f.cpp
我想运行不包括所有测试代码的分析。这是否可以通过" cppcheck -itest"等命令实现?根据{{3}}的说法,虽然我认为它应该适合我,但它并不适用于我:
...目录名称与路径的所有部分匹配。
我使用的是版本1.69。我知道我可以单独提及所有测试目录(这确实有效,我检查过),但模块数量太高,无法合理地进行多次分析。
这可能吗?
答案 0 :(得分:2)
我安装了Cppcheck来做一些测试,似乎-i
实现有点疯狂。但是,我设法实现了你想要的目标。
解决方案:使用-itest\
代替-itest
(这是在Windows中;可能是Linux需要-itest/
)
基本原理:在我的测试中,-itest
仅在有.\test\
目录的情况下才有效,在这种情况下,甚至排除了.\a\test\a.cpp
。但是,对于-itest\
,无论是否存在.\test\
目录,都会发生这种排除。
这似乎是开发人员应该清除的错误,但在此期间,您可以成功使用上述解决方法。
答案 1 :(得分:0)
我会使用类似的东西:
cppcheck /code/module_1/src /code/module_2/src /code/module_3/src
答案 2 :(得分:0)
这是对旧问题的迟到回应,但也许这会对像我这样的其他后来者有所帮助。
免责声明:此答案适用于Windows。
似乎 v1.79 已经解决了OP的问题。以下命令行语法对我有用:
cppcheck -itest code
在这个例子中," -itest"除去任何"测试"目录,由OP最初(并且正确地)假设。此外,代码文件夹位于cppcheck.exe旁边。这将是递归源代码扫描的根源。