Как я могу указать 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?


person Johannes    schedule 27.11.2012    source источник


Ответы (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.

Справка:

Разрешить игнорировать результаты из заголовочных файлов

person Hugo do Carmo    schedule 12.07.2016

Я разработчик Cppcheck. Я не думаю, что вы можете пропустить заголовочный файл. Возможно, -я должен работать так.

Не стесняйтесь создать тикет по этому поводу: http://sourceforge.net/apps/trac/cppcheck/

person Daniel Marjamäki    schedule 28.11.2012