115 lines
3.3 KiB
Markdown
115 lines
3.3 KiB
Markdown
# 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 |