정보처리기사/소프트웨어 개발

소프트웨어 정적 분석(Static Analysis)

glorypang 2025. 10. 25. 22:50
728x90
반응형
SMALL
  • 정적 분석: 소스코드를 실행하지 않고 품질을 점검(코딩 표준/스타일, 버그 패턴, 복잡도, 의존 구조, 보안 취약점 등).

대표 정적 분석 도구 

  • PMD (Java 등)
    • 불필요 코드, 빈 catch, 복잡도, naming 등 룰 기반 검사.
  • SonarQube (멀티 언어 플랫폼)
    • 버그/취약점/냄새(Code Smell)·중복·커버리지·복잡도 대시보드. CI와 연동 쉬움.
  • FindBugs / SpotBugs (Java)
    • 바이트코드 분석으로 잠재 버그 패턴 탐지(Null Deref, 불변식 위반 등).
    • 요즘은 SpotBugs가 활발.
  • Checkstyle (Java)
    • 코딩 스타일/포맷팅/명명 규칙 집중. 팀 코딩 규약 적용에 적합.
  • cppcheck (C/C++)
    • 타입·경계·자원 누수·정의되지 않은 동작 등 버그 중심 분석.
  • Cobertura (Java)
    • 커버리지 측정 도구(라인/브랜치). 정적 분석은 아니지만 Sonar와 함께 품질 지표로 자주 사용.

보너스:

ESLint(JS/TS), Pylint/Flake8(Python), Detekt(Kotlin), Clang-Tidy(C/C++), Bandit(Python 보안), Semgrep(다언어 SAST)도 많이 씁니다.


무엇을 잡아내나

  • 코딩 표준/스타일: 들여쓰기, 네이밍, import 정리 (Checkstyle/ESLint)
  • 버그 패턴: NPE 가능성, 잘못된 equals/hashCode, 리소스 누수 (SpotBugs/PMD/cppcheck)
  • 복잡도/중복: 함수 길이, 순환 복잡도, 중복 블록 (PMD/SonarQube)
  • 보안: 하드코딩 비밀, 위험한 API 사용 (SonarQube/Semgrep/Bandit)
  • 품질지표: 커버리지, 코드 스멜, 유지보수성 등 (SonarQube + Cobertura/Jacoco)
728x90
반응형
LIST