메뉴 닫기

SonarQube 설치


SonarQube 서비스 구축

사용 서버 : Rocky  8 OS Server 1대

난이도 : ★

내용 요약 : SonarQube 설치

참고 링크 :

https://brunch.co.kr/@joypinkgom/207

https://blog.naver.com/sonmh79/223087106904

목차 :

01. SonarQube?

02. SonarQube 설치

03. 구축 확인 


01. SonarQube?

SonarQube는 소프트웨어 개발 프로젝트의 코드 품질과 보안을 자동으로 분석하는 오픈소스 플랫폼입니다.

SonarQube는 코드에서 발생할 수 있는 버그, 코드 스멜, 보안 취약성 등을 탐지하고, 개발자가 이를 수정할 수 있도록 보고서를 제공합니다.

지속적 통합/지속적 배포(CI/CD) 파이프라인과 쉽게 통합할 수 있으며, 다양한 프로그래밍 언어를 지원합니다.

 

▶ 주요 기능

코드 분석 :  SonarQube는 정적 코드 분석을 통해 코드의 품질과 보안을 평가합니다. 코드 스멜, 복잡도, 중복, 테스트 커버리지, 버그, 보안 문제 등을 분석하여 개발자가 개선할 수 있도록 지표를 제공합니다.

멀티 언어 지원 :  Java, JavaScript, C#, Python, PHP, Ruby 등 25개 이상의 프로그래밍 언어를 지원하여 다양한 프로젝트에 적용할 수 있습니다.

지속적 통합(CI) 지원 :  Jenkins, GitLab CI/CD, Azure DevOps 등과 같은 CI 도구와 통합하여 빌드 단계에서 자동으로 코드 분석을 수행할 수 있습니다.

품질 게이트 :  SonarQube는 프로젝트의 품질 기준을 정의할 수 있는 품질 게이트 기능을 제공합니다. 품질 게이트는 빌드 프로세스에서 코드가 품질 기준을 충족하지 못할 경우 실패하게 할 수 있습니다.

보안 분석 :  OWASP Top 10 등과 같은 보안 기준에 따라 코드의 보안 취약성을 분석하고, 이를 해결할 수 있는 방법을 제안합니다.

확장성 :  플러그인 시스템을 통해 기능을 확장할 수 있으며, 다양한 언어, 규칙, 보고서 형식을 지원하는 플러그인을 사용할 수 있습니다.

 

추가적인 특징

  1.  사용자 정의 규칙:

    • SonarQube는 기본 제공 규칙 외에도 사용자 정의 규칙을 설정할 수 있습니다. 팀의 특정 코딩 표준이나 규칙을 적용하여 분석할 수 있습니다.
  2.  대시보드와 보고서:

    • 직관적인 대시보드를 통해 프로젝트의 코드 품질을 시각적으로 확인할 수 있습니다. 보고서 기능을 통해 코드 품질을 문서화하여 팀원들과 공유할 수 있습니다.
  3.  코드 커버리지 통합:

    • 코드 커버리지 도구(예: JaCoCo, Cobertura)와 통합하여 테스트 커버리지 정보를 SonarQube에 포함시킬 수 있습니다. 이를 통해 코드의 테스트 품질을 함께 평가할 수 있습니다.
  4.  멀티 프로젝트 지원:

    • 여러 프로젝트를 하나의 SonarQube 인스턴스에서 관리할 수 있으며, 프로젝트 간의 코드 품질 및 보안 상태를 비교할 수 있습니다.
  5.  커스터마이징 가능한 대시보드:

    • 대시보드를 사용자가 원하는 대로 구성할 수 있습니다. 필요한 지표나 정보를 대시보드에 맞춤 설정하여 편리하게 확인할 수 있습니다.
  6.  개발자 피드백 제공:

    • 코드 검토 과정에서 실시간으로 피드백을 제공하며, 코드 커밋 및 풀 리퀘스트와 통합되어 개발자에게 문제를 즉시 알려줍니다.
  7. 다양한 플러그인 지원:

    • 다양한 언어 및 도구를 지원하는 플러그인을 통해 SonarQube의 기능을 확장할 수 있습니다.

장점

  1. 정적 코드 분석:

    • SonarQube는 정적 분석을 통해 코드의 잠재적인 문제를 사전에 발견할 수 있습니다. 이를 통해 코드 리뷰 과정에서 놓치기 쉬운 문제를 예방할 수 있습니다.
  2. CI/CD 통합:

    • Jenkins, GitLab, Azure DevOps 등과의 통합을 통해 자동화된 빌드와 배포 파이프라인에 코드 분석을 통합할 수 있습니다.
  3. 언어 다변성:

    • Java, C#, JavaScript, Python 등 25개 이상의 프로그래밍 언어를 지원하여 다양한 프로젝트에 적용할 수 있습니다.
  4. 사용자 정의 가능성:

    • 사용자 정의 규칙, 품질 게이트 설정 등으로 팀의 코딩 표준에 맞출 수 있습니다.
  5. 보안 취약성 분석:

    • OWASP Top 10 등 보안 기준에 따라 코드의 보안 취약성을 분석하여 개발자에게 개선 방안을 제시합니다.
  6. 커뮤니티 및 지원:

    • 활발한 오픈소스 커뮤니티와 공식 문서, 포럼을 통해 지원을 받을 수 있습니다.

단점

  1. 리소스 요구:

    • 대규모 프로젝트나 다수의 프로젝트를 분석하는 경우, SonarQube는 상당한 시스템 자원을 요구할 수 있습니다. 성능이 중요한 환경에서는 서버 사양을 충분히 고려해야 합니다.
  2. 설정 복잡성:

    • 초기 설치 및 설정이 복잡할 수 있으며, 특히 대규모 환경에서 여러 프로젝트를 관리할 경우 설정이 복잡해질 수 있습니다.
  3. 플러그인 의존성:

    • 특정 기능이나 언어 지원을 위해 플러그인에 의존할 수 있으며, 플러그인 버전이 업데이트되지 않거나 호환성 문제가 발생할 수 있습니다.
  4. 유료 기능:

    • 기본적인 기능은 무료로 제공되지만, 더 고급 기능이나 추가적인 지원이 필요한 경우 유료 에디션(Developer, Enterprise, Data Center)으로 업그레이드해야 합니다.
  5. 성능 문제:

    • 대규모 코드베이스를 분석할 때 성능 문제가 발생할 수 있으며, 이로 인해 분석 시간이 길어질 수 있습니다.

활용 방법

  1. CI/CD 통합:

    • SonarQube를 CI/CD 파이프라인에 통합하여 코드가 커밋될 때마다 자동으로 분석을 수행하고, 품질 기준에 맞지 않는 경우 빌드를 실패하게 할 수 있습니다.
  2. 품질 게이트 설정:

    • 프로젝트에 맞는 품질 게이트를 설정하여 코드 품질 기준을 정의하고, 기준을 충족하지 못할 경우 코드 변경을 방지할 수 있습니다.
  3. 리포트 및 대시보드 활용:

    • 대시보드와 보고서 기능을 통해 팀원들에게 코드 품질 정보를 제공하고, 개발 과정에서 지속적인 품질 관리를 수행할 수 있습니다.
  4. 교육 및 코드 리뷰:

    • 코드 분석 결과를 활용하여 팀원들에게 코드 품질에 대한 교육을 실시하고, 코드 리뷰 시 유용한 참고자료로 사용할 수 있습니다.

SonarQube는 코드 품질을 관리하고 향상시키기 위한 강력한 도구로, 다양한 기능과 유연한 설정 옵션을 제공하여 개발팀의 효율성을 높일 수 있습니다.


02. SonarQube 설치

01. 필수 패키지 설치 및 유저 생성

# dnf update -y 
# dnf install java-17-openjdk-devel -y 

# java -version 
openjdk version "17.0.12" 2024-07-16 LTS 
OpenJDK Runtime Environment (Red_Hat-17.0.12.0.7-1) (build 17.0.12+7-LTS) 
OpenJDK 64-Bit Server VM (Red_Hat-17.0.12.0.7-1) (build 17.0.12+7-LTS, mixed mode, sharing) 

# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip 
# unzip sonarqube-9.9.0.65466.zip -d /usr/local/src/ 
# mv /usr/local/src/sonarqube-9.9.0.65466 /usr/local/src/sonarqube 

# useradd -r -s /bin/false sonarqube 
# chown -R sonarqube:sonarqube /usr/local/src/sonarqube 

02. 부팅 시 자동 실행 설정

# vi /etc/systemd/system/sonarqube.service

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/src/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/usr/local/src/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl start sonarqube
# systemctl enable sonarqube

명령어를 활용하여 확인 시, 정상적으로 서비스가 실행되어 있으며 포트 또한 정상적으로 올라온 것을 볼 수 있습니다.


03. 구축 확인

서비스 구축 후에는  브라우저에 http://서버  IP(혹은 도메인 주소):9000 으로 서비스 홈페이지에 접근할 수 있습니다.

서비스 접근 시, SonarQube Service Starting…  이라는 문구가 지나간 후, 이와 같은 화면을 확인할 수 있습니다.

첫 로그인 시 기본 관리자 계정은 admin, 비밀번호는 admin입니다. 로그인 후 비밀번호를 변경하라는 메시지가 표시됩니다.

패스워드를 변경 해준 후에 재 접속 합니다.

서비스 접근 시 초기 대시 보드 화면 입니다.

System 탭에서 서버 내 환경에 대한 확인도 가능합니다.

 

이로써 SonarQube 설치 및 구축에 대한 글을 마치겠습니다.

감사합니다.

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x