| name | springboot-verification |
| description | Use before opening PRs, after major refactoring, or pre-deployment for Spring Boot verification. Do NOT use for writing tests (use springboot-tdd), security implementation (use springboot-security), or general patterns (use springboot-patterns). |
| paths | **/*.java, **/build.gradle*, **/pom.xml |
Spring Boot Verification Loop
PR, 배포 전 검증 파이프라인. 빌드 → 정적분석 → 테스트+커버리지 → 보안스캔 → diff 리뷰.
When to Activate
- PR 열기 전
- 대규모 리팩토링 / 의존성 업그레이드 후
- Staging/Production 배포 전
- 전체 검증 파이프라인 실행
CRITICAL Rules
- Phase 순서 엄수 — 앞 단계 실패 시 즉시 중단 후 수정
- 커버리지 80% 미만 = FAIL — 예외 없음
- OWASP Critical/High CVE = FAIL — 배포 차단
- System.out.println = FAIL — Logger 사용 필수
Phase 1: Build
mvn -T 4 clean verify -DskipTests
./gradlew clean assemble -x test
빌드 실패 시 중단. 컴파일 에러, 리소스 누락 먼저 해결.
Phase 2: Static Analysis
Maven
mvn spotbugs:check
mvn pmd:check
mvn checkstyle:check
mvn -T 4 spotbugs:check pmd:check checkstyle:check
Gradle
./gradlew checkstyleMain pmdMain spotbugsMain
Common Issues to Check
grep -rn "System\.out\.print" src/main/ --include="*.java"
grep -rn "e\.getMessage()" src/main/ --include="*.java" | grep -i "response\|body\|return"
grep -rn "TODO\|FIXME\|HACK\|XXX" src/main/ --include="*.java"
grep -rn "import .*\.\*;" src/main/ --include="*.java"
Phase 3: Tests + Coverage
mvn -T 4 test
mvn jacoco:report
./gradlew test jacocoTestReport
Coverage Verification
mvn jacoco:check
cat target/site/jacoco/jacoco.csv | head -5
Test Failure Analysis
실패한 테스트가 있으면:
- 실패 메시지와 stack trace 확인
- 최근 변경 사항과 관련성 파악
- Flaky test 여부 확인 (재실행으로 판별)
- 수정 후 Phase 3 재실행
Phase 4: Security Scan
Dependency CVE Scan
mvn org.owasp:dependency-check-maven:check
./gradlew dependencyCheckAnalyze
Source Code Secrets Scan
grep -rn 'password\s*=\s*"' src/ --include="*.java" --include="*.yml" --include="*.properties"
grep -rn 'sk-\|api_key\|secret\s*=' src/ --include="*.java" --include="*.yml"
git secrets --scan
Security Anti-Patterns
grep -rn 'allowedOrigins.*"\*"' src/main/ --include="*.java"
grep -rn 'csrf.*disable' src/main/ --include="*.java"
grep -rn '@Autowired' src/main/ --include="*.java" | grep -v "constructor\|param"
Phase 5: Format (Optional)
mvn spotless:check
mvn spotless:apply
./gradlew spotlessCheck
./gradlew spotlessApply
Phase 6: Diff Review
git diff --stat
git diff
Diff Checklist
Verification Report Template
VERIFICATION REPORT
===================
Build: [PASS/FAIL]
Static: [PASS/FAIL] (spotbugs/pmd/checkstyle findings: N)
Tests: [PASS/FAIL] (X/Y passed, Z% line coverage)
Security: [PASS/FAIL] (CVE critical: N, high: N)
Format: [PASS/SKIP]
Diff: [X files changed, +Y/-Z lines]
Overall: [READY / NOT READY]
Issues to Fix:
1. ...
2. ...
Quick Verification (Development)
풀 파이프라인이 무거울 때, 빠른 피드백 루프:
mvn -T 4 test
mvn -T 4 test spotbugs:check
./gradlew test spotbugsMain
대규모 변경이나 PR 전에는 반드시 전체 파이프라인 실행.
Cross-References
| Topic | Skill |
|---|
| Test 작성 방법 (MockMvc, Mockito) | springboot-tdd |
| Security 구현 | springboot-security |
| JPA 테스트 (DataJpaTest, Testcontainers) | jpa-patterns |
| Core Spring Boot 패턴 | springboot-patterns |
| 병합 전 다축 코드 리뷰 (correctness/security/perf) | code-review |
References