stoat
1.0.0

Stoat是主张有关程序/库的呼叫图的属性的工具。该工具的主要用法是分析需要在混合代码库的一部分中执行艰苦的实时操作的程序。这是通过识别所有可以从某些已知的根函数中调用的功能来完成的,这必须是实时的。如果在此传递闭合中找到可能会阻止任意时间的任何不安全函数,则会发出错误以指示在哪里可以找到不当行为,以及哪些返回轨道被调用。
在C/C ++中维护大型代码库可能会使很难知道哪些代码最终调用其他例程。当一个代码库中存在一些隔离时,这将更加复杂,而实施中可能根本不清楚。某些C ++技术的不透明性(例如虚拟超载,运算符过载,多个继承和隐式转换)的不透明性更加复杂。
LLVM 3.3+
叮当3.3+
C ++ Filt
红宝石
Callviz 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(“ realtime”)))
内联危险标记__ Attribute __((Annotate(“非实时”)))
台外白名单/黑名单
离线抑制文件
安全或矛盾图的图形功能
支持librtosc中的调度树分析
用__ATTRIBUTE __((nottate(“ realtime”))注释root实时函数)
用CC = stoat-Compile cxx = stoat-compile ++编译所有文件
使用 - 恢复选项在生成的LLVM IR文件上运行StoAT
查看矛盾
可选地使用-G选项重做分析以图形方式查看矛盾
更新您的代码,白名单或抑制清单
享受更安全的代码
有关更明确的指南
Stoat可在GPLV3许可证下获得