
Stoat는 프로그램/라이브러리의 콜 그래프에 대한 속성을 주장하는 도구입니다. 이 도구의 주요 사용법은 혼합 코드베이스의 일부에서 어려운 실시간 작업을 수행 해야하는 프로그램을 분석하는 것입니다. 이는 실시간이어야 할 알려진 일부 루트 함수에서 전기적으로 호출 될 수있는 모든 기능을 식별함으로써 수행됩니다. 이 전이 폐쇄에서 임의의 시간 동안 차단할 수있는 안전하지 않은 함수가 발견되면 부적절한 동작이 어디에서 발견 될 수 있는지, 그리고 그 백로가 호출되는 어떤 역으로 어떤 역도가 있는지를 나타 내기 위해 오류가 발생합니다.
C/C ++에서 큰 코드베이스를 유지하면 다른 코드를 다른 루틴을 호출하게되는 코드를 알기가 매우 어려울 수 있습니다. 이는 하나의 코드베이스 내에 약간의 분리가있을 때 더욱 복잡합니다. 이는 구현에서 전혀 명확하지 않을 수 있습니다. 이는 가상 과부하, 연산자 과부하, 다중 상속 및 암시 적 변환과 같은 일부 C ++ 기술의 불투명성으로 인해 더욱 복잡합니다.
LLVM 3.3+
Clang 3.3+
C ++ 파일
루비
CallGraph 렌더링에 대한 GraphViz Gem (선택 사항)
컬러 출력에 대한 색상화 보석 (선택 사항)
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 __ ((annotate ( "Realtime"))와 함께 루트 실시간 기능에 주석
모든 파일을 cc = stoat 컴파일 Cxx = stoat 컴파일 ++ 또는 Clang의 -emit-llvm 플래그로 컴파일하는 것만 컴파일하십시오.
-Recursive 옵션을 사용하여 결과 LLVM IR 파일에서 Stoat를 실행하십시오.
모순을보십시오
선택적으로 -G 옵션을 사용하여 분석을 다시 실행하여 모순을 그래픽으로 볼 수 있습니다.
코드, 화이트리스트 또는 억제 목록을 업데이트하십시오
더 안전한 코드를 즐기십시오
보다 명백한 가이드는 http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example.html 튜토리얼을 참조하십시오.
Stoat는 GPLV3 라이센스에 따라 제공됩니다