如何告诉 Cppcheck 跳过头文件
Posted
技术标签:
【中文标题】如何告诉 Cppcheck 跳过头文件【英文标题】:How can I tell Cppcheck to skip a header file 【发布时间】: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.h
的c:\projectfolder\file_test.cc
中发现并报告了错误(详细信息:“#ifdef 配置过多”)。
我如何告诉 Cppcheck 根本不看 C:\gtest\gtest.h
?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何告诉 Cppcheck 跳过头文件的主要内容,如果未能解决你的问题,请参考以下文章