
O Stoat é uma ferramenta para afirmar propriedades sobre o callgraph de programas/bibliotecas. O uso primário desta ferramenta é analisar programas que precisam executar operações difíceis em tempo real em uma parte de uma base de código mista. Isso é feito identificando todas as funções que podem ser chamadas de forma transitivamente a partir de alguma função raiz conhecida que deve ser em tempo real. Se qualquer função insegura que pudesse bloquear por uma quantidade arbitrária de tempo for encontrada nesse fechamento transitivo, é emitido um erro para indicar onde o comportamento inadequado pode ser encontrado e qual o backtrace é responsável por ser chamado.
Manter uma base de código grande em C/C ++ pode dificultar muito saber qual código acaba chamando de que outras rotinas. Isso é ainda mais complicado quando há alguma segregação em uma base de código que pode não ser clara na implementação. Isso é ainda mais complicado pela opacidade de algumas técnicas de C ++, como sobrecarga virtual, sobrecarga do operador, herança múltipla e conversões implícitas.
LLVM 3.3+
Clang 3.3+
C ++ Filt
rubi
GraphViz Gem (Opcional) para renderizações de callgraph
colorize gem (opcional) para saída colorida
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 segurança embutidos __Attribute __ ((AnoTate ("RealTime")))))
Marcadores de perigo em linha __Attribute __ ((AnoTate ("não-real-time"))))
Listas de braços/listas negras fora da linha
Arquivos de supressão fora da linha
Recursos de gráfico para gráfico seguro ou contraditório
Suporte para análise de árvores de despacho dentro de Librtosc
Anote uma função raiz em tempo real com __attribute __ ((Anotate ("RealTime"))))
Compilar todos os arquivos com cc = stoat-compile cxx = stoat-compile ++ ou apenas compilar arquivos com o sinalizador -emit-llvm de Clang
Execute o Stoat nos arquivos IR LLVM resultantes usando a opção -Recursiva
Ver as contradições
Opcionalmente refazer a análise usando a opção -g para visualizar graficamente as contradições
Atualize seu código, uma lista de permissões ou de supressão
Aproveite o código mais seguro
Para um guia mais explícito, consulte o tutorial em http://log.fundament-code.com/2014/08/15/stoat-tutorial-example.html
O Stoat está disponível sob a licença GPLV3