如何告诉Cppcheck跳过头文件

时间:2012-11-27 19:35:18

标签: googletest cppcheck

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"

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

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

2 个答案:

答案 0 :(得分:9)

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

随意创建一个关于此的故障单:http://sourceforge.net/apps/trac/cppcheck/

答案 1 :(得分:3)

我的项目结构如下:

├── 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