Compare commits
20 커밋
feature/pr
...
main
| 작성자 | SHA1 | 날짜 | |
|---|---|---|---|
| f96e082ae2 | |||
| 72d77899ab | |||
| 990e69c7db | |||
| 49a954a1dd | |||
| 3761545d09 | |||
| a5d70b0553 | |||
| 8535d5e765 | |||
| ac09c23d3a | |||
| 983de6a71a | |||
| f558e43810 | |||
| b39b0df6b9 | |||
| f62751229e | |||
| 4c837b0ce4 | |||
| a5f58970a9 | |||
| 30f0b28460 | |||
| c0e33e11d7 | |||
| e92b0e15ef | |||
| 57b11774eb | |||
| 3e918baf74 | |||
| acf18221ae |
@ -44,7 +44,21 @@
|
|||||||
- `@Builder` 허용
|
- `@Builder` 허용
|
||||||
- `@Data` 사용 금지 (명시적으로 필요한 어노테이션만)
|
- `@Data` 사용 금지 (명시적으로 필요한 어노테이션만)
|
||||||
- `@AllArgsConstructor` 단독 사용 금지 (`@Builder`와 함께 사용)
|
- `@AllArgsConstructor` 단독 사용 금지 (`@Builder`와 함께 사용)
|
||||||
- `@Slf4j` 로거 사용
|
|
||||||
|
## 로깅
|
||||||
|
- `@Slf4j` (Lombok) 로거 사용
|
||||||
|
- SLF4J `{}` 플레이스홀더에 printf 포맷 사용 금지 (`{:.1f}`, `{:d}`, `{%s}` 등)
|
||||||
|
- 숫자 포맷이 필요하면 `String.format()`으로 변환 후 전달
|
||||||
|
```java
|
||||||
|
// 잘못됨
|
||||||
|
log.info("처리율: {:.1f}%", rate);
|
||||||
|
// 올바름
|
||||||
|
log.info("처리율: {}%", String.format("%.1f", rate));
|
||||||
|
```
|
||||||
|
- 예외 로깅 시 예외 객체는 마지막 인자로 전달 (플레이스홀더 불필요)
|
||||||
|
```java
|
||||||
|
log.error("처리 실패: {}", id, exception);
|
||||||
|
```
|
||||||
|
|
||||||
## 예외 처리
|
## 예외 처리
|
||||||
- 비즈니스 예외는 커스텀 Exception 클래스 정의
|
- 비즈니스 예외는 커스텀 Exception 클래스 정의
|
||||||
|
|||||||
@ -20,13 +20,14 @@ fi
|
|||||||
# Conventional Commits 정규식
|
# Conventional Commits 정규식
|
||||||
# type(scope): subject
|
# type(scope): subject
|
||||||
# - type: feat|fix|docs|style|refactor|test|chore|ci|perf (필수)
|
# - type: feat|fix|docs|style|refactor|test|chore|ci|perf (필수)
|
||||||
# - scope: 영문, 숫자, 한글, 점, 밑줄, 하이픈 허용 (선택)
|
# - scope: 괄호 제외 모든 문자 허용 — 한/영/숫자/특수문자 (선택)
|
||||||
# - subject: 1~72자, 한/영 혼용 허용 (필수)
|
# - subject: 1자 이상 (길이는 바이트 기반 별도 검증)
|
||||||
PATTERN='^(feat|fix|docs|style|refactor|test|chore|ci|perf)(\([a-zA-Z0-9가-힣._-]+\))?: .{1,72}$'
|
PATTERN='^(feat|fix|docs|style|refactor|test|chore|ci|perf)(\([^)]+\))?: .+$'
|
||||||
|
MAX_SUBJECT_BYTES=200 # UTF-8 한글(3byte) 허용: 72문자 ≈ 최대 216byte
|
||||||
|
|
||||||
FIRST_LINE=$(head -1 "$COMMIT_MSG_FILE")
|
FIRST_LINE=$(head -1 "$COMMIT_MSG_FILE")
|
||||||
|
|
||||||
if ! [[ "$FIRST_LINE" =~ $PATTERN ]]; then
|
if ! echo "$FIRST_LINE" | grep -qE "$PATTERN"; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "╔══════════════════════════════════════════════════════════════╗"
|
echo "╔══════════════════════════════════════════════════════════════╗"
|
||||||
echo "║ 커밋 메시지가 Conventional Commits 형식에 맞지 않습니다 ║"
|
echo "║ 커밋 메시지가 Conventional Commits 형식에 맞지 않습니다 ║"
|
||||||
@ -58,3 +59,13 @@ if ! [[ "$FIRST_LINE" =~ $PATTERN ]]; then
|
|||||||
echo ""
|
echo ""
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 길이 검증 (바이트 기반 — UTF-8 한글 허용)
|
||||||
|
MSG_LEN=$(echo -n "$FIRST_LINE" | wc -c | tr -d ' ')
|
||||||
|
if [ "$MSG_LEN" -gt "$MAX_SUBJECT_BYTES" ]; then
|
||||||
|
echo ""
|
||||||
|
echo " ✗ 커밋 메시지가 너무 깁니다 (${MSG_LEN}바이트, 최대 ${MAX_SUBJECT_BYTES})"
|
||||||
|
echo " 현재 메시지: $FIRST_LINE"
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|||||||
불러오는 중...
Reference in New Issue
Block a user