반응형
Greensky0026
삽질러의 대환장 공사판
Greensky0026
전체 방문자
오늘
어제
  • 분류 전체보기 (241)
    • Language (56)
      • JAVA (13)
      • Swift (38)
      • Kotlin (4)
      • Dart (0)
      • PHP (0)
      • JavaScript (1)
    • IDE & Framework (92)
      • Spring (10)
      • Android (48)
      • iOS (8)
      • NodeJS (1)
      • CodeIgniter (3)
      • Flutter (1)
      • 분류중 (18)
    • Infra (8)
    • Database (12)
    • VCS (4)
    • Debug Log (34)
      • java (7)
      • swift (3)
      • Android (9)
      • Web (7)
      • 삽질기 (7)
    • Others (19)
      • 코딩테스트 풀이 (0)
      • IT 이야기 (18)
    • 쉼터 (2)
    • 개발공부 (14)
      • Network (1)
      • 자료구조와 알고리즘 (2)
      • Code design (8)
      • ETC (1)
      • 아카이브 (1)

블로그 메뉴

    공지사항

    • 프로그래머스 코딩 테스트 관련글 비공개 처리

    인기 글

    태그

    • 공부
    • kotlin
    • 개발
    • 코딩테스트
    • reduce
    • 구축
    • level1
    • 예제
    • JSP
    • swift
    • Java
    • swfit
    • IT
    • Android
    • 프로그래머스
    • 프로그래밍
    • ios
    • map
    • 타입
    • xcode

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Greensky0026

    삽질러의 대환장 공사판

    [IntelliJ] codeStyle - naver code convention 적용하기
    IDE & Framework/Spring

    [IntelliJ] codeStyle - naver code convention 적용하기

    2023. 6. 7. 17:29
    반응형

    0. 개요

    coding convention?

    소스코드의 작성 규칙을 정의한 것입니다.

    소스코드의 일관성을 유지할 수 있고, 같은 규칙을 공유하는 팀원들이라면 빠르게 읽고 이해할 수 있어 유지보수에 도움을 줍니다.
    [네이버 핵데이 자바 코딩 컨벤션 내용 확인하기]

    [네이버 핵데이 자바 코딩 컨벤션 git repo]

     

    어떻게 적용할까?

    정적 코드 분석 도구를 사용해 적용합니다.

    이를 사용해 적용하게 되면, 규칙에 알맞지 않은 코드가 존재할 시 컴파일이 되지 않도록 설정할 수 있습니다.

     

    정적 분석 도구란?

    소스코드, 바이너리 코드를 분석해 버그 및 취약점을 찾아내는 도구입니다.

    컴파일 하지 않고 코드 자체를 분석하므로, 코딩 컨벤션의 규칙을 확인하기에 알맞습니다.

    대표적으로 Checkstyle이 있습니다.

     

    적용전 준비

    우선 naver convention xml과 formatter xml 파일을 받아 두어야 합니다. [이동]

    https://github.com/naver/hackday-conventions-java/tree/master/rule-config

    이중에서 노란색으로 표시한 세가지를 받아두시면 되겠습니다.

    1. IntelliJ IDE로 적용하기

    1.1  formatter 적용등록하기

    아래 이미지대로 순서대로 진행하면 됩니다.

    Setting - Editor - Code Style 탭으로 이동해 Scheme 옆의 톱니바퀴를 눌러 위에서 다운받았던 formatter를 원하는 이름으로 등록하시면 됩니다.

    번외로, IDE에서 코드를 저장할때마다 컨벤션을 적용되도록 할 수 있습니다.

    Setting - Tools - Actions on Save 탭에서 Reformat code를 체크하시면 됩니다.

    Optimize imports Action은 class에서 사용하지 않는 import들을 자동으로 지워주는 기능입니다.

    1-2. checkStyle 적용

    우선 Settings - Plugins로 이동해서 checkstyle을 검색해 플러그인을 다운받습니다.

    설치후에는 재시작을 해주셔야 합니다!

    재시작을 하시면 아래 이미지처럼  Settings - Tools - Checkstyle탭이 생성되어 있습니다.

    1. Scan scope를 All sources including tests로 설정해 모든 소스코드에 대해서 코딩컨벤션을 검사하도록 합니다.
    2. Treat Checkstyle errors as warnings를 체크해 컨센션을 어기면 경고나 에러를 발생시키도록 설정합니다.
    3. +버튼을 눌러 아까 다운받은 rules.xml을 찾아 discription을 입력하고 next로 넘어갑니다

    여기에 naver-checkstyle-suppressions.xml를 입력해줍니다.

     

    더 자세한 적용 메뉴얼은 [공식문서]를 참조해주시면 되겠습니다.

    1-3. 확인해보기

    플러그인을 설치하고 재시작했다면 Tool Windows에 CheckStyle이 추가되어 있습니다.

    해당 툴 윈도우로 run을 해보면 어느 부분이 컨벤션과 불일치하는지 확인할 수 있습니다.

    2. build.gradle을 통해 적용하기

    build.gradle에 적용을 함으로써, 빌드시에 컨벤션을 확인하도록 구성할 수 있습니다.

    구성방법은 간단합니다!

     

    2-1. 플러그인 추가

    plugins {
        id 'checkstyle'
    }

    2-2. checkstyle 설정 기술

    //컴파일시 UTF-8로 인코딩해 한글 테스트에서 워닝 발생되지 않도록 설정
    compileJava.options.encoding = 'UTF-8'
    compileTestJava.options.encoding = 'UTF-8'
    
    //mxl 리포트 및 html 리포트를 생성하려면 추가
    tasks.withType(Checkstyle) {
        reports {
            xml.required = true
            html.required = true
        }
    }
    
    checkstyle {
        // 규칙이 어긋나는 코드가 하나라도 있을 경우 빌드 fail을 내고 싶다면 이 선언을 추가
        maxWarnings = 0 
        //rule 및 suppressions xml파일 위치 명시
        configFile = file("config/checkstyle/naver-checkstyle-rules.xml")
        configProperties = ["suppressionFile": "config/checkstyle/naver-checkstyle-suppressions.xml"]
        // checkstyle 버전 8.24 이상 선언
        toolVersion ="8.24"  
    }

    저는 xml파일을을 root/config/checkstyle에 위치시켜서 위처럼 작성했습니다.

    꼭 동일한 경로로 입력할 필요는 없습니다!

    반응형
    저작자표시 비영리 (새창열림)

    'IDE & Framework > Spring' 카테고리의 다른 글

    Spring - MyBatis 설정하기  (0) 2023.06.05
    [단축 URL 프로젝트 URLumberjack] - 기타 규칙 정의  (0) 2023.04.28
    [단축 URL 프로젝트 URLumberjack] - 기술 스택 정의  (0) 2023.04.28
    [단축 URL 프로젝트 URLumberjack] - devOps 정의  (0) 2023.04.24
    Spring boot 서버를 Gradle로 build해 jar로 직접 배포하기  (0) 2022.06.29
      'IDE & Framework/Spring' 카테고리의 다른 글
      • Spring - MyBatis 설정하기
      • [단축 URL 프로젝트 URLumberjack] - 기타 규칙 정의
      • [단축 URL 프로젝트 URLumberjack] - 기술 스택 정의
      • [단축 URL 프로젝트 URLumberjack] - devOps 정의
      Greensky0026
      Greensky0026
      점이 모여 선이 된다. 내 삽질도 언젠간 거대한 지하 도시가 되겠지!

      티스토리툴바