개발일지

[시큐어 코딩] 정적 분석 도구 : SonarQube 소나큐브

알리에미친남자 2025. 5. 2. 07:30

SonarQube란?

Java, JavaScript, Python, C, Kotlin 등 다양한 언어의 코드 품질을 분석하고,
버그, 코드 스멜(Code Smell), 보안 취약점(Security Vulnerability) 등을 자동으로 탐지해주는 도구.

 

SonarQube특징

 

  • 정적 분석 기반 자동 품질 점검
  • 보안 취약점 자동 탐지 (XSS, SQLi 등)
  • 팀 개발 시 품질 기준 공유 가능
  • CI/CD 파이프라인에 쉽게 연동 가능
  • 무료 Community Edition도 충분히 강력

SonarQube 설치

1. 다운로드

2. 압축 해제 후 실행

# Windows
StartSonar.bat

# macOS/Linux
./bin/linux-x86-64/sonar.sh start

 

 

3. 접속

브라우저에서 다음 주소로 접속

http://localhost:9000

 

 

기본 계정: admin / admin

 

 

4. project 생성 ( create project > manually)

 

5. 토큰 생성

프로젝트 생성 후 Locally 선택 후 토큰 생성하기

 

 

6. 분석 할 프로젝트 빌드 도구 선택

 

명령어 복사(명령어를 복사하고 한줄로 만든다음 백슬래쉬 \ 이거 다 지워야함)

mvn clean verify sonar:sonar -Dsonar.projectKey=demo -Dsonar.host.url=http://localhost:9000 -Dsonar.login=sqp_40aa9e619c5662adaa06dd5417cfa77995b6b332

 

Maven 프로젝트와 연동하기

1. pom.xml 설정

<build>
  <plugins>
    <plugin>
      <groupId>org.sonarsource.scanner.maven</groupId>
      <artifactId>sonar-maven-plugin</artifactId>
      <version>3.9.1.2184</version> <!-- 최신 버전 확인 권장 -->
    </plugin>
  </plugins>
</build>

 

2. 분석 실행 명령어

mvn clean verify sonar:sonar -Dsonar.projectKey=project-name -Dsonar.host.url=http://localhost:9000 -Dsonar.login=your_token

 

3. 명령어 실행 결과

 

4. 분석 결과

분석 항목  설명
Bugs 실제 프로그램 오류 가능성
Vulnerabilities 보안 취약점 (예: SQL Injection, XSS)
Code Smells 유지보수 어려운 코드
Coverage 테스트 코드 커버리지
Duplications 중복 코드 비율

 

 

SonarQube가 알려주는 보안 취약점 예시

 

  • 하드코딩된 비밀번호
  • 입력값 검증 없는 SQL 쿼리
  • 사용자 입력을 통한 HTML 출력 (XSS)
  • 자바의 취약한 암호화 알고리즘 사용 등