mystic-agit 개발 블로그

[Mac] SonarQube 보안 솔루션 적용하기 본문

Mac/Utiility

[Mac] SonarQube 보안 솔루션 적용하기

mystic-agit 2025. 8. 5. 17:09

 

목차

1. SonarQube란?

2. SonarQube 기능 및 스펙

3. SonarQube 적용 방법

4. SonarQube 검사 결과


 

1. SonarQube란?

  • 개발자가 작성한 소스 코드의 품질을 지속적으로 검사하고 관리할 수 있게 돕는 정적 코드 분석 도구
  • SonarQube는 로컬 서버 설치 방식과 SonarQube Cloud를 사용하는 방식이 있음
    • SonarQube Cloud 사용 시
      • 로컬 호스트를 사용하지 않고 SonarQube 웹 페이지 상에서 검사를 요청하고 결과를 확인할 수 있음
      • 다만, 검사하려는 프로젝트가 Github 등에 public으로 공개되어 있어야함
      • 유료 요금제 필요 (무료 체험 기간 제공)
    • SonarQube 로컬 서버 사용 시
      • 로컬 호스트 서버를 통해 검사 결과를 저장하고 보여줌
      • 내 로컬에 있는 프로젝트를 검사하기 때문에 Github과 같은 소스 코드 관리 애플리케이션에 프로젝트를 업로드 하지 않아도됨
      • 무료 버전 제공(Community Edition), 유료 요금제의 무료 체험 기간 제공

 

2. SonarQube 기능 및 스펙

  • 소스 코드 분석 시 지원되는 상세한 스펙 확인
    • 무료 또는 유료 요금제에 따라 지원되는 기능 범위가 다름
  Community Edition(무료) Developer Edition(유료, 유료 첫단계)
지원 언어 Java, JavaScript, TypeScript, C#, Python, HTML, CSS, XML, PHP, Ruby, Scala Community Edition 지원 언어 + Kotlin, C/C++, Objective-C, Swift, Go
검사 코드 양 5만 라인 내외 권장 10만 라인 내외 권장 
검사 브랜치 단일 브랜치 멀티 브랜치 및 Pull Request 분석 지원
보안 분석 일부 기본적인 탐지 OWASP Top 10 지원
CICD 지원 Jenkins, Github Actions, Azure DevOps 등 Community Edition 동일
커버리지/리포트 기본 코드 커버리지 Pull Request 별 리포트, 고급 리포트 지원
IDE 통합 IntelliJ, VS Code 등 연동 가능 Community Edition + 개발자 인증으로 PR 분석과 연동 강화
구독 형태 무료 연간 구독 (720 달러)
https://www.sonarsource.com/plans-and-pricing/sonarqube/

 

3. SonarQube 적용 방법

  • Mac OS를 기준으로 정리
  • SonarQube는 로컬 서버 설치 방식 사용

 

3.1 환경 구성

(1) Java SDK 11 이상 설치

  • SonarQube는 Java 11 이상 버전 필요
// Java 설치 여부 확인
java -version

// Java 11 설치
brew install openjdk@11

 

3.2 SonarQube 설치

(1) SonarQube 다운로드 페이지에서 Community Edition을 다운로드

  • 이메일을 통한 인증이 필요하며 인증 후 파일 다운로드 가능
  • 적절한 위치에 압축 해제한 폴더를 이동
    • ex) /Users/mysticagit/sonar-qube

 

(2) SonarQube 서버 실행

  • 로컬 서버가 될 단말에 접속 가능한 외부 단말이 있는 경우
    • 위 압축 해제한 폴더에서 /Users/mysticagit/sonar-qube/conf/sonar.properties 파일 편집
// 아래 2개 라인을 주석 해제 또는 신규 작성 후 저장
sonar.web.host=0.0.0.0
sonar.web.port=9000
  • 로컬 서버 실행
    • 위 압축 해제한 폴더에서 /Users/mysticagit/sonar-qube/bin/macosx-universal-64/ 폴더로 이동
    • 아래 명령으로 로컬 서버 실행 또는 상태 확인
// 서버 실행
./sonar.sh start

// 서버 정상 연결 상태 확인
./sonar.sh status

// 서버 재시작
./sonar.sh restart

// 서버 정지
./sonar.sh stop
  • 로컬 서버 접속 확인
    • 서버 정상 연결 상태 확인 후
      • 해당 단말의 브라우저에서 http://localhost:9000 접속 시 SonarQube 로컬 콘솔 화면 노출
      • 최초 진입 시 admin 계정의 비밀번호를 설정하게 되며 비밀번호 설정 후 관리

 

3.3 검사할 프로젝트 설정

(1) Create Project 진행

  • Create Project > local project

 

  • Create a local project
    • Project display name : 프로젝트 이름
    • Project key : 프로젝트 키 (프로젝트 구분자) (SonarQube 환경 설정에 종종 사용되니 신중하게 작성)
    • Main branch name : 검사할 메인 브랜치 (Community Edition의 경우 하나의 브랜치만 가능)

 

  • Setup project for Clean as You Code
    • use global setting 선택 > Create Project

 

  • Analysis Method
    • Locally 선택

  • Analyze your project
    • 프로젝트 접근을 위한 token 생성
      • Generate a project token > Expires in 에서 토큰 만료 기간 선택 > Generate
    • token 생성
      • ex) sqp_80bd1ab4d884b346984394a143104e078f5dd57a
      • token은 다시 확인할 수 없으니 별도의 메모 필요
    • continue 진행
    • Run analysis on your project 에서 검사할 프로젝트가 어떤 언어 사용에 가까운지 선택



  • 여기까지 진행되었다면 SonarQube 서버에 프로젝트에 대한 설정은 완료되었고,
    Sonar-Scanner를 설치해야함



(2) Sonar-Scanner 설치

  • 각 운영체제에 지원되는 다운로드 제공

 

 

  • 적절한 위치에 압축 해제
    • ex) /Users/mysticagit/sonar-scanner
  • 환경 변수에 Sonar-Scanner 경로 설정
    • /Users/mysticagit/sonar-scanner/bin
    • 아래 명령으로 환경 변수가 정상 설정되었는지 확인
sonar-scanner -v

 

(3) 검사할 프로젝트에 SonarQube properties 파일 설정

  • 검사할 프로젝트가 /Users/mysticagit/myTestProjectABC_Android 라면
    • 해당 경로에 sonar-project.properties 파일 생성 후 아래 내용을 작성
# Sonar local host server's project name
# 프로젝트 키 설정
sonar.projectKey=MyTestProjectABC

# for check project path (with sonar-project.properties)
# if use '.', check all paths below' sonar-project.properties'.
# 현재 properties 파일 이하 모든 경로에 대한 검사
sonar.sources=.

# host url (Report uploaded)
# 리포트가 업로드될 로컬 호스트 주소
sonar.host.url=http://localhost:9000

# Sonar local host project's token (MyTestProjectABC)
# 프로젝트 token
sonar.login=sqp_80bd1ab4d884b346984394a143104e078f5dd57a
  • Sonar-Scanner가 환경 변수가 정상 설정되었다면 현재 sonar-project.properties 파일이 있는 경로에서 아래 명령 수행
// 환경 변수 설정되어있는 경우
sonar-scanner

// 환경 변수 설정을 하지 않았다면
/{Sonar-Scanner 경로}/bin/sonar-scanner

 

4. SonarQube 검사 결과

  • Overview : 코드 검사 결과에 대한 종합적인 수치를 확인

 

  • Issues : 코드 검사 결과에 대한 상세한 정보를 확인, 소스 코드 파일명과 이슈 타입 및 위치를 확인할 수 있음

 

  • Code : 프로젝트 내 소스 코드를 트리구조로 보면서 소스 코드별 이슈 숫자를 확인할 수 있음

 

  • Measure : 이슈의 수나 심각성 정도를 시각화된 정보로 확인할 수 있음

 

  • Activity :  프로젝트의 검사 기록들을 확인할 수 있음



Comments