정적분석에 대해서

조현근·2022년 11월 3일
0
post-thumbnail

코드 정적 분석이란 무엇이고 왜 해야할까?

  • 정적 분석은 말 그대로 코드를 실행하지 않고 코드 형태에 대한 분석만 진행하는 것
  • 동적 분석은 테스트코드이다. 동적 분석에서 미처 발견하지 못한 버그를 정적 분석을 통해 잡아낼 수도 있다.

버그의 수많은 이유 중 크게 4가지 이유

  1. 고려하지 못한 케이스(요구사항 누락)
  2. 기대하지 않은 동작(요구사항 오해)
  3. 예상치 못한 입력(예외 처리에 대한 누락)
  4. 단순한 코딩 실수로 인한 버그(메모리 누수)

1번과 2번은 동적 테스트로 어느 정도 커버가 가능

3번(예상치 못한 입력)은 예상치 못한 입력임으로 동적 테스트에서 발견할 수 없음.

4번(단순한 코딩 실수로 인한 버그)은 대표적으로 memory leak이 있음. 이는 프로그램이 어느정도 실행 한 후 터지기 때문에 테스트 코드에서 발견하기 힘듬. 따라서 개발 단계가 아닌 운영단계에서 발생함.

이런 운영단계에서 실행 중 발생하는 에러들은 많은 연습이나 경험을 통해 방지할 수 있음.

그렇다면, 경험이 없는 개발자는 어떻게 해결할 수 있을까?

→ 바로 정적 분석을 통해 해결 할 수 있음

정적 분석은 경험 많은 개발자들의 노하우나 실무에서 많이 발생한 여러 오류들의 사례로부터 규칙을 만들고, 이를 이용해 소스 코드 전반에 걸쳐 분석을 수행함.

따라서 동적테스트나 경험부족으로 인한 버그를 찾을 수 있게 해줌

버그 이외에도 소프트웨어 개선의 여지를 만들어줌

정적 분석은 버그뿐만 아니라 개선의 여지가 있는 코드들도 찾아줌

정적 분석은 코딩 스타일 가이드에 관한 규칙과 코드의 품질 메트릭도 제공

언어가 제공하는 가이드라인 혹은 팀의 컨벤션에 따라 코드가 구현되었는지 검사할 수 있음.

출처

https://siwan.dev/2019/06/01/%E1%84%8C%E1%85%A5%E1%86%BC%E1%84%8C%E1%85%A5%E1%86%A8%E1%84%87%E1%85%AE%E1%86%AB%E1%84%89%E1%85%A5%E1%86%A8%E1%84%8B%E1%85%B5%E1%84%91%E1%85%B5%E1%86%AF%E1%84%8B%E1%85%AD%E1%84%92%E1%85%A1%E1%86%AB%E1%84%8B%E1%85%B5%EC%9C%A0.html

profile
안녕하세요!

0개의 댓글