Eclipse의 SonarLint 플러그인은 인텔리제이에서도 사용할 수 있습니다.
100% 완벽한 코드를 제안할 순 없지만, 커뮤니티 버전으로 가볍게 정적 분석하기 좋습니다.
Sonar를 실행하면 하단 Report 탭에 결과를 보여줍니다. 하지만 우리는 이 결과를 더 예쁘게 출력할 수 있습니다. SonarQube를 활용 해 봅시다.
소나큐브는 소나린트와 다르게 젠킨스처럼 웹UI로 코드 품질 검사 리포트를 출력 해 줍니다.
인텔리제이처럼 커뮤니티, 개발자용, 기업용 등으로 나누어져 있는데 예시는 커뮤니티 버전입니다.
참고로 리포트 PDF출력은 기업용만 가능하다고 합니다.
커뮤니티 버전을 다운받고 압축된 파일을 마음에 드는 곳에 풀어줍니다.
압축을 푼 경로에서 bin 폴더에 들어가서 → 해당 운영체제에 맞는 폴더에 들어가서 → StartSonar 배치파일을 실행해주면 됩니다.
오라클 홈페이지에 들어가서 java 11버전의 jdk를 설치해줍니다.
설치가 되었으면 jdk의 환경변수를 잡아주어야 하는데
이때 소나큐브는 로컬호스트 기준으로 default 9000번 포트를 사용하기 때문에, 해당 포트를 사용하고 있다면 그 포트를 사용하는 프로세스를 kill하고 실행해야 합니다.(netstat 명령어 같은 것으로 확인)
배치 파일을 실행시켰을 때 에러없이 정상이라면 대충 이런 모양으로 로딩이 시작됩니다.
StartSonar.bat을 실행시키고 Process is up, SonarQube is up이라는 문구를 확인하면 정상적으로 소나 큐브가 실행 된 것입니다.
소나큐브는 웹 형태로 동작한다고 했습니다 → localhost:9000 주소로 접근하면 됩니다.
기본 로그인 아이디는 admin / admin입니다 → 이후 비밀번호를 변경하라고 하는데 필수로 변경 해 줍니다.
저는 root로 했습니다.
소나 큐브에서 프로젝트를 생성하는데, 이때 Local 환경에서 테스트를 할 것이기 때문에 Manually를 선택해서 프로젝트를 생성합니다.
여기서 프로젝트의 이름과 프로젝트 키를 임의로 지어줍니다.
그 다음엔 어떤 레포지토리에 있는 소스 코드를 분석할 것이냐는 물음인데, 소스 코드가 Local에 있으므로 Locally를 선택해줍니다.
그 다음에는 프로젝트를 분석하기 위한 token을 발급해주는데, 처음이라면 token의 이름을 적당히 지어서 생성해줍니다.
이때 발급된 토큰의 주소는 꼭 필요하기 때문에 어딘가에 꼭 메모를 해둡시다..
만약 기존에 토큰을 발급 했다면 Use existing token을 선택해서 토큰 주소를 입력하고 다음 단계로 넘어갑니다.
4번의 프로젝트 생성까지 마쳤다면 ./gradlew 명령어로 실행할 수 있는 쉘 스크립트가 제공됩니다.
해당 쉘 스크립트를 gitbash 혹은 인텔리제이 터미널에서, 위치를 루트 프로젝트로 두고 실행 해 봅니다.
그럼 이렇게 9000번 로컬 포트로 새로운 화면이 나타나게 되는데, 쉘 스크립트를 실행 한 위치의 프로젝트 파일에 대한 리포트 입니다.
프로젝트 내 코드 품질을 대략적으로 알려줍니다. 종합 rating은 A등급을 받았네요.
저는 1개의 버그와 42개의 수정사항이 발견됐습니다.
하지만 상단에 Passed가 붙은 걸 보니 코드 품질 검사에 통과했습니다. 정말 엉망진창인 프로젝트는 Fail이 나타날 수 도 있다고 합니다.
code smell를 클릭해 각각의 파일을 열어보면 “이 코드는 무엇이 문제인지” 알려줍니다. 위 예시 사진은 짤려서 안보이지만 에러 메세지가 중복되어서 한 개의 json파일에 다 정리하라는 안내문이 있었습니다.