【问题标题】:How to exclude test paths from cppcheck analysis?如何从 cppcheck 分析中排除测试路径?
【发布时间】:2015-08-03 04:51:55
【问题描述】:

我尝试对我的代码运行 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”之类的命令可以做到这一点吗?根据the docs,它对我不起作用,尽管我认为它应该起作用:

...目录名称与路径的所有部分匹配。

我使用的是 1.69 版。我知道我可以单独提及所有测试目录(确实有效,我检查了),但模块数量太多,无法合理地进行许多分析。

这可能吗?

【问题讨论】:

  • 您能否准确提供您尝试使用的命令行?

标签: c++ cppcheck


【解决方案1】:

我安装了 Cppcheck 来做一些测试,看起来-i 的实现有点疯狂。但是,我设法实现了您想要的。

解决方案:使用-itest\而不是-itest(这是在Windows中;也许Linux需要-itest/

基本原理:在我的测试中,-itest 仅在存在 .\test\ 目录时才有效,在这种情况下,甚至 .\a\test\a.cpp 都被排除在外。但是,对于 -itest\,无论是否存在 .\test\ 目录,都会发生此类排除。

这似乎是开发人员应该清除的错误,但与此同时,您可以使用上述解决方法成功。

【讨论】:

    【解决方案2】:

    我会使用类似的东西:

    cppcheck /code/module_1/src /code/module_2/src  /code/module_3/src
    

    【讨论】:

    • 请解释为什么这比作者目前所做的更好。在目前的状态下,这个答案对于 SO 的标准非常低,很可能会被社区删除。
    • 对不起,我有点快。没有优势。但是,如果命令行允许,使用我的方法,可以使用正常的命令行扩展:“cppcheck /code/*/src”,而不能使用“cppcheck -i /code/*/test”。
    【解决方案3】:

    这是对一个老问题的较晚回复,但也许这会对像我这样的其他后来者有所帮助。

    免责声明:此答案适用于 Windows。

    似乎 v1.79 已经解决了 OP 的问题。以下命令行语法对我有用:

    cppcheck -itest code
    

    在此示例中,“-itest”清除了任何出现的“test”目录,正如 OP 最初(并且正确地)假设的那样。此外,代码文件夹位于 cppcheck.exe 旁边。这将是递归源代码扫描的根源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多