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