Microsoft와 함께 만든 CGA, Rust 바이너리의 panic 경로를 컴파일 단계에서 찾아낸다
Finding Panics with Call Graph Analyzer
Tweede golf는 Open Device Partnership과 Microsoft의 협업으로 Call Graph Analyzer(CGA)를 공개했다. CGA는 monomorphized MIR에서 호출 그래프를 추출해 컴파일된 바이너리에서 panic이 발생할 수 있는 함수를 추적한다. `cargo cga check`를 실행하면 panic 가능성이 있는 호출을 오류로 표시해 준다. 기존 링커 기반 방식과 달리 라이브러리에도 적용되고, 의존성과 표준 라이브러리 내부의 panic까지 볼 수 있지만, LLVM 최적화 전에 분석하기 때문에 일부 false positive가 생기고 컴파일 속도가 2~3배 느려진다는 한계도 있다.
panic이 전혀 없는 코드를 추구하는 것은 매우 어렵고 꽤 어리석은 일이다. 코드에 가정이 없는 경우는 드물기 때문이다.