인텔리제이 자바 프로젝트 코딩 컨벤션 적용하기

jjunhwan.kim·2023년 2월 13일
0

개요

  • Coding conventions are a set of guidelines for a specific programming language that recommend programming style, practices, and methods for each aspect of a program written in that language (출처: 위키피디아)
  • 코딩 컨벤션은 특정 프로그래밍 언어에서 프로그래밍 스타일에 대한 가이드라인 또는 규칙을 말합니다.
  • 가독성이 좋고 일관된 코드 스타일을 유지하기 위해 코딩 컨벤션을 정하고 이를 지키는 것이 중요합니다.
  • 이 포스트에서는 인텔리제이 IDE 에서 자바 코딩 컨벤션을 설정하여 코딩 컨벤션을 준수할 수 있는 환경을 구축하는 방법을 설명합니다.

코딩 컨벤션 선정하기

  • 자바 코딩 컨벤션을 구글링 해보면 주로 구글 코딩 컨벤션과 네이버 코딩 컨벤션이 나옵니다.
  • 이 포스트에서는 네이버 코딩 컨벤션인 "캠퍼스 핵데이 Java 코딩 컨벤션"을 적용해보겠습니다.
  • 네이버 코딩 컨벤션은 링크에서 확인할 수 있습니다.

네이버 코딩 컨벤션

  • 네이버 코딩 컨벤션 문서에서 평소에 쓰던 규칙과 달랐던 내용을 몇가지 살펴보겠습니다.
  • 새줄 문자는 LF
    • 보통 윈도우 환경에서는 새줄 문자는 CRLF가 적용되는데, 리눅스나 맥 환경에서 사용하는 LF로 통일합니다.
    • Git을 쓴다면 .gitattributes 파일 안에 정책을 선언해서 지정된 새줄 문자로 강제 변환하거나 예외가 될 확장자를 지정하는게 좋을 것 같습니다.
  • 들여쓰기 (Indentation)에서 하드탭 사용
    • 인텔리제이 기본 설정에서는 들여쓰기로 4개의 스페이스를 사용하지만 네이버 코딩 컨벤션에서는 하드탭을 사용합니다.
  • 최대 줄 너비는 120 입니다.
  • 중괄호는 K&R 스타일을 사용합니다. 줄의 끝에서 시작 중괄호를 열고 새줄을 열고 중괄호를 닫는 스타일입니다.
  • 이 외에도 여러 가지 규칙들이 있는데 네이버 코딩 컨벤션 문서를 한 번 읽어보시는 것을 추천합니다. 생각보다 문서가 길지 않아서 읽어볼 만 합니다.

인텔리제이에서 코딩 컨벤션 적용하기

  1. 먼저 네이버 코딩 컨벤션 깃허브에서 rule-config 안의 naver-intellij-formatter.xml를 다운받습니다.

  2. Windows에서는 File > Setting 메뉴로 이동합니다. (Alt + Shift + S) Mac OS에서는 IntelliJ IDEA > Setting 메뉴로 이동합니다. (Command + ,)

  3. Editor > Code Style > Java 메뉴로 이동합니다.
    Scheme 항목의 오른쪽에 있는 톱니바퀴 아이콘을 클릭하고 Import Scheme > IntelliJ IDEA Code Style XML을 선택합니다.

  4. 다운로드 받은 naver-intellij-formatter.xml 파일을 선택합니다.

  5. 아래와 같은 창이 뜨는데 To 항목에 이름을 설정하고 OK를 선택합니다. 이 이름은 IntelliJ에서 전역적으로 사용되는 이름입니다.

  6. Scheme에 6에서 설정한 이름을 선택하고 OK를 선택하여 설정을 확정합니다.

  7. 이제 에디터 창에서 Ctrl + Alt + L(MacOS 에서는 Command + Option + L)을 누르면 지정한 코드 스타일에 맞게 자동으로 코드가 수정됩니다.

  8. 파일의 마지막에 새줄 문자가 없는 경우 자동으로 추가하기 위해 File > Settings > Editor > General 메뉴에서(MacOS 에서는 IntelliJ IDEA > Setting > Editor > General) Ensure every saved file ends with a line break 옵션을 체크합니다.

  9. IntellJ 에서 코드 저장시 자동으로 Formatter가 동작하도록 설정해보겠습니다. File > Setting (MacOS 에서는 IntelliJ IDEA > Setting) 메뉴로 이동합니다.

  10. Tools > Actions on Save 메뉴에서 아래와 같이 Reformat codeOptimize imports를 체크하고 OK를 선택하여 설정을 적용합니다.

Gradle에서 Checkstyle 플러그인 설정

  1. 먼저 네이버 코딩 컨벤션 깃허브에서 rule-config 안의 naver-checkstyle-rules.xml 파일과 naver-checkstyle-suppressions.xml 파일을 다운받아 적용하려는 프로젝트의 루트 디렉토리에 복사합니다.

  2. build.gradle 파일에 아래와 같이 Java plugin의 속성으로 인코딩을 지정합니다.

plugins {
    id 'java'
}

...

compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'

...
  1. build.gradle 파일에 아래와 같이 Checkstyle 플러그인을 설정합니다.
plugins {
    id 'checkstyle'
}

checkstyle {
    maxWarnings = 0 // 규칙이 어긋나는 코드가 하나라도 있을 경우 빌드 fail을 내고 싶다면 이 선언을 추가한다.
    configFile = file("${rootDir}/naver-checkstyle-rules.xml")
    configProperties = ["suppressionFile" : "${rootDir}/naver-checkstyle-suppressions.xml"]
    toolVersion ="8.24"  // checkstyle 버전 8.24 이상 선언
}
  1. checkstyleMain, checkstyleTest Task 실행시 아래와 같이 콘솔에 결과를 알려줍니다.

0개의 댓글