Обход ошибок C для генерации отладочной информации clang

TL:DR

Можете ли вы сгенерировать информацию об отладке clang (CFG, PDG), когда исходный файл имеет ошибки DEPENDENCY из-за отсутствующих заголовочных файлов, которые вызывают проблемы компиляции, такие как необъявленные идентификаторы и неизвестные типы? Файлы синтаксически верны. Есть ли флаг, который может устанавливать все необъявленные идентификаторы в INT для отладки?


Я использую Clang для анализа пакетов исходного кода. Обычно я изменяю make-файл, чтобы clang генерировал отладочную информацию, используя команду ниже

clang -emit-llvm -g -S -ferror-limit=0 -I somefile some_c_file

Тем не менее, этот подход очень сфокусирован на make-файлах, и если разработчик не поддерживает Clang в данной версии сборки, я должен выяснить, как генерировать отладочную информацию.

Это не хорошо для автоматизации. Для таких вещей, как OpenSSL, где они включают дюжину файлов (заголовков) и пользовательских конфигураций для данной платформы, это не практично. Я хочу подавить или игнорировать ошибки, если это возможно, поскольку я знаю, что тестируемый файл версии сборки синтаксически корректен.

Спасибо!

1 ответ

Недавно я использовал clang-tidy для анализа исходного кода одного из наших проектов. В проекте используется компилятор GNU, и мы не хотели уходить от этого. Итак, процесс, которым я следовал, был ниже:

1) Используйте bear для генерации базы данных компиляции, т.е. compile_commands.json, которая используется clang-tidy

2) Пропустить включаемые файлы, которые мы не хотим анализировать, включив их в качестве системных файлов, т. Е. Использовать --isystem для их включения и проецировать определенные файлы, используя -I. (Если вы не можете изменить файлы Make, вы можете изменить файл compile_commands.json простым поиском и заменой)

Надеюсь это поможет

Другие вопросы по тегам