[작성 중] SonarQube 알아보기

박진형·2022년 6월 14일
0

SonarQube란?

다양한 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 수 있도록 코드 분석을 자동으로 해주는
정적 코드 분석 도구다.
중복 코드, 코딩 표준, 유닛 테스트, 코드 커버리지, 코드 복잡도, 주석, 버그 및 보안 취약점의 보고서를 제공해준다.

Install

Community 버전을 다운 받아줍니다.

Getting started guide를 따라해줍니다

맥 OS기준으로 /opt 경로에 다운 받은 zip을 풀어 sonarqube라는 폴더 이름으로 바꿔줍니다.

/opt/sonarqube/bin/macosx-universal-64로 이동해서 다음 명령어를 실행해줍니다.

  • chmod +x sonar.sh
    • 실행 sonar.sh를 실행가능한 파일로 만듭니다.
  • ./sonar.sh console
    • 실행합니다.

자바 18에서는 동작하지 않습니다. 기본 JDK를 17로 변경하도록 해야돼요!

http://127.0.0.1:9000/로 이동해 SonarQube 실행이 정상적으로 완료되었는지 확인합니다.

Use

웹 접속이 성공적이라면 로그인해줍니다.
초기 ID/Password는 admin/admin이고 로그인 후 비밀번호를 설정해줍니다.

프로젝트 생성

GitHub, GitLab, Bitbucket, Azure DevOps 다양하게 연동이 가능한 듯합니다.

저는 일단 Manually를 선택하겠습니다.

프로젝트 정보를 입력해줍니다.

Locally를 선택해주겠습니다.

Generate를 눌러 Token을 생성하겠습니다. 나중에 토큰을 이용해 프로젝트에서 소나큐브 서버로 접속을 할겁니다.
생성된 토큰은 복사해서 보관해두고 Continue를 눌러줍니다.


저는 Gradle을 사용할거니까 Gradle을 눌러 적용법을 확인하겠습니다.

plugins 부분을 복사해 로컬 프로젝트의 build.gradle에 추가해줍니다.

command + ,를 눌러 Preference창을 키고 plugins에서 Sonarlint를 설치해줍니다.

설치가 완료되었다면 Tools -> Sonarlint에서 +를 눌러 설정을 추가해줍니다.

SonarQube 선택, Connection Name, URL 입력

그리고 아까 복사해두었던 토큰을 입력해줍니다.

Sonarqube서버와 토큰이 문제가 없다면 다음과 같이 커넥션이 성공적으로 생성되었다는 문구가 보이게 됩니다.

그리고 터미널에서 프로젝트 경로로 이동해 아래의 ./gradlew sonarqube ~ 명령어를 복사해 실행시켜줍니다.

문제가 없이 성공적으로 분석이 완료되었다면 빌드 성공문구와 함께 소나큐브 로컬 웹 서버에서 분석결과를 볼 수 있습니다.

뭐가 뭔지 모르겠어!

각 항목들이 뭔지는 SonarQube Docs를 확인하자
https://sonarqubekr.atlassian.net/wiki/spaces/SON/pages/426921
https://docs.sonarqube.org/latest/user-guide/concepts/

0개의 버그, 0개의 취약점, 0개의 보안 핫스팟으로 분석 됐다.

Debt은 모든 유지 관리 문제/코드 냄새를 수정하는 데 필요한 예상 시간이다.
내 프로젝트는 3개의 코드 스멜이 있고 이것을 전부 수정하는데 대략 22분 걸릴 것으로 예상하는 것이다.

38개의 Unit Test가 있고 커버리지가 73.1% 라고 하고, 중복은 없다고 한다.

Issues 메뉴로 들어가면 조금 더 자세히 분석할 수 있다.
내 코드의 어디가 문제이고, 어떻게 하면 개선할 수 있는지 방법을 제시해준다.

임의로 내 코드에 나쁜 코드를 작성해서 분석해보면 다음과 같이 무엇이 문제고 어떻게 수정할지 제시해준다.

0개의 댓글