
Stoat es una herramienta para afirmar las propiedades sobre el gráfico de llamadas de los programas/bibliotecas. El uso principal de esta herramienta es analizar programas que necesitan realizar operaciones duras en tiempo real en una parte de una base de código mixta. Esto se realiza identificando todas las funciones que pueden llamarse transitivamente desde alguna función raíz conocida que debe ser en tiempo real. Si se encuentra alguna función insegura que pueda bloquear durante una cantidad arbitraria de tiempo en este cierre transitivo, entonces se emite un error para indicar dónde se puede encontrar el comportamiento inadecuado y qué retroceso es responsable de que se llame.
Mantener una gran base de código en C/C ++ puede hacer que sea muy difícil saber qué código termina llamando a qué otras rutinas. Esto se complica aún más cuando hay alguna segregación dentro de una base de código que puede no estar en absoluto claro en la implementación. Esto se complica aún más por la opacidad de algunas técnicas de C ++, como sobrecarga virtual, sobrecarga de operadores, herencia múltiple y conversiones implícitas.
LLVM 3.3+
Clang 3.3+
c ++ filt
rubí
GraphViz GEM (opcional) para renderizaciones de callgraph
Colorize Gem (opcional) para salida de color
git clone https://github.com/fundamental/stoat && cd stoat
mkdir build && cd build
cmake .. && make && make test
make install # or just run in placeMarcadores de seguridad en línea __attribute __ ((anotado ("real"))))
Marcadores de peligro en línea __attribute __ ((anotado ("no realización"))))
Whitelists/listas negras fuera de línea
Archivos de supresión fuera de línea
Capacidades de gráficos para un gráfico seguro o contradictor
Soporte para el análisis de árbol de despacho dentro de Librosc
Anotar una función de tiempo real de raíz con __attribute __ ((anotate ("real"))))
Compile todos los archivos con cc = stoat-compile cxx = stoat-compile ++ o simplemente compile archivos con la bandera -emit-llvm de Clang
Ejecute el Stoat en los archivos IR LLVM resultantes utilizando la opción -RECURSIVA
Ver las contradicciones
Opcionalmente, rehace el análisis utilizando la opción -g para ver gráficamente las contradicciones
Actualice su código, una lista blanca o lista de supresión
Disfruta del código más seguro
Para obtener una guía más explícita, consulte el tutorial en http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example.html
Stoat está disponible bajo la licencia GPLV3