
FRAMA-C-это платформа, посвященная анализу исходного кода, написанного в C.
FRAMA-C перенес свое официальное хранилище в наш экземпляр Gitlab.
Официальные релизы (начиная с Frama-C 21) больше не будут обновляться здесь.
Ночные снимки также доступны в нашем Gitlab! Теперь вы можете получить доступ к последней версии разработки по адресу: https://git.frama-c.com/pub/frama-c/-/tree/master
Официальный трекер выпуска FRAMA-C теперь находится в нашем Gitlab: https://git.frama-c.com/pub/frama-c/-sisues
Вы можете отправить проблемы и привлечь запросы, используя свой логин GitHub (выберите «Войдите с GitHub», когда будет предложено).
Увидимся там!
FRAMA-C собирает несколько методов анализа в одной совместной платформе, состоящей из ядра , обеспечивающего основной набор функций (например, нормализованный AST для C программ), а также набор анализаторов, называемых плагинами . Плагины могут создаваться на результатах, вычисленных другими плагинами на платформе.
Благодаря этому подходу, Frama-C предоставляет сложные инструменты, в том числе:
Эти плагины имеют общий язык и могут обмениваться информацией через свойства ACSL ( язык спецификации ANSI/ISO C. Плагины также могут сотрудничать с помощью своих API.
Более подробную информацию об установке Opam/Frama-C см. Install.md.
Frama-C доступен через Opam, менеджер пакетов OCAML. Это предпочтительный метод установки. Обязательно установите Opam v2.0 или выше. Затем следующая последовательность команд должна установить Frama-C и его графический интерфейс:
opam init
opam install depext
opam depext frama-c
opam install frama-c
FRAMA-C разрабатывается в основном в Linux, часто тестируется в MacOS (через Homebrew), и иногда тестируется в Windows (через подсистему Windows для Linux).
FRAMA-C можно запустить из командной линии или через его графический интерфейс.
Рекомендуемое использование для простых файлов является одной из следующих строк:
frama-c file.c -<plugin> [options]
frama-c-gui file.c
Где -<plugin> является одним из нескольких плагинов Frama -C, например, -eva , или -wp , или -metrics и т. Д. Также можно запускать непосредственно из графического интерфейса.
Чтобы перечислить все плагины, запустите:
frama-c -plugins
Каждый плагин имеет команду справки ( -<plugin>-help или- -<plugin>-h ), которая описывает несколько вариантов.
Наконец, список вариантов, регулирующих поведение самого ядра Frama-C, доступен через
frama-c -kernel-help
Для более сложных сценариев использования (множество файлов и каталогов, с несколькими указаниями предварительной обработки), мы рекомендуем разделить использование Frama-C на две части:
Расположение, как правило, включает в себя предоставление дополнительных аргументов препроцессору C, поэтому вариант -cpp-extra-args часто полезен, как в примере ниже:
frama-c *.c *.h -cpp-extra-args="-D<define> -I<include>" -save parsed.sav
Затем результаты загружаются в FRAMA-C для дальнейшего анализа или для проверки через графический интерфейс:
frama-c -load parsed.sav -<plugin> [options]
frama-c-gui -load parsed.sav -<plugin> [options]
Ссылки на руководства пользователя и разработчика, архивы FRAMA-C и руководства по плагинам доступны в
http://frama-c.com/download.html
У Stackoverflow есть несколько вопросов с тегом frama-c , который контролируется несколькими членами сообщества Frama-C.
Список рассылки FRAMA-C-Discuss используется для объявлений и общих дискуссий.
Официальная система отслеживания ошибок может использоваться для отчетов об ошибках.
Вики Frama-C имеет некоторую полезную информацию, хотя она не совсем обновлена.
В блоге Frama-C есть несколько сообщений о новых разработках FRAMA-C, а также об общих дискуссиях о языке C, неопределенном поведении, вычислениях с плавающей запятой и т. Д.
Репозиторий снимка GitHub содержит архивы .tar.gz стабильных выпусков Frama-C, готовые к клонированию. Он также может быть использован для отчетности о проблемах и отправке запросов на притяжение.