Learning
토픽 114 / 192·소프트웨어 표준과 법제도

Static Code Analysis (정적 코드 분석)

Static Code Analysis (정적 코드 분석)

프로그램을 실행하지 않고 소스 코드를 분석하여 버그, 취약점, 코드 스멜, 코딩 규칙 위반을 자동으로 탐지하는 소프트웨어 품질 보증 기법으로, CI/CD 파이프라인에 통합하여 지속적으로 코드 품질을 모니터링

목적: 버그 조기 발견, 보안 취약점 탐지, 코딩 표준 준수, 코드 품질 개선, 기술 부채 관리

특징: 실행 불필요, 자동화, CI/CD 통합, 규칙 기반, 광범위한 검사

분석 유형

  • 구문 분석(Syntax): 문법 오류, 컴파일 에러
  • 의미 분석(Semantic): 타입 오류, 미사용 변수, 널 참조
  • 보안 분석(SAST): SQL Injection, XSS, 하드코딩 비밀번호
  • 코드 스멜: 복잡도, 중복, 긴 메서드
  • 스타일 검사(Lint): 코딩 규칙, 들여쓰기, 명명 규칙

주요 메트릭

  • 순환 복잡도(Cyclomatic Complexity): 분기 수, 10 이하 권장
  • 코드 중복률: 중복 코드 비율
  • 테스트 커버리지: 테스트된 코드 비율
  • 기술 부채(Technical Debt): 수정 필요 시간

대표 도구

  • SonarQube: 다언어, 품질 게이트, 대시보드, 기술 부채
  • ESLint(JavaScript): 규칙 커스터마이징, 자동 수정
  • Pylint/Flake8(Python): PEP8, 타입 검사
  • PMD/Checkstyle(Java): 규칙 기반, 스타일 검사
  • Semgrep: 보안 중심, 커스텀 규칙

CI/CD 통합: Pull Request 검사, 품질 게이트(통과 조건), 자동 코멘트

장점: 조기 발견, 자동화, 일관성, 비용 절감, 보안 강화

단점: 오탐(False Positive), 동적 문제 미탐지, 설정 노력, 빌드 시간 증가

적용사례: CI/CD 파이프라인, Pull Request 검사, 보안 취약점 스캔, 코딩 표준 준수

비교: 정적 분석(실행 전/구조) vs 동적 분석(실행 중/행위) vs 코드 리뷰(사람)

연관: SonarQube, CI/CD, 코드 스멜, SAST, 코드 리뷰, 품질 게이트