Skip to content

커밋 메시지 컨벤션 & Linting · Formatter ​

커밋 메시지와 코드 스타일, 두 가지를 규칙으로 통일하고 자동화하는 방법을 모았습니다.

Conventional Commit: 커밋 메시지 규칙 ​

커밋 메시지는 코드 변경 사항을 빠르게 파악하는 핵심 단서입니다. 나중에 문제가 생겼을 때 원인을 추적하는 데도 큰 도움이 되죠. 이걸 체계적으로 하기 위해 만들어진 규칙이 Conventional Commit입니다.

형식은 다음과 같습니다.

<type>(<scope>): <subject>
  • type: 커밋의 종류
  • scope: 영향을 받는 범위
  • subject: 간단한 설명 (명령형 동사로 시작)

예를 들어 로그인 화면에 이메일 인증 기능을 추가했다면:

feat(UserProfile): Add email verification

자주 쓰는 type ​

type의미
feat새로운 기능 추가
fix버그 수정
docs문서 수정
style코드 포맷팅 (로직 변화 없음)
refactor기능 변화 없는 코드 구조 개선
test테스트 코드 추가/수정
chore빌드, 설정 등 자잘한 작업

왜 굳이 이렇게까지 규칙을 지킬까? ​

이렇게 통일된 형식으로 커밋을 쌓으면, 나중에 feat 타입 커밋만 골라 모아서 Release Note를 자동으로 생성하는 것도 가능해집니다. 사람이 일일이 변경 이력을 정리할 필요가 없어지는 것이죠.

Linting과 Formatter로 스타일 자동화하기 ​

개발자는 반복 작업을 극도로 싫어합니다. 코드 스타일 규칙을 사람이 외우고 매번 손으로 맞추는 건 비효율적이죠. 그래서 등장한 게 Linting과 Formatter입니다.

  • Linting: 코드의 스타일·문법·잠재적 오류가 규칙에 어긋나는지 자동으로 검사
  • Formatter: Linting 규칙에 맞도록 코드를 자동으로 고쳐주는 도구

Linting은 팀 전체의 코딩 스타일을 통일시켜 가독성을 높이고, 리뷰어가 스타일 대신 로직에만 집중할 수 있게 해줍니다. 설정 파일을 프로젝트 루트에 두고 Git으로 공유하면, 새 팀원이 합류해도 규칙을 구두로 설명할 필요가 없습니다.

JavaScript: ESLint + Prettier ​

적용 전:

js
const name="John",age=25;function greet(name,age){console.log('Hello, '+name)}

적용 후:

js
const name = 'John',
  age = 25;
function greet(name, age) {
  console.log('Hello, ' + name);
}

.eslintrc로 Lint 규칙을, .prettierrc로 포맷 규칙을 지정합니다. 단, 둘이 충돌할 수 있어서 eslint-config-prettier 같은 플러그인으로 충돌 규칙을 꺼줘야 합니다.

Python: Flake8 + Black + isort ​

Python은 동적 타입 언어인 데다 쓰이는 분야(서버, 데이터, ML 등)가 워낙 다양해서 Linting 도구도 여러 가지입니다.

  • Flake8: PEP 8 기반 스타일 검사 + 복잡도/논리 오류 검사 (.flake8 설정)
  • Black: PEP 8에 맞춰 코드를 자동 정렬하는 Formatter (pyproject.toml 설정)
  • isort: import 문을 표준 라이브러리 / 서드파티 / 프로젝트 내부 순으로 자동 정렬 (.isort.cfg 설정)
pip3 install flake8 black isort
flake8 src/
black src/
isort src/

정리 ​

개념한 줄 요약
Conventional Commit<type>(<scope>): <subject> 형식으로 커밋 메시지 규칙화, 자동 문서화 가능
Linting / Formatter코드 스타일을 자동 검사(Linting)하고 자동 교정(Formatter)

출처: Codyssey-B1/B2-2