npm i sonarqubesonarqube nextjsSonarQube ReactSonarQube DockerSonarQube NodeJs

SonarQube란 무엇인가?

KUKJIN LEE
KUKJIN LEE
2024년 8월 9일
196

SonarQube는 오픈 소스 코드 품질 및 보안 분석 도구로, 소프트웨어 프로젝트의 소스 코드를 지속적으로 검사하고 분석하여 코드 품질을 개선하고 보안 취약점을 식별하는 데 도움을 줍니다. 다양한 프로그래밍 언어를 지원하며, 코드의 버그, 코드 냄새, 보안 취약점 등을 자동으로 감지합니다.

 

npm i sonarqube-scanner

 

주요 기능

  1. 코드 분석 (Code Analysis): SonarQube는 정적 분석을 통해 코드의 버그, 보안 취약점, 코드 냄새, 중복 코드 등을 식별합니다.

  2. 품질 게이트 (Quality Gate): 프로젝트의 품질 기준을 설정하고, 이를 통과하지 못하는 코드는 배포되지 않도록 방지합니다.

  3. 다양한 언어 지원: Java, C#, Python, JavaScript 등 25개 이상의 프로그래밍 언어를 지원합니다.

  4. 지속적인 통합 (CI/CD) 지원: Jenkins, GitLab, Azure DevOps 등과 통합되어 코드 품질 검사를 자동화할 수 있습니다.

  5. 통합 개발 환경 (IDE) 지원: SonarLint 확장을 통해 IDE에서 직접 코드 품질 문제를 식별하고 수정할 수 있습니다.

  6. 프로젝트 대시보드: 프로젝트의 코드 품질 상태를 한눈에 볼 수 있는 대시보드를 제공합니다.

 

SonarQube 설정

1. SonarQube 서버 설치 및 실행

SonarQube 서버를 설치하고 실행합니다. Docker를 사용하는 방법을 예로 들어 설명하겠습니다.

docker run -d --name sonarqube -p 9000:9000 sonarqube

SonarQube 서버가 실행되고 나면 웹 브라우저에서 http://localhost:9000으로 접속하여 설정을 진행합니다. 초기 로그인 정보는 기본적으로 admin/admin입니다.

 

2. SonarQube 프로젝트 생성

SonarQube 웹 인터페이스에 로그인한 후, 새로운 프로젝트를 생성합니다. 프로젝트 키와 프로젝트 이름을 설정하고, 토큰을 생성하여 기록해 둡니다.

 

Next.js 프로젝트에 SonarQube 통합

1. SonarQube 스캐너 설치

SonarQube 스캐너를 설치합니다. 여기서는 Node.js 환경에서 SonarQube 스캐너를 실행하는 방법을 설명합니다.

먼저, 프로젝트의 루트 디렉토리에 sonar-project.properties 파일을 생성합니다.

touch sonar-project.properties

sonar-project.properties 파일에 다음 내용을 추가합니다.

sonar.projectKey=your_project_key
sonar.projectName=Your Project Name
sonar.host.url=http://localhost:9000
sonar.login=your_sonarqube_token

 

2. npm 스크립트 설정

package.json 파일에 SonarQube 스캐너를 실행할 수 있는 스크립트를 추가합니다.

(start, build 등이 존재하는 곳에 끼워 넣으면 됩니다.)

{
  "scripts": {
    "sonar": "sonar-scanner"
  }
}

 

3. SonarQube 스캐너 실행

다음 명령어를 실행하여 SonarQube 스캐너를 실행합니다.

npm run sonar

이 명령어는 sonar-project.properties 파일의 설정을 기반으로 프로젝트의 소스 코드를 분석하고 SonarQube 서버에 결과를 업로드합니다.

 

Next.js 프로젝트와 CI 통합

Next.js 프로젝트에서 CI/CD 파이프라인을 사용하여 SonarQube 분석을 자동화할 수 있습니다. 예를 들어, GitHub Actions를 사용하여 SonarQube 분석을 설정할 수 있습니다.

 

GitHub Actions 설정

프로젝트의 루트 디렉토리에 .github/workflows/sonar.yml 파일을 생성합니다.

(기존 GitHub Actions 자동 배포 등 존재한다면 내용 확인 후 아래 코드를 적절하게 배치하면 됩니다. `node-version` 확인해주세요.)

name: SonarQube Scan

on:
  push:
    branches:
      - main

jobs:
  sonarQubeScan:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      - name: Run SonarQube Scanner
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        run: npm run sonar

이렇게 설정하면 main 브랜치에 코드가 푸시될 때마다 GitHub Actions가 SonarQube 스캐너를 실행하여 코드 품질을 분석합니다. SONAR_TOKEN은 GitHub 리포지토리의 시크릿으로 설정된 SonarQube 토큰을 사용합니다.

위의 단계들을 따라하면 Next.js 프로젝트에서 SonarQube를 사용하여 코드 품질을 지속적으로 분석할 수 있습니다.

관련 글

axios 사용자라면 반드시 읽어야 할 긴급 경고

이번에 정말 충격적인 사건이 터졌습니다. 전 세계에서 가장 많이 쓰이는 HTTP 클라이언트 라이브러리 axios가 npm 공급망 공격을 당했습니다. 이번 공격은 단순한 버그가 아니라, maintainer 계정을 해킹해 악성 버전을 직접 배포한 전형적인 Supply ...

2026년 4월 2일12

Next.js 언어 번역 라이브러리 선택 가이드

웹 서비스 글로벌 진출이 보편화되면서, 국제화(i18n) 관련 라이브러리가 많이 출시됐습니다. 많이 사용되고, 커뮤니티에서 평가가 좋은 언어 번역 라이브러리를 정리했습니다. 인기 번역 라이브러리 1. react-i18next 설명 : React 프로젝트에서 가장 널리 ...

2025년 7월 1일270

가볍고 유연한 React 아이콘 라이브러리 lucide-react

lucide-react 는 React 애플리케이션에서 SVG 아이콘을 손쉽게 사용할 수 있도록 지원하는 라이브러리 입니다. 인기 있는 Feather 아이콘을 기반으로 제작되었으며, 1000개 이상의 일관성 있는 디자인의 아이콘을 제공합니다. 또한 실제 프로젝트에서 사용...

2025년 6월 16일226

Java 이미지 최적화 라이브러리 Thumbnailator

Thumbnailator 소개 Thumbnailator는 Java 기반의 간편하고 강력한 이미지 처리 라이브러리로, 특히 이미지 리사이징 및 썸네일 제작에 최적화되어 있습니다. 직관적인 API로 빠른 개발이 가능하며, 다양한 이미지 형식을 지원합니다. 주요 특징 간결하...

2025년 6월 11일221