1번과 2번은 동적 테스트로 어느 정도 커버가 가능
3번(예상치 못한 입력)은 예상치 못한 입력임으로 동적 테스트에서 발견할 수 없음.
4번(단순한 코딩 실수로 인한 버그)은 대표적으로 memory leak이 있음. 이는 프로그램이 어느정도 실행 한 후 터지기 때문에 테스트 코드에서 발견하기 힘듬. 따라서 개발 단계가 아닌 운영단계에서 발생함.
이런 운영단계에서 실행 중 발생하는 에러들은 많은 연습이나 경험을 통해 방지할 수 있음.
그렇다면, 경험이 없는 개발자는 어떻게 해결할 수 있을까?
→ 바로 정적 분석을 통해 해결 할 수 있음
정적 분석은 경험 많은 개발자들의 노하우나 실무에서 많이 발생한 여러 오류들의 사례로부터 규칙을 만들고, 이를 이용해 소스 코드 전반에 걸쳐 분석을 수행함.
따라서 동적테스트나 경험부족으로 인한 버그를 찾을 수 있게 해줌
정적 분석은 버그뿐만 아니라 개선의 여지가 있는 코드들도 찾아줌
정적 분석은 코딩 스타일 가이드에 관한 규칙과 코드의 품질 메트릭도 제공
언어가 제공하는 가이드라인 혹은 팀의 컨벤션에 따라 코드가 구현되었는지 검사할 수 있음.