2016-12-21 2 views
0
TL:DR 

Вы можете генерировать лязг отладочной информации (CFGs, PDGs), когда исходный файл имеет ошибки в зависимости от отсутствующих файлов заголовки, которые вызывают вопросы компиляции, такие как необъявленные идентификаторы и неизвестные типы? Файлы синтаксически корректны. Есть ли флаг, который может установить все необъявленные идентификаторы для INT для отладки?ошибки Обходного C для генерации лязг отладочной информации


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

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

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

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

Спасибо!

+2

Я не думаю, что это возможно. Чтобы сгенерировать код, компилятору нужна информация, которая находится во входящих файлах. – Stargateur

+0

Может быть, так. Однако я надеялся, что кто-то научит меня трюкам в торговле. Либо есть «трюк в торговле», когда речь заходит об анализе безопасности и источника, или есть много бумаг безопасности, которые являются ПОЛНЫМИ болонье. –

+0

Обратите внимание, что обычно вам не нужно вручную исправлять make-файлы - несколько переменных среды, а в худшем случае трюки PATH и сценарии с соответствующим именем могут иметь большое значение. Такие вещи, как 'scanbuild', могут в основном автоматизировать это с помощью статического анализатора clang. Кроме того, в настоящее время, если он компилируется в gcc, вы, как правило, можете заставить clang скомпилировать его - часто худшее, что вам нужно, это всего лишь пара определений, чтобы код выглядел как gcc. Наконец, есть инструменты, такие как Psyche-c, которые разрабатываются, но они все еще очень экспериментальны. –

ответ

1

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

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

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

Надеется, что это помогает

Смежные вопросы