돌리기 전에 잡는다. 임베디드는 재현이 어려운 버그가 많아 효과가 특히 크다.
무엇을 잡나
초기화 안 된 변수 사용
널 포인터 역참조 가능 경로
배열 범위 초과
도달할 수 없는 코드 · 항상 참인 조건
정수 오버플로 · 부호 혼용
MISRA 같은 코딩 규칙 위반
컴파일러 경고부터 켠다
-Wall -Wextra -Wconversion -Wshadow
공짜로 얻는 정적 분석이다. 특히 -Wconversion 은 정수 승격이 만드는 함정을 잡아 준다.
경고를 방치하면 새 경고가 묻히므로, 경고 0 을 유지하고 CI 에서 -Werror 로 강제하는 것이 좋다.
한계
- 오탐이 있다. 전부 고치려 들면 지친다 — 억제 주석과 사유를 남기는 절차를 정한다
- 실행 시점 문제(타이밍·경쟁 조건)는 대부분 못 본다
그래서 정적 분석·단위 테스트·HIL 이 각각 다른 층을 맡는다.