如何从cppcheck分析中排除测试路径?

时间:2015-05-21 13:25:32

标签: c++ ignore cppcheck

我尝试对我的代码运行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。我知道我可以单独提及所有测试目录(这确实有效,我检查过),但模块数量太高,无法合理地进行多次分析。

这可能吗?

3 个答案:

答案 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旁边。这将是递归源代码扫描的根源。