Frama-c: сохранить результаты анализа плагина в файле c

Я новичок в frama-c. Поэтому я заранее прошу прощения за мой вопрос.

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

Я хотел бы знать, возможно ли создать новый файл c с frama-c. Например, результаты плагинов сворачивания Sparecode и Semantic отображаются непосредственно на терминале, а не в файле. Поэтому я хотел бы знать, есть ли у Frama-c функция записи в файл вместо отправки результата анализа в стандартный вывод.

Конечно, мы можем перенаправить вывод frama-c, например, в файл file.c, но в этом случае для плагина scf, например, результаты value есть, и я обнаружил, что frama-c заменяет, например, "for покажется

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

Я посмотрел в каталоге src / kernel_services / ast_printing, но я действительно не нашел функций, которые могут мне помочь.

Благодарю.

1 ответ

В командной строке опция -ocode <file> указывает на то, что любой последующий -print будет сделано в <file> вместо стандартного вывода (используйте -ocode "" после этого, если вы хотите снова напечатать на стандартный вывод). Обратите внимание, что -print печатает код, соответствующий текущему проекту. Ты можешь использовать -then-on <prj> изменить проект, который вас интересует. Более подробная информация, конечно, доступна в руководстве пользователя.

Все это, конечно, доступно программно. Особенно, File.pretty_ast по умолчанию pretty-prints (т.е. вывод программы C) AST текущего проекта на stdout, но принимает два необязательных аргумента для изменения проекта или средства форматирования, в которые должен быть выполнен вывод.

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