코틀린 코드의 품질검사(2) 코드 정적 분석 플러그인-Sonar

안상철·2022년 8월 9일
0

이모저모개발

목록 보기
2/8
post-thumbnail

Eclipse의 SonarLint 플러그인은 인텔리제이에서도 사용할 수 있습니다.
100% 완벽한 코드를 제안할 순 없지만, 커뮤니티 버전으로 가볍게 정적 분석하기 좋습니다.

1. SonarLint

1. 설치는 인텔리제이 플러그인에 Sonar를 검색합니다.

2. IDE를 재시작 하면 인텔리제이 상단 Analyze 메뉴에 Analyze with sonar.. 와 같은 하위 메뉴가 생성됩니다.

3. 해당 메뉴를 그대로 실행하면 우리가 사용하지 않는 내장 클래스 파일?도 모두 검사 할 때가 있는데

  • 3-1) 인텔리제이 세팅 → SonatLint를 검색해 설정에 들어갑니다.
  • 3-2) File Exclusions에서 제외 할 파일을 입력 해 줄 수도 있습니다.

Sonar를 실행하면 하단 Report 탭에 결과를 보여줍니다. 하지만 우리는 이 결과를 더 예쁘게 출력할 수 있습니다. SonarQube를 활용 해 봅시다.

SonarQube

소나큐브는 소나린트와 다르게 젠킨스처럼 웹UI로 코드 품질 검사 리포트를 출력 해 줍니다.
인텔리제이처럼 커뮤니티, 개발자용, 기업용 등으로 나누어져 있는데 예시는 커뮤니티 버전입니다.
참고로 리포트 PDF출력은 기업용만 가능하다고 합니다.

1. 소나 큐브 다운로드

sonarQube

커뮤니티 버전을 다운받고 압축된 파일을 마음에 드는 곳에 풀어줍니다.

압축을 푼 경로에서 bin 폴더에 들어가서 → 해당 운영체제에 맞는 폴더에 들어가서 → StartSonar 배치파일을 실행해주면 됩니다.

2. Java JDK SE 11 버전 설치

oracle

오라클 홈페이지에 들어가서 java 11버전의 jdk를 설치해줍니다.

설치가 되었으면 jdk의 환경변수를 잡아주어야 하는데

1. 이때 무조건 JAVA_HOME이라는 변수를 생성해주어야 합니다! (정적 분석 실행기가 JAVA_HOME의 변수를 사용해서 경로를 찾고 있어서입니다.)
2. 그리고 자바 8버전에서는 배치파일이 실행되지 않습니다.

3. 소나 큐브 실행

이때 소나큐브는 로컬호스트 기준으로 default 9000번 포트를 사용하기 때문에, 해당 포트를 사용하고 있다면 그 포트를 사용하는 프로세스를 kill하고 실행해야 합니다.(netstat 명령어 같은 것으로 확인)

배치 파일을 실행시켰을 때 에러없이 정상이라면 대충 이런 모양으로 로딩이 시작됩니다.

StartSonar.bat을 실행시키고 Process is up, SonarQube is up이라는 문구를 확인하면 정상적으로 소나 큐브가 실행 된 것입니다.

소나큐브는 웹 형태로 동작한다고 했습니다 → localhost:9000 주소로 접근하면 됩니다.

기본 로그인 아이디는 admin / admin입니다 → 이후 비밀번호를 변경하라고 하는데 필수로 변경 해 줍니다.

저는 root로 했습니다.

4. 프로젝트 생성

소나 큐브에서 프로젝트를 생성하는데, 이때 Local 환경에서 테스트를 할 것이기 때문에 Manually를 선택해서 프로젝트를 생성합니다.

여기서 프로젝트의 이름과 프로젝트 키를 임의로 지어줍니다.


그 다음엔 어떤 레포지토리에 있는 소스 코드를 분석할 것이냐는 물음인데, 소스 코드가 Local에 있으므로 Locally를 선택해줍니다.

그 다음에는 프로젝트를 분석하기 위한 token을 발급해주는데, 처음이라면 token의 이름을 적당히 지어서 생성해줍니다.

이때 발급된 토큰의 주소는 꼭 필요하기 때문에 어딘가에 꼭 메모를 해둡시다..
만약 기존에 토큰을 발급 했다면 Use existing token을 선택해서 토큰 주소를 입력하고 다음 단계로 넘어갑니다.

5. 쉘 스크립트 실행

4번의 프로젝트 생성까지 마쳤다면 ./gradlew 명령어로 실행할 수 있는 쉘 스크립트가 제공됩니다.

해당 쉘 스크립트를 gitbash 혹은 인텔리제이 터미널에서, 위치를 루트 프로젝트로 두고 실행 해 봅니다.

그럼 이렇게 9000번 로컬 포트로 새로운 화면이 나타나게 되는데, 쉘 스크립트를 실행 한 위치의 프로젝트 파일에 대한 리포트 입니다.

프로젝트 내 코드 품질을 대략적으로 알려줍니다. 종합 rating은 A등급을 받았네요.

저는 1개의 버그와 42개의 수정사항이 발견됐습니다.

하지만 상단에 Passed가 붙은 걸 보니 코드 품질 검사에 통과했습니다. 정말 엉망진창인 프로젝트는 Fail이 나타날 수 도 있다고 합니다.

code smell를 클릭해 각각의 파일을 열어보면 “이 코드는 무엇이 문제인지” 알려줍니다. 위 예시 사진은 짤려서 안보이지만 에러 메세지가 중복되어서 한 개의 json파일에 다 정리하라는 안내문이 있었습니다.

참조: https://narup.tistory.com/181

profile
웹 개발자(FE / BE) anna입니다.

0개의 댓글