We will find a way, we always have.

-interstellar

Programming Language/자바

[클린코드] SonarLint를 사용해야 하는 10가지 이유

Redddy 2024. 2. 27. 21:58

누군가 내가 작성한 코드를 수시로 분석하여 지적하는 플러그인이 있다면 사용해보겠는가?
 
SonarLint가 바로 그런 플러그인이다!
 

🎈사용계기

소나린트를 처음 알게 된건 구구의 추천 덕분이었다.
 

소나린트 사용계기

 
 
클린코드를 작성하고 싶다는 욕구에 바로 설치하고 사용해보았다. 하지만 하루 정도 써보고 이건 아니다 싶어 제거를 하였다..
 
사용할 때 느꼈던 불편한 점들
 

  • 커밋시 경고창이 한번 뜬다.
    • 님 SonarLint가 제안한 내용 안지켰음. 수정하고 커밋하셈이라는 내용의 메시지가 한번 뜬다.
    • ctrl + k 로 git add 하고, ctrl + enter 로 git commit 하는 나에게 이 경고창이 걸리적 거렸다.
  • 냄새나는 코드를 아주 눈에 걸리적 거리는 밑줄로 그어준다.
    • 수정이 필요한 부분에 빨강, 주황색으로 울퉁불퉁한 밑줄을 그어 이게 컴파일 에러인지 아니면 소나린트의 요구 사항인지 구분이 안갈때가 있다.
    • 일단 돌아가는 쓰레기를 만들어야 하는 단계에선 매우 걸리적 거린다.
  • System.out.println() 압수
    • 현재 미션에서 System.out.println()은 필수불가결이라고 생각한다.
    • 하지만 우리의 소나린트씨는 print 메서드 대신 log를 사용하라고 추천한다.

 

삭제엔딩

 
 
이런 불편한 점들을 느껴 삭제를 하였다. 삭제 소식을 전하니 왜 삭제했는지 궁금해하였고 코치룸에 와서 설명해달라고 하였다. 
 
나는 구구에게 소나린트의 단점을 구구절절 설명하기 위해 소나린트를 다시 설치하여 단점을 찾기 시작하였다. 결론부터 말하자면 이때 다시 깔고 안지우고 사용하고 있다🤫🤭
 

SonarLint의 장점

소나린트의 장점은 현재 나의 코드의 문제점이 무엇인지 짚어주고, 어떤 식으로 해결할 수 있으며, 관련한 내용의 자료까지 제공한다.
 
이제 소나린트를 사용해야 하는 10가지 이유를 설명해보려고 한다.
 

1. 논리를 근거로 내 코드를 반박한다.

소나린트의 큰 장점이 현재 나의 코드의 문제점이 무엇인지 알려주고 끝나는 것이 아니라, 적절한 예시를 통해 해결 방안을 알려주고 추가적인 학습을 위해 도큐먼트와 아티클까지 제공한다.
 

이렇게 떠먹여준다

 
 

2. 생각지도 못했던 부분을 집어주기도 한다.

평소에는 그냥 지나쳤던 부분들을 집어주기도 한다.
예를 들어 클래스의 이름을 Players 로 정하고 Players 클래스의 필드에는 List<Player> 가 있다면 이 필드의 변수명은 뭐라고 짓겠는가?
많은 경우를 클래스의 이름을 따와 players로 하곤했다. 하지만 이때 발생하는 문제점들이 있다.
 

역시 소나린트가 떠먹여준다.

 
getter로 필드를 꺼내 사용하는 경우 결국 어떤 것이 반환되는지 헷갈린다.
 

3. if 문까지도 감지한다.

첩첩 산중인 if와 여러 조건문들을 지적해준다. 
 

 
 

4. 규칙에도 우선순위를 매긴다.

유지보수성(maintainability)에 얼마나 큰 영향을 주게 되는지 우선순위를 매겨 알려준다.
 

 

5. 인텔리제이와 서로 짝짜꿍 하여 경고한다.

alt + 6 키를 눌러 현재 클래스의 문제점을 확인할 때, 인텔리제이가 판단하는 경고뿐만 아니라 소나린트가 제공하는 경고들까지도 보여준다. 
 
F2키를 눌러서 예외가 발생하는 코드로 바로 이동할 때도 소나린트가 잡고 있는 경고도 감지한다.

으윽

 
그리고 테스트 코드 성공시 초록빛을 띄어주는 것처럼 소나린트의 룰을 충족하면 초록빛을 띄어줘 마음의 안정감을 준다.
 

 
 

6. 무료다.

무료 플러그인이다. 사용해봐도 손해볼 일 없지 않은가?
 

7. 리팩터링시 길잡이가 되어준다.

구현할 기능들을 다 구현한 다음에 어디서부터 리팩터링을 할 지 고민이 될때 이 소나린트의 경고를 하나씩 제거해보자라는 목표로 리팩터링을 시도해봐도 좋다.
 

8. 질좋은 피드백을 받을 수 있다.

리뷰어가 코드리뷰를 해야할 때 정말 사소한 오타 줄바꿈, 띄어쓰기에 대한 피드백을 남길 시간에 다른 객체지향적인 피드백을 남겨주는게 서로에게 이득이다.
 
이런 컨벤션들을 바로 소나린트가 캐치해기 때문에 PR 올리기전에 린트 한번씩 돌리고 요청하자👍
 

9. TODO 주석 제거하라고 강조한다.

일단 빠르게 동작하는 쓰레기를 만들기 위해 일단 지르고 TODO 덕지덕지 붙이는 스타일로 코딩을 하는데 실수로 완료한 TODO 주석을 제거하지 못하고 PR올린적이 있다. 
 
우리의 친절한 소나린트씨는 TODO 주석 제거하라고 밑줄 씨게 그어준다.
 

우웩

 
 

10. 단점보다 장점이 많다.

 
제일 처음에 느꼈던 단점보다 장점이 더욱 크다.
 
그러므로 앞으로도 소나린트를 사용하는 것이 좋을 듯하다.
 
 


츄라이 츄라이
 
젯브레인 플러그인 페이지

SonarLint - IntelliJ IDEs Plugin | Marketplace

SonarLint by Sonar is a free IDE extension to find and fix coding issues in real-time, flagging issues as you code, just like a spell-checker. More than a linter, it...

plugins.jetbrains.com