git-lint를 활용해 코드 품질 확인 후 commit하기

2017-11-23 18:42

웹 프론트엔드 개발을 하면서 좋았던 점 중의 하나는 빌드 도구에 lint를 추가해 빌드하는 시점에 실시간으로 체크하는 부분이었다.

물론 자바에서도 pmd와 checkstyle과 같은 품질 관리 도구를 빌드 도구에 추가하면 충분히 가능하다. 그래도 좀 더 쉬운 방법이 있지 않을까 찾다가 git-lint라는 도구를 사용하면 좀 더 낫지 않을까라는 생각으로 공유해 본다.

git-lint는 자바 뿐만 이나라 상당히 많은 언어를 지원하고 있다.

설치 과정은 의외로 간단한다. pip로 git-lint를 설치한다.

$ pip install git-lint
$ pip install --upgrade git-lint
$ pip uninstall git-lint

자바의 경우 checkstyle과 pmd를 사용해 품질 관리를 한다면 두 도구를 각각 설치한다.

brew install checkstyle

brew install pmd

위와 같이 관련 도구를 설치한 후 git-lint config.yaml 파일을 다운로드해 프로젝트에 맞게 설정한다.

위 파일을 프로젝트 아래에 .gitlint.yaml 이름으로 저장한 후 checkstyle, pmd 설정을 다음과 같이 했다.

checkstyle:
  command: checkstyle
  extensions:
  - .java
  requirements:
  - java
  arguments:
  - "-c"
  - "{DEFAULT_CONFIGS}/checkstyle.xml"
  filter: "{filename}:(?P<line>{lines}):((?P<column>\\d+):)? (?P<message>.+)"
  installation: "sudo apt-get install checkstyle or go to http://checkstyle.sourceforge.net/cmdline.html"

pmd:
  command: pmd
  extensions:
  - .java
  requirements:
  - java
  arguments:
  - "pmd"
  - "-format"
  - "text"
  - "-rulesets"
  - "rulesets/java/android.xml,rulesets/java/basic.xml,rulesets/java/braces.xml,rulesets/java/clone.xml,rulesets/java/codesize.xml,rulesets/java/empty.xml,rulesets/java/finalizers.xml,rulesets/java/imports.xml,rulesets/java/j2ee.xml,rulesets/java/logging-jakarta-commons.xml,rulesets/java/strictexception.xml,rulesets/java/strings.xml,rulesets/java/sunsecure.xml,rulesets/java/typeresolution.xml,rulesets/java/unnecessary.xml,rulesets/java/unusedcode.xml"
  - "-d"
  filter: "{filename}:(?P<line>{lines}):\\s+(?P<message>.+)"
  installation: "Go to http://pmd.sourceforge.net/pmd-5.1.1/installing.html"

checkstyle과 pmd에 대한 기본 설정을 git-lint config.yaml에서 제공하기 있기 때문에 참고해 수정하면 된다.

설정을 모두 끝내고 소스 코드를 수정한 후 "git lint" 명령을 실행하면 된다. 기본이 변경된 소스 코드에 한해서 lint를 적용한다.

매번 "git lint" 명령을 실행하는 것이 불편하거나 잊어 버린다면 git의 precommit hook에 추가하는 것도 좋은 방법이다.

한 가지 아쉬운 점이라면 아직까지 windows를 지원하지 않는다는 것과 내가 실무에 적용해보지 않아서 얼마나 유용할지에 대해서는 확신이 없다.

1개의 의견 from FB

0개의 의견 from SLiPP

의견 추가하기

연관태그

← 목록으로