SonarQube 시작하기

Changjin·2023년 3월 30일
2

Dev-Ops

목록 보기
1/2
post-thumbnail

Maven 기준

Environment

  • SonarQube 9.8
  • Java 11
  • Maven 3.8.6, 3.9.1
  • Windows 10&11

1. Java 11 & Maven 설치

Java 11 (JDK 11) 설치

Java Archive Downloads - Java SE 11 | Oracle 대한민국

Maven 설치

Maven – Download Apache Maven

⚠️주의사항⚠️

  • 📢 SonarQube 9.9버전 부터는 JDK 17이상의 버전을 필요로 한다!
    자신의 환경에 맞게 사용하도록 한다.
  • 💡 JDK 11의 경우 26년 9월까지만 지원한다고 한다. 스프링부트 3.0버전부터도 그렇고 다양한 소프트웨어들이 JDK 17로 넘어가고 있는 추세인 것 같다.

2. 환경 변수 설정

  • 시스템 변수에 JAVA_HOME, MAVEN_HOME 경로 지정
    • JDK의 경우 jdk폴더 경로 입력
    • Maven의 경우 Maven\bin 폴더 경로 입력
  • Path에 %JAVA_HOME% %MAVEN_HOME% 각각 추가
  • 시스템 재부팅
  • cmd창에서 java -version, mvn -version 을 입력했을 때 버전 정보가 출력되면 완료.

3. SonarQube 다운로드 및 실행

SonarQube 다운로드

Download | SonarQube

SonarQube 실행

  • 다운받은 SonarQube파일의 압축을 관리하기 편한 위치에 푼다.

  • SonarQube 폴더를 열고 .\bin\windows-x86-64 으로 이동한다.

  • StartSonar.bat을 실행한다.

    • “SonarQube is operational”이 출력되면 정상적으로 실행된것이다.
  • 브라우저 실행 후 http://localhost:9000/ 또는 http://127.0.0.1:9000/ 을 입력하여 소나큐브에 접속한다.

    • 로그인 창이 뜨면 확실하게 구동이 된 것을 확인할 수 있다.
    • 로그인 초기 ID/PW는 admin

🔧 제가 겪은 오류

  • StartSonar.bat을 실행 시키자 마자 종료됨
    • 처음엔 SonarQube 9.9버전을 설치하여 JDK 버전이 맞지않아 발생한 오류
    • SonarQube 9.8버전으로 변경 후 해결!
  • StartSonar.bat을 실행시킨 후 중간지점에서 Exception 발생
    • SonarQube를 재실행하는 과정에서 발생
    • 컴퓨터 재부팅 후 문제 해결!
    • 아마 이전에 실행한 SonarQube가 정상적으로 종료되지 않은 것으로 보인다.
      • (추가) 예상대로 SonarQube가 정상적으로 종료되지 않아서 나타나는 현상이었다.
      • 작업관리자에서 JDK 관련 프로세스만 종료해도 해결된다.

4. 프로젝트 연결

  • 로그인을 하게되면 첫 화면으로 프로젝트 대시보드가 나오며 첫 실행 시라면 빈 화면일 것이다.

    • 사진은 수행한 프로젝트를 테스트용으로 올려놓아 프로젝트의 상태를 확인할 수 있다.
  • 빈 화면이면 화면 중앙의 Create Project를 누르면 다음과 같은 화면이 나온다.

    • 로컬에 있는 프로젝트를 등록할 것이나 Manually로 선택한다.
  • 마찬가지로 프로젝트가 로컬에 있으므로 Locally를 선택한다.

    • 프로젝트 환경에 따라서 Jenkins, GitHub Action, GitLab CI와 같은 CI도구와 파이프라인을 구축해서 사용할 수 있다.
  • 다음으론 프로젝트 토큰을 생성한다. 토큰 이름과 만료일을 설정해준 뒤 Generate를 눌러 토큰을 생성한다.

    • ⚠️생성된 토큰은 꼭 어딘가에 적어놓도록 한다
  • 토큰을 확인하고 넘어가면 빌드 환경을 선택하면 프로젝트 연결을 위해 입력해야할 명령어를 보여준다.

  • 프로젝트의 POM.xml 파일이 있는 위치에서 Shift+우클릭으로 PowerShell 창을 열고 다음 명령어를 입력한다.

    mvn clean verify sonar:sonar "-Dsonar.projectKey=프로젝트명" "-Dsonar.host.url=http://localhost:9000" "-Dsonar.login=토큰"
    • 실행 전 프로젝트 빌드를 꼭 실행하자!
    • SonarQube에서 준 코드를 그대로 사용하지 말고 코드를 한 줄로 만들고 각 속성을 “”로 묶어주자!
  • 다음과 같이 BUILD SUCCESS가 나오면 드디어 끝이다!

    • SonarQube에서 Projects탭을 눌러 대시보드에 프로젝트가 뜨는지 확인해보자!

(추가) Code Coverage 표시 (JaCoCo 의존성 추가)

  • SonarQube의 경우 Java 프로젝트 환경에선 가장 많이 사용하는 커버리지 분석 도구인 JaCoCo (Java Code Coverage)를 사용한다.
  • 대시보드에서 Coverage가 0%로 표시된다면 최근버전의 JaCoCo 의존성을 추가해주면 된다.
    <dependency>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco.version}</version>
    </dependency>
  • 해당 프로젝트엔 테스트 케이스가 포함되지 않아 0%로 뜨지만, Duplications가 표시되는 것으로 확인할 수 있다.

Notion

https://ttanggin.notion.site/SonarQube-097533487dc646c4b3ac53c5eb0397c9

profile
🦕 궁금한게 많은 주니어 개발자

0개의 댓글