我怎么能告诉cppcheck跳过头文件

Joh*_*nes 4 googletest cppcheck

cppcheck扫描项目文件夹中的所有文件.

c:\projectfolder\main.c
c:\projectfolder\file.c
c:\projectfolder\file.h
c:\projectfolder\file_test.cc
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

file_test.cc包含gtest.h

C:\gtest\gtest.h
Run Code Online (Sandbox Code Playgroud)

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

我打电话

cppcheck.exe -ic:\gtest\ c:\projectfolder\ --enable=style --template="SomeError"
Run Code Online (Sandbox Code Playgroud)

file_test.cc从包含的c:\projectfolder\file_test.cc内容中找到并报告错误(详细信息:"太多#ifdef配置")

我怎么告诉cppcheck根本不看C:\ gtest\gtest.h?

Dan*_*äki 9

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

随意创建一个关于此的门票:http://sourceforge.net/apps/trac/cppcheck/

  • 这个功能有什么进展吗? (2认同)

Hug*_*rmo 3

我的项目结构如下所示:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dep\n\xe2\x94\x82       \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 dep.h\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 code.c\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 code.h\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 code_test.c\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
cppcheck --enable=all --suppress=\'*:lib/*\' -Isrc -Itests ./src ./tests 1>/dev/null\n
Run Code Online (Sandbox Code Playgroud)\n\n

也许这应该适用于 Windows:

\n\n
cppcheck.exe --suppress=\'*:c:\\gtest\\*\' c:\\projectfolder\\\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的Cppcheck版本是1.74。

\n\n

参考:

\n\n

允许忽略头文件中的结果

\n