정적분석기 적용하기 - leegwichan/java-baseball-playground GitHub Wiki

정적 분석기 적용하기

정적 분석기

정적 분석(Static Analysis)이란?

소스 코드의 실행 없이 정적으로 프로그램의 문제를 찾는 과정을 의미한다. 정적 분석은 비런타임 환경에서 수행된다.

정적 분석의 필요성

  • 사람이 모든 Convention을 지켜가면서 코딩하는 것은 불가능하므로 이를 빠르고 정확하게 알려줄 수 있는 도구가 필요함
  • 코드 리뷰 할 때, 기본적인 Convention 보다 코드 구조, 효율, 버그 가능성에 집중할 수 있다.
  • 사람이 놓치기 쉬운 취약점 등의 문제를 쉽게 발견할 수 있다
  • 정해진 규칙과 기준에 따라 분석하기 때문에 착오가 발생하지 않는다

정적 분석기의 지원 기능

  • 코드 규칙 검사
  • 코드 스타일 검사
  • 중복 코드 검사
  • 버그 검사
  • 보안 취약점 검사

정적 분석기 적용한 이유

피드백

  • 각 과제에게는 측정 가능한 '프로그래밍 요구사항'이 존재한다. 해당 사항을 정적 분석기에 설정하여 해당 요구 사항을 안지켰을 경우 즉각적인 피드백을 받을 수 있다
  • 과제에서 제공하는 요구 사항 이외에도 다른 요구 사항도 손쉽게 적용시킬 수 있다.
  • 많은 양의 요구 사항을 직접 생각하지 않아도 요구 사항을 쉽게 지킬 수 있다

취약점 공부

  • 정적 분석기는 기본적인 Code Convention 확인 뿐만 아니라 버그가 생길 수 있는 부분까지 알려준다
  • 내 코드의 취약점을 대략적인 설명과 함께 제공하기 때문에 해당 방법에 취약점을 알고 이에 맞추어 수정할 수 있다.

참고 자료