웹 프론트엔드 개발을 하면서 좋았던 점 중의 하나는 빌드 도구에 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를 지원하지 않는다는 것과 내가 실무에 적용해보지 않아서 얼마나 유용할지에 대해서는 확신이 없다.
0개의 의견 from FB
0개의 의견 from SLiPP
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.