Concetti Chiave
C 프로그램의 실행 시간 오류를 감지하고 프로그램 속성을 검증하기 위한 정적 분석 도구 C Analyzer를 개발하였다.
Sintesi
이 프로젝트는 C 프로그램의 정적 분석을 위한 도구 C Analyzer를 개발하였다. C Analyzer는 추상 해석 이론을 기반으로 하며, 다양한 추상 도메인을 사용하여 프로그램 속성을 분석할 수 있다.
주요 내용은 다음과 같다:
LLVM의 Clang API를 활용하여 C 프로그램의 제어 흐름 그래프(CFG)를 생성하고 탐색한다.
다양한 추상 도메인(Interval, Octagon, Polyhedra, Bit Vector)을 지원하며, 필요한 정밀도에 따라 적절한 도메인을 선택할 수 있다.
CFG 탐색 중 기본 블록의 문장에 대한 불변량을 생성하여, 프로그램의 속성(0으로 나누기, 모듈로 0, 산술 오버플로 등)을 분석할 수 있다.
CIL(Common Intermediate Language) 도구를 사용하여 C 언어 구문을 단순화하는 변환을 수행한다.
선언, 할당, 연산, 조건, 반복문 등 다양한 C 언어 구문을 분석할 수 있다.
현재 배열, 구조체, 포인터, 함수 호출 등은 지원하지 않는다.
Statistiche
C 프로그램 분석 시 사용되는 주요 메트릭:
제어 흐름 그래프(CFG) 생성 및 탐색 시간
추상 도메인별 분석 시간 및 정밀도
프로그램 속성 검증 결과(오류 탐지 수, 정확도)
Citazioni
"프로그램 검증을 위한 정적 분석은 안전 중요 시스템의 런타임 오류를 감지하여 인명 피해와 시간, 비용 손실을 방지할 수 있다."
"C Analyzer는 다양한 추상 도메인을 지원하여 필요한 정밀도로 프로그램 속성을 분석할 수 있다."