【问题标题】:How can I tell Cppcheck to skip a header file如何告诉 Cppcheck 跳过头文件
【发布时间】:2012-11-27 19:35:17
【问题描述】:

Cppcheck 扫描项目文件夹中的所有文件:

c:\projectfolder\main.c
c:\projectfolder\file.c
c:\projectfolder\file.h
c:\projectfolder\file_test.cc

c:\projectfolder\file_test.cc 包含以下代码

#include "c:/gtest/gtest.h"

extern "C"
{
    #include "TMyStruct.h"
}

TEST(Stack, Overflow)
{
    TMyStruct unterTest;
    EXPECT_EQ(1, TMyStruct_Init(&unterTest));
    EXPECT_GE(unterTest.variable, 9000);
}

文件 file_test.cc 包含 gtest.h 文件

C:\gtest\gtest.h

不应测试 C:\gtest\ 中的所有文件。

我打电话

cppcheck.exe -ic:\gtest\ c:\projectfolder\ --enable=style --template="SomeError"

在来自包含的gtest.hc:\projectfolder\file_test.cc 中发现并报告了错误(详细信息:“#ifdef 配置过多”)。

我如何告诉 Cppcheck 根本不看 C:\gtest\gtest.h

【问题讨论】:

    标签: googletest cppcheck


    【解决方案1】:

    我是一名 Cppcheck 开发人员。我认为您不能跳过头文件。也许 -i 应该那样工作。

    请随时为此创建票证:http://sourceforge.net/apps/trac/cppcheck/

    【讨论】:

    • 我很想写 /*ccpcheck::startignore*/ ... /*ccpcheck::endignore*/
    • 我认为这是可以接受的。我添加了一张票 (sourceforge.net/apps/trac/cppcheck/ticket/4377)。我不能保证我们会尽快修好票。所以如果您有时间,请随时查看。
    • 好吧,否则我会被卡住:) 我如何加入这个项目?
    • 这个功能有进展吗?
    • 根据手册 (cppcheck.sourceforge.net/manual.pdf) 第 7 页所述,i 选项可用于忽略文件。
    【解决方案2】:

    我的项目结构如下:

    ├── build
    ├── lib
    │   └── dep
    │       └── dep.h
    ├── src
    │   ├── code.c
    │   └── code.h
    └── tests
        └── code_test.c
    

    为了抑制 lib 包含的警告,我这样做了:

    cppcheck --enable=all --suppress='*:lib/*' -Isrc -Itests ./src ./tests 1>/dev/null
    

    也许这应该适用于 Windows:

    cppcheck.exe --suppress='*:c:\gtest\*' c:\projectfolder\
    

    我的 Cppcheck 版本是 1.74。

    参考:

    Allow ignoring results from header files

    【讨论】:

      猜你喜欢
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      • 2014-07-23
      • 2012-06-22
      • 2010-09-25
      • 1970-01-01
      相关资源
      最近更新 更多