cppcheck
создает набор комбинаций всех макросов, которые влияют на условную компиляцию всех заголовков или источников по умолчанию, а затем фильтрует их до набора из приблизительно 12 комбинаций, если не используется --force
.
У меня есть большая кодовая база с большим количеством макросов переносимости.Меня интересует только относительно небольшое подмножество этих тестов, поэтому я использовал --config-exclude=include/port/
, чтобы отфильтровать все заголовки портов в моем проекте.
Проблема в том, что cppcheckзатем, похоже, не тестирует никаких комбинаций - до такой степени, что он не может жаловаться на явно фиктивный код, такой как
int *foo = NULL;
*foo = 1;
В любом случае, я бы на самом деле хотел бы протестировать некоторые комбинациимакросов, но не весь неуправляемый список.
Есть ли какой-то вменяемый способ заставить cppcheck
принять список макросов, чтобы попробовать комбинации?Или я застряну с созданием явных списков -U и -D для передачи ему в нескольких вызовах сам?
Я заметил, что ему нравится пробовать такие вещи, как запуск с -DMSC_VER
и без него,Если я явно установлю -DMSC_VER
, то он обнаружит установленную проблему, которая за пределами любого #ifdef MSC_VER
охранника;но если я установил -UMSC_VER
, то не смог найти проблему и, по-видимому, протестировал нулевые комбинации.
Это как если бы явный -Umacro
не выполнял тот же путь, что и путь cppcheck, если он разрешенпопробовать как определенные, так и не определенные пути ...