
Stoat est un outil pour affirmer des propriétés sur le CallGraph des programmes / bibliothèques. L'utilisation principale de cet outil est d'analyser les programmes qui doivent effectuer des opérations en temps réel dur dans une partie d'une base de code mixte. Cela se fait en identifiant toutes les fonctions qui peuvent être appelées transitoires à partir d'une fonction racine connue qui doit être en temps réel. Si une fonction dangereuse qui pourrait bloquer pendant une durée arbitraire est trouvée dans cette fermeture transitive, une erreur est émise pour indiquer où le comportement inapproprié peut être trouvé et quel retour en arrière est responsable.
Le maintien d'une grande base de code en C / C ++ peut rendre très difficile de savoir quel code finit par appeler quelles autres routines. Cela est encore compliqué lorsqu'il y a une certaine ségrégation dans une base de code qui peut ne pas être du tout claire dans l'implémentation. Ceci est encore compliqué par l'opaqueté de certaines techniques C ++, telles que la surcharge virtuelle, la surcharge de l'opérateur, l'héritage multiple et les conversions implicites.
LLVM 3.3+
Clang 3.3+
C ++ filt
rubis
Graphviz Gem (facultatif) pour les rendus de callgraph
Coloriser Gem (facultatif) pour la sortie colorée
git clone https://github.com/fundamental/stoat && cd stoat
mkdir build && cd build
cmake .. && make && make test
make install # or just run in placeMarqueurs de sécurité en ligne __attribute __ ((annoter ("en temps réel")))
Marqueurs de danger en ligne __attribut __ ((annoter ("non-réel"))))
Listes blanches hors ligne / listes noires
Fichiers de suppression hors ligne
Capacités graphiques pour le graphique sûr ou contredire
Prise en charge de l'analyse des arbres de répartition dans le bibliothèque
Annoter une fonction racine en temps réel avec __attribute __ ((annotate ("réel"))))
Compilez tous les fichiers avec cc = stoat-compile cxx = stoat-compile ++ ou compiler simplement des fichiers avec l'indicateur -emit-llvm de Clang
Exécutez le stat sur les fichiers IR LLVM résultants à l'aide de l'option - réécursive
Voir les contradictions
Re-refaire de l'analyse en utilisant l'option -g pour afficher graphiquement les contradictions
Mettez à jour votre code, votre liste blanche ou votre liste de suppression
Profitez du code plus sûr
Pour un guide plus explicite, veuillez consulter le tutoriel à http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example.html
Stoat est disponible sous la licence GPLV3