📜 제목으로 보기

인텔리제이 세팅

buildType & assertj라이브러리

build Type: gradle -> intellij

  • gradle검색후 build and run intellij로 바꿔주기
    • 빌드 속도 및 TestName표기 image-20220213002843152
  • new projects에서 세팅 안됨

build.gradle 라이브러리에 assertj 추가 및 refresh

  • build.gradle의 dependency에 assertj 라이브러리 넣어주고 refresh 하기

      // Assertions
      testImplementation 'org.assertj:assertj-core:3.22.0'
      testImplementation 'org.junit.jupiter:junit-jupiter-params:5.4.2' 
      // lombok
      compileOnly 'org.projectlombok:lombok'
      annotationProcessor 'org.projectlombok:lombok'
    
  • Ctrl+Shift+O 또는 우측상단에 떠있을 코끼리버튼을 클릭해줘야 반영이 된다. image-20220304164322067

    • 단축키는 keymap에서 덮어써줘야 작동됨. image-20220304164518884

gradle 정상 test

image-20211206150651962

  1. shift 2번 or f1 -> gradle task선택
    1. gradle clean 수행
    2. gradle test 수행
[Test 설정] live template에 assert문 추가해놓기
  • @Test 대신 @ParameterizedTest for 여러case 를 쓰기 위해서 아래 의존성을 추가해야한다.
      // Assertions
      testImplementation 'org.assertj:assertj-core:3.22.0'
      testImplementation 'org.junit.jupiter:junit-jupiter-params:5.4.2' 
    
  • as+all
      assertAll(
          () -> assertThat(actual).isEqualTo(expected$END$),
          () -> assertThat(actual).hasSize()
      );
    
  • as+that
      Assertions.assertThat(actaul).isEqualTo(expected$END$);
    
  • as+notthr
      Assertions.assertDoesNotThrow(() -> $WHEN$)
    
  • as+thr
      Assertions.assertThatThrownBy(() -> $WHEN$)
          .isInstanceOf($EXCEPTION$.class)
          .hasMessage("$MESSAGE$");
    
  • given : option에 있는 reformat ~ style 체크할 것
      //given
    
      //when
      $END$
    
      //then
    
  • methodSource: option에 있는 reformat ~ style 체크할 것
      return Stream.of(
              Arguments.of($END$),
              Arguments.of()
          );
    
  • dynamicTest:
      @DisplayName("큰테스트이름")
      @TestFactory
      Stream<DynamicTest> collectionsOfDynamicTest() {
          return Stream.of(
                  dynamicTest("테스트케이스1", () -> {
                      // given
                        
    
                      // when
                      $END$
                        
    
                      // then
                      assertThat(actual).isEqualTo(expected);
                  }),
    
                  dynamicTest("테스트케이스2", () -> {
                      // given
    
    
                      // when
                        
    
                      // then
                      assertThat(actual).isEqualTo(expected);
                  })
          );
      }
    

    루틴 설정(1회성으로 보임)

ends with a line break

  • Editor > General > on Save 탭 > ends with a line break에서 해당 박스를 체크한다. image-20220213035939709

Code style(우테코)

  1. 우테코javastyleXML, naverConventionXML 다운로드
    • 프로젝트폴더 최상단에 넣어준다.
  2. Editor > code style > Scheme > 톱니바퀴 > Import Scheme > Intellij IDEA XML
    • intellij-java-wooteco-style.xml 선택해주기 image-20220213013403561

SQL warning 워닝 제거

  1. Warning 검출 끄기
    • DAO 등의 sql 작성문으로 가서 ctrl + . > Uninject language or reference 를 선택한다. 20220528145715
  2. 프로젝트 SQL dialect 설정하기 for 자동완성 by 해당SQL로 인식후 문법 자동완성
    1. Settings - Languages & Frameworks - SQL Dialects or shift 2번(F1) > sql dialects 선택
    2. Global 말고 Project SQL dialect를 테스트용 H2로 선택 20220528145934
  3. schema.sql에서 H2를 DataSource로 지정하여 session에서 테이블들 생성 for String sql속 table 및 칼럼 인식후 자동완성
    1. 의존성에 h2추가 확인하기
       runtimeOnly 'com.h2database:h2'
      
    2. application.yml에서 h2 인메모리(mem) url(url: jbdc:h2:mem:maindb)으로 지정 / username 등 설정 확인 후 `펼쳐놓기

    3. scheme.sql파일에서 configure data source 클릭 or shift 2번(F1)에서 data source검색하여 Data source... 선택 20220528152446 20220528151142

      • Data source from url에 application.yml의 url을 복붙해서 설정도 가능하다고 한다. 20220528154630
    4. h2를 추가하고, 기본 remote로 지정된 option을 내장형(In-memory)로 변경하고, username(sa), database(maindb) 등 입력해준다. 20220528151815

    5. schema.sql로 와서 실행버튼 > 생성한 data source DB설정 > schema.sql 선택후 실행시켜 data source에 session으로 메모리 테이블 실제 생성시켜준다. 20220528152829 20220528152916 20220528152743 20220528152950

    6. 이제 dao등에서 table을 인식하여 칼럼까지 자동완성할 수 있다. 20220528153100

    7. 연결이 끊기면 schema.sql -> ctrl+shift+F10(run) -> target data source 설정해서 연결해주면 된다.

시작시 최근 프로젝트 reopen 해제

  • settings > appearance & behavior > system settings > [ ] reopen projects on startup 체크해제 20220616111634

1회성 설정

New Project setup

  • File > New Projects Setup > Settings for New projects>

    image-20220315202847089

Save Actions (개행+imort최적화)
  • Plugins > market > save actions를 검색해서 설치한다.

    import최적화(삭제) + 리포맷팅 자동 image-20220213040420120

file Encoding
  • 3가지 전부 UTF-8확인 image-20220315203339807
tab (4space)
  • **Editor > Code style > java > tabs and indents > **
    • [ ] Use tab character 체크해제
    • Continuation indent 8->4
  • OS마다 tab의 크기가 다르므로 space를 사용하게 tab사용 체크해제하는 것 image-20220315204350637
File and Code Templates > method body template
  • 베루스 추천

  • settings > File and Code Templates > code 탭에서

    • implemented + new Overriden Method Body부분에
      ##if ( $RETURN_TYPE != "void" )return $DEFAULT_RETURN_VALUE;#end
            
      throw new UnsupportedOperationException("${SIMPLE_CLASS_NAME}#${METHOD_NAME} not implemented.");
        
      throw new UnsupportedOperationException("${SIMPLE_CLASS_NAME}#${METHOD_NAME} not write.");
    
      ## 오버라이딩은 그냥 쓴다. 부모의  상속 받을 때인데, super()  메서드 그대로 호출시켜줘야함.
      ##throw new UnsupportedOperationException("${SIMPLE_CLASS_NAME}#${METHOD_NAME} not override.");
        
    
    Auto Import
  • Editor > general > auto import 검색 후

    • Always -> Ask로 변경(복붙후 library 선택)
    • Add unambiguous import on the fly 체크

    • Optimize imports on the fly (for current project) 체크

      image-20220315203045513

parameter name hints
  • Editor > general > code completoin 검색 후 > Parameter Info 탭 > [x] show parameter name hints on completion 체크 image-20220316005833191
usages 표기
  • preferences - editor - inlay hints - java - code vision
    • usages 2가지체크 image-20220315205737289
go to test
  • keymap > go to test 검색 후 단축키 지정 : ctrl+shift+ T -> 나머지 remove
    • 테스트 없으면 생성, 있으면 이동 시켜주게 된다.
lombok 라이브러리 이후 @anno적용 안될 때
  • lombok 라이브러리를 추가한 후
    • Settings > Build > Compiler > Annotation Processors 에서 [x] Enable annotation processing 을 체크해야 롬복을 사용할 수 있다.(안될 경우)

final 및 private

method의 파라미터 앞에 final
  • Editor > Code style > java > Code generation > [x] make ~ final 체크박스 2개 image-20220220224105047
변수 추출시 final (최초 1회)
  • 추출할 때, ctrl + alt + v를 **2번 눌러서, **
    • Declare final체크 image-20220221123901716
(private) 상수를 private로 추출(최초 1회)
  • 추출할 때, ctrl + alt + c를 **2번 눌러서, **
    • public -> private로 옮겨놓기
[TEST 설정] Test Method template 수정하기
  1. Editor > file and code templates 검색 > Code탭 > JUnit Test Method에 아래 코드 추가

    • @org.junit.jupiter.api.DisplayName("")
      • 2번 한글메서드로 작성하기 위해 주석처리로 추가됨.

    image-20220324012209534

  2. Editor > file and code templates 검색 > Code탭 > JUnit Test Class에서 class위에 아래 코드 추가

    • @SuppressWarnings("NonAsciiCharacters")
    • @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) 20220727164055 019f554f-65d4-42db-bf2f-f64c77af33aa 20220727163803
파라미터 힌트 항상 보이게 하기
  • settings > Parameter hint검색 > Editor > Inlay Hints > Java > Parameter hints >
    • Paramters with names ~ 체크 image-20220321213836753
keymap 추출하고 사용하기
  1. F1(search everywhere)에서 export settings를 검색한다 image-20220322222836715

  2. Select None을 한번 누르고 keymaps(schemes)만 선택 한 뒤, 저장경로에서 settings.zip에 날짜기입까지 해주고 OK로 export한다.

    • 사용시에는 반대로 F1 > import settings를 검색한 뒤, zip을 선택만 해주면 된다.

    • 까보면, plugins까지 다 포함되어있다. image-20220322223313994 image-20220322223335312 image-20220322223443114

    image-20220322223037924 image-20220322223043641 image-20220322223154449 image-20220322223223604

Font
  • editor > font > jetbrain Mono -> fira code + ligature 허용
한글 워닝 제거
  • Editor > inspections > non-ascii검색 > 체크해제

image-20220315210658024

페어 컨벤션(링크)

  • 구글 스프레트 시트 링크로 매번 업데이트 된 것 활용하기

.editorConfig for windows에서도 LF로 저장

  • 다양한 에디터들에게 공통적인 코드컨벤션을 적용시킨다.
    • 적용시 windows에서도 LF로 저장되게 한다.
  • 루트에서 NEW > EditorConfig 검색후 생성한다. image-20220213040047734

  • 아래 내용을 복붙한다.

      # top-most EditorConfig file
      root = true
        
      [*]
      # [encoding-utf8]
      charset = utf-8
        
      # [newline-lf]
      end_of_line = lf
        
      # [newline-eof]
      insert_final_newline = true
        
      [*.bat]
      end_of_line = crlf
        
      [*.java]
      # [indentation-tab]
      indent_style = tab
        
      # [4-spaces-tab]
      indent_size = 4
      tab_width = 4
        
      # [no-trailing-spaces]
      trim_trailing_whitespace = true
        
      [line-length-120]
      max_line_length = 120
        
    

checkstyle

  1. 일단 LF로 push하기 위한 git 전역설정이 되어있어야한다.

    • 윈도우에서는 git commit시 CRLF로 새줄을 저장하지만, 위 설정을 통해 push시에는 LF로 올라가게 한다.

      • Git은 커밋할 때 자동으로 CRLF를 LF로 변환해주고
      • windows로 clone하면 다시 LF가 CRLF가 됨
        git config --global core.autocrlf true
      
  2. 없다면 플러그인 Plugins 에서 CheckStyle-IDEA검색 후부터 설치한다.

    • CheckStyle-IDEA 설치 image-20220213021416201
    • 프로젝트 최상단에 naver-checkstyle-rules.xml를 위치시키고 image-20220213024656737
    • Tools > Checkstyle에서
      • 버전을 8.24 이상으로,
      • Scan Scope를 All sources(including tests)로 맞추고 - 테스트 한글함수를 위해서 tests 포함안해도 될 듯?
      • +를 눌러, 위에서 편집해준 naver-checkstyle-rule를 추가해준다.
      • naver-checkstyle-rule을 선택해준다. image-20220213031949271

네이버핵데이 컨벤션 및 CheckStyle 적용하기

  • 요약

    1. Settings > Editor > Code style > Java > Scheme > 톱니바퀴 > import Scheme > (ideaProject폴더에 다운받아놓은 )InteliJ ~ .xml 파일 찾아 적용
      1. cf) code style> java에서 use tab character를 풀어야 4스페이스가 된다. Tab 사용하도록 체크하자.
    2. 파일을 저장 할 때마다 포멧터 자동 적용설정 by Save Actions plugin을 활용하면 파일을 저장하는 순간 포멧터를 자동 적용할 수 있다. image-20211206150403192
      1. File > Settings ( Ctrl + Alt + S ) > Plugins 메뉴로 이동
      2. Marketplace 탭에서 ‘Save Actions’ 로 검색
      3. Save Actions' plugin의 상세 설명 화면에서 [Install]` 버튼 클릭
      4. IntelliJ를 재시작
      5. File > Settings > Other Settions > Save Actions 메뉴로 이동
      6. 아래 항목을 체크
        • Activate save actions on save
        • Optimize imoprts
        • Refomat file
    3. 플러그인 CheckStyle-IDEA 플러그인을 검색 후 설치 image-20211206150522262
      1. Tools > CheckStyle에서 Checkstyle version을 8.24 이상, Scan ScopeAll sources (including tests) 로 설정
      2. Configuration file에 다운받고 수정한 XML 파일(ideaProject폴더에 다운받아놓은 naver~checkstyle rule.xml)을 추가
      3. 하단에 checkstyle 창(단축키 직접지정 alt+shift+k)로 코드짜고 확인하기

image-20211206150606845

  • intellij용 xml파일 다운로드
  • 설치가이드
    • https://naver.github.io/hackday-conventions-java/#intellij-formatter
    • 나는 지금 플러그인 : google-java-format> android 버전을쓰고있는데.. 취소시킴
  • checkStyle적용하기

    • CheckStyle은 Java 코드를 작성 할 때 규칙(이 경우 코딩 컨벤션)들을 선언해두고 이를 어길 시 에러 또는 경고를 뿜어내어 개발자로 하여금 컨벤션을 강제로 지킬 수 있도록 도와주는 코딩 컨벤션 검사 도구다. 네이버 핵데이 Java 코딩 컨벤션을 적용할 시 다음을 제외한 나머지들에 대한 컨벤션을 검사할 수 있다.

    • 적용방법

      • Naver CheckStyle Rules XML 파일을 다운받는다. 나는 프로젝트 최상단($rootDir)에 이를 추가했다.

        • 내문서 > IdeaProjects폴더에 저장함.
      • 우선 나는 다른 규칙을 덮어쓸 생각이 없어서 여기를 참고하여 XML 파일에서 다음을 삭제했다. 이를 삭제하지 않으면 다음 단계에서 suppressionFile 변수에 파일을 할당해야한다.

        <module name="SuppressionFilter">
           <property name="file" value="${suppressionFile}"/>
           <property name="optional" value="false"/>
        </module>
        
    • ide에 적용하기

      1. File > Settings > Plugins 메뉴에서 CheckStyle-IDEA 플러그인을 검색 후 설치한다.
      2. Tools > CheckStyle에서 Checkstyle version을 8.24 이상, Scan ScopeAll sources (including tests) 로 설정한 후 Configuration file에 다운받고 수정한 XML 파일을 추가하자
      3. 이제 우리가 설정한 코딩 컨벤션을 어기는 코드를 작성하면 다음과 같이 경고 표시가 나타난다.