개발 스타일 가이드

편집기/IDE 스타일링 표준화

로컬로 파일을 저장하기 전에 특정 스타일링 표준을 자동으로 적용하기 위해 EditorConfig를 사용합니다. 일부 편집기 및 IDE는 .editorconfig 설정을 기본적으로 자동으로 존중합니다.

당신의 편집기나 IDE가 .editorconfig를 자동으로 지원하지 않는다면, 플러그인이 존재하는지 조사해보는 것을 권장합니다. 예를 들어, vim용 플러그인이 있습니다.

푸시 전 정적 분석 - Lefthook

Lefthook은 Git 후크 관리자로, 커밋이나 푸시 전에 사용자 정의 로직을 실행할 수 있게 합니다. GitLab은 Lefthook 구성인 lefthook.yml을 제공하지만, 이를 설치해야 합니다.

lefthook.yml은 확인되지만, Lefthook이 설치되기 전까지는 무시됩니다.

Overcommit 제거

우리는 Lefthook 이전에 Overcommit을 사용했었기 때문에, 먼저 overcommit --uninstall로 제거할 수 있습니다.

Lefthook 설치

  1. 다양한 방법으로 lefthook을 설치할 수 있습니다. 예를 들어, 글로벌하게 설치하는 것이 아니고(GitLab 프로젝트에서만 사용하고 싶은 경우), Ruby gem을 통해 설치하려면 다음과 같이 합니다:

    bundle install
    
  2. Lefthook으로 관리되는 Git 후크를 설치합니다:

    # 전역으로 설치한 경우
    lefthook install
    # Ruby gem을 통해 설치한 경우
    bundle exec lefthook install
    
  3. Lefthook의 pre-push Git 후크를 실행하여 Lefthook이 작동하는지 테스트합니다:

    # 전역으로 설치한 경우
    lefthook run pre-push
    # Ruby gem을 통해 설치한 경우
    bundle exec lefthook run pre-push
    

이렇게 하면 Lefthook 버전과 실행 가능한 명령어 디렉터리을 반환해야 합니다.

Lefthook 구성

Lefthook은 다음을 통해 구성됩니다:

자동으로 파일 수정하는 Lefthook

우리는 자동 수정 기능을 가진 모든 린터를 실행시키기 위한 사용자 정의 lefthook 타겟을 가지고 있지만, 당신의 브랜치에서 변경된 파일에 대해서만 실행됩니다.

# 전역으로 설치한 경우
lefthook run auto-fix
# Ruby gem을 통해 설치한 경우
bundle exec lefthook run auto-fix

Lefthook 임시로 비활성화

Lefthook을 임시로 비활성화하려면, LEFTHOOK 환경 변수를 0으로 설정할 수 있습니다. 예를 들어:

LEFTHOOK=0 git push ...

Lefthook 후크 매뉴얼 실행

pre-push Git 후크를 실행하려면 다음과 같이 합니다:

bundle exec lefthook run pre-push

더 많은 정보는 Lefthook 문서를 참조하세요.

태그별 Lefthook 체크 건너뛰기

푸시할 때 태그에 기반하여 어떤 체크를 건너뛰려면, LEFTHOOK_EXCLUDE 환경 변수를 설정할 수 있습니다. 예를 들어:

LEFTHOOK_EXCLUDE=frontend,documentation git push ...

대안으로, 다음과 같은 구조를 가진 lefthook-local.yml을 만들 수 있습니다:

pre-push:
  exclude_tags:
    - frontend
    - documentation

더 많은 정보는 Lefthook 문서 구성 섹션를 참조하세요.

특정 Lefthook 체크 건너뛰거나 활성화

푸시할 때 이름에 따라 체크를 건너뛰거나 활성화하려면, 해당 후크에 대한 lefthook-local.yml 섹션에 skip: true 또는 skip: false를 추가할 수 있습니다. 예를 들어, locale/gitlab.pot에서 문제를 감지하기 위해 gettext 체크를 활성화하려면 다음과 같이 합니다:

pre-push:
  commands:
    gettext:
      skip: false

더 많은 정보는 Lefthook 문서 건너뛰기 명령어 섹션을 참조하세요.

데이터베이스 마이그레이션

전용 데이터베이스 마이그레이션 스타일 가이드를 참조하세요. … (텍스트가 길어 생략)