
STOAT - это инструмент, чтобы утверждать свойства о вызове программ/библиотек. Основное использование этого инструмента заключается в анализе программ, которые необходимо выполнить жесткие операции в реальном времени в части смешанной кодовой базы. Это делается путем определения всех функций, которые могут транзисивно вызваны из некоторой известной корневой функции, которая должна быть в реальном времени. Если какая -либо небезопасная функция, которая может заблокировать для произвольного количества времени, обнаружена в этом переходном закрытии, то испускается ошибка, чтобы указать, где можно найти неправильное поведение и то, что Backtrace отвечает за его вызвание.
Поддержание большой кодовой базы в C/C ++ может очень трудно понять, какой код в конечном итоге вызывает какие другие процедуры. Это еще более сложно, когда в одной кодовой базе есть некоторая сегрегация, которая может быть совсем неясной в реализации. Это также осложняется непрозрачностью некоторых методов C ++, таких как виртуальная перегрузка, перегрузка оператора, множественное наследование и неявные преобразования.
LLVM 3.3+
Clang 3.3+
C ++ FILT
рубин
Graphviz Gem (необязательно) для визуализации Callgraph
раскрасить драгоценный камень (необязательно) для цветного вывода
git clone https://github.com/fundamental/stoat && cd stoat
mkdir build && cd build
cmake .. && make && make test
make install # or just run in placeВстроенные маркеры безопасности __attribute __ ((Annotate («Реальное время»))))))
Встроенные маркеры опасности __attribute __ ((аннотат ("нереальное время")))))))
Из белых списков/черных списков
Файлы подавления вне линии
Графические возможности для безопасного или противоречивого графика
Поддержка анализа дерева диспетчеры в Librtosc
Анотировать корневую функцию в реальном времени с __attribute __ ((Annotate ("Realtime")))))))
Скомпилируйте все файлы с помощью cc = stoat-compile cxx = stoat-compile ++ или просто компилировать файлы с флагом Clang -Emit-llvm
Запустите гости в результирующих IR -файлах LLVM, используя опцию - -рекурсивного
Просмотреть противоречия
При желании переделать анализ, используя опцию -g для графического просмотра противоречий
Обновите свой код, белый список или список подавления
Наслаждайтесь более безопасным кодом
Для более явного руководства см. Учебное пособие по адресу http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example.html
Стоп доступен по лицензии GPLV3