프로젝트를 진행하면서 혼자 코드를 작성하는 것이 아니라 협업을 하다 보니 코드 품질이 떨어지는 현상이 발생하였습니다. 이를 해결하기 위해 프로젝트에 CheckStyle을 반영하는 과정을 공유하고자 합니다.
Intellij에 Checkstyle반영
처음에는 각자의 IDE에 checkstyle 파일을 다운받아 개발 시 적용될 수 있도록 설정하였습니다. 몇몇 설정들은 상의하에 수정하여 가독성을 향상시켰습니다.
하지만 프로젝트가 진행될수록 간헐적으로 자동정렬 단축키를 누르지 못한 파일들이 생겨나고 카멜표기법 등 일관되지 않는 코드들이 커밋되어가고 있었습니다. 이런 문제들이 종종 발생하여 다른 방법을 찾아보게 되었습니다.
Git Pre commit에 Checkstyle 적용
찾아보니 Git에서는 Pre Commit이라는 기능을 이용하여 깃에 커밋을 하기 전 사전작업을 할 수 있는 기능이 있었습니다. 많은 개발자분들이 Pre Commit을 사용하여 Checkstyle 또는 테스트 코드 검증 등 다양하게 사용하고 있었습니다.
이 기능을 현재 프로젝트에 반영하게 되면 지금 겪고 있는 모든 문제점들을 해결 할 수 있었기 때문에 반영하기로 하였습니다.
Pre Commit 반영방법
우선 Pre Commit을 하려면 결국 Shell script를 짜야 합니다.
그래서 첫 고민은 IDE에서 반영한 Checkstyle.xml을 사용할 수 있지 않을까?🤔 일일이 체크하는 스크립트를 짜는건 너무 비효율적이니 해당 xml파일을 읽어서 Gradle로 처리할 수 있는 플러그인을 찾아보자 였습니다.
그래서 찾아보니 CheckStyle이란 플러그인이 존재했고 이를 반영하였습니다.
apply plugin: 'checkstyle'
플러그인을 찾았으니 이젠 해당 Checkstyle.xml을 읽어서 처리하도록 하였지만 역시나 실패했습니다. 실패의 원인은 기존에 플러그인에서 사용하고 있는 xml과 IDE에서 사용하는 xml 설정방법이 너무 달랐습니다. 그래서 Checkstyle의 가이드를 기준으로 xml을 수정 후 약간의 삽질을 통해서 설정을 하였습니다.
반영도중 황당했던 이슈는 분명 checkstyle에서 warning이 발생했는데도 빌드가 성공하는 것이었습니다. checkstyle 가이드에서는 severity 디폴트 값이 warning으로 되어있어 error 가 아닌이상 report에만 작성 후 빌드는 성공하는 것이었습니다. 그래서 이를 error로 변경하여 하나라도 체크스타일에 위반되는 경우에는 빌드 실패할 수 있도록 변경하였습니다.
해당 설정파일은 아래 경로에서 확인 하실 수 있습니다.
https://github.com/f-lab-edu/careers/blob/develop/config/checkstyle/checkstyle.xml
'프로젝트 > Careers' 카테고리의 다른 글
CI/CD 왜 필요한가? (0) | 2021.08.05 |
---|---|
Session Storage 선택과정 (0) | 2021.07.29 |
Jenkins를 통한 CI/CD 도입 (0) | 2021.07.07 |
대규모 서버들의 세션 처리방법 (0) | 2021.04.29 |
대규모 트래픽을 고려한 서버 확장 방법 (0) | 2021.04.06 |
댓글