本文介绍了如何告诉Cppcheck跳过头文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Cppcheck scans all files in a project folder:

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文件

File file_test.cc includes the gtest.h file

C:\gtest\gtest.h

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

All files in C:\gtest\ should not be tested.

我叫

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

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

Errors are found and reported in c:\projectfolder\file_test.cc coming from the included gtest.h (detail: "too many #ifdef configurations").

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

How do I tell Cppcheck to not look at C:\gtest\gtest.h at all?

推荐答案

我的项目结构如下:

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

禁止显示 lib 的警告包括,我是这样做的:

To suppress warnings for lib includes, I did this:

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

也许在Windows上应该可以使用:

Maybe this should work on Windows:

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

我的Cppcheck版本是1.74。

My Cppcheck version is 1.74.

参考:

这篇关于如何告诉Cppcheck跳过头文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-10 15:37