test: Verify pre-commit hook formatting check
This commit is contained in:
115
CODE_STYLE_SETUP.md
Normal file
115
CODE_STYLE_SETUP.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Code Style 설정 가이드
|
||||
|
||||
이 문서는 프로젝트에서 Google Java Style을 자동으로 적용하기 위한 설정 가이드입니다.
|
||||
|
||||
## 자동 포맷팅 구성
|
||||
|
||||
### 1. 커밋 시점 자동 체크 (Git Pre-commit Hook)
|
||||
|
||||
커밋 전에 자동으로 코드 스타일을 체크하고, 문제가 있으면 커밋을 막습니다.
|
||||
|
||||
**설정 완료:** `.git/hooks/pre-commit` 파일이 자동으로 실행됩니다.
|
||||
|
||||
**동작 방식:**
|
||||
- 커밋 시도 시 `./gradlew spotlessCheck` 자동 실행
|
||||
- 포맷팅 오류가 있으면 커밋 차단 및 안내 메시지 출력
|
||||
- 포맷팅이 올바르면 커밋 허용
|
||||
|
||||
**포맷팅 오류 발생 시:**
|
||||
```bash
|
||||
# 자동 포맷팅 적용
|
||||
./gradlew spotlessApply
|
||||
|
||||
# 변경사항 추가 후 다시 커밋
|
||||
git add .
|
||||
git commit
|
||||
```
|
||||
|
||||
### 2. IntelliJ IDEA 저장 시점 자동 포맷팅
|
||||
|
||||
#### 방법 1: Code Style 설정 임포트 (권장)
|
||||
|
||||
1. **IntelliJ IDEA 열기**
|
||||
2. **Settings/Preferences** (Mac: `⌘,` / Windows: `Ctrl+Alt+S`)
|
||||
3. **Editor > Code Style > Java**
|
||||
4. **⚙️ (톱니바퀴)** 클릭 > **Import Scheme > IntelliJ IDEA code style XML**
|
||||
5. 프로젝트 루트의 `intellij-java-google-style.xml` 파일 선택
|
||||
6. **OK** 클릭
|
||||
|
||||
#### 방법 2: 저장 시 자동 포맷팅 활성화
|
||||
|
||||
**Option A: Actions on Save 설정**
|
||||
|
||||
1. **Settings/Preferences** > **Tools > Actions on Save**
|
||||
2. 다음 옵션들을 활성화:
|
||||
- ✅ **Reformat code**
|
||||
- ✅ **Optimize imports**
|
||||
- ✅ **Rearrange code** (선택사항)
|
||||
3. **Changed lines** 또는 **Whole file** 선택
|
||||
4. **OK** 클릭
|
||||
|
||||
**Option B: Save Actions Plugin 사용 (더 많은 옵션)**
|
||||
|
||||
1. **Settings/Preferences** > **Plugins**
|
||||
2. **Marketplace**에서 "Save Actions" 검색 및 설치
|
||||
3. **Settings/Preferences** > **Other Settings > Save Actions**
|
||||
4. 다음 옵션 활성화:
|
||||
- ✅ **Activate save actions on save**
|
||||
- ✅ **Reformat file**
|
||||
- ✅ **Optimize imports**
|
||||
- ✅ **Rearrange fields and methods** (선택사항)
|
||||
|
||||
### 3. Gradle Spotless Plugin 수동 실행
|
||||
|
||||
#### 코드 포맷팅 체크
|
||||
```bash
|
||||
# 포맷팅 문제 확인만 (수정하지 않음)
|
||||
./gradlew spotlessCheck
|
||||
```
|
||||
|
||||
#### 코드 자동 포맷팅
|
||||
```bash
|
||||
# 모든 Java 파일 자동 포맷팅 적용
|
||||
./gradlew spotlessApply
|
||||
```
|
||||
|
||||
#### 빌드 시 자동 체크
|
||||
```bash
|
||||
# 빌드 전에 자동으로 spotlessCheck 실행됨
|
||||
./gradlew build
|
||||
```
|
||||
|
||||
## 코드 스타일 규칙
|
||||
|
||||
프로젝트는 **Google Java Style Guide** 기반으로 다음 규칙을 따릅니다:
|
||||
|
||||
- **Indentation**: 2 spaces (탭 아님)
|
||||
- **Line Length**: 100 characters
|
||||
- **Line Endings**: LF (Unix-style)
|
||||
- **Charset**: UTF-8
|
||||
- **Import Order**: Static imports → 빈 줄 → Regular imports
|
||||
- **Braces**: 모든 if, for, while, do 문에 중괄호 필수
|
||||
|
||||
## 문제 해결
|
||||
|
||||
### Pre-commit hook이 실행되지 않는 경우
|
||||
```bash
|
||||
# 실행 권한 확인 및 부여
|
||||
chmod +x .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
### Spotless 플러그인이 동작하지 않는 경우
|
||||
```bash
|
||||
# Gradle 의존성 다시 다운로드
|
||||
./gradlew clean build --refresh-dependencies
|
||||
```
|
||||
|
||||
### IntelliJ 포맷팅이 다르게 적용되는 경우
|
||||
1. `intellij-java-google-style.xml` 다시 임포트
|
||||
2. **File > Invalidate Caches** > **Invalidate and Restart**
|
||||
|
||||
## 추가 정보
|
||||
|
||||
- **Google Java Style Guide**: https://google.github.io/styleguide/javaguide.html
|
||||
- **Spotless Plugin**: https://github.com/diffplug/spotless
|
||||
- **IntelliJ Code Style**: https://www.jetbrains.com/help/idea/code-style.html
|
||||
Reference in New Issue
Block a user