소나 큐브
소나 큐브는 정적 분석을 수행하는 오픈 소스 툴입니다.
중복 코드, 코딩 표준, 유닛 테스트, 코드 복잡도, 주석, 버그 및 보안 취약점에 대해서 검사하고 결과 보고서로 작성합니다.
정적 코드 분석
정적 분석은 프로그램을 실행(동적)하지 않고 소스 코드나 컴파일된 코드를 분석하는 작업을 말합니다.
왜 사용할까?
- 개발 단계에서 코드의 구조적인 문제나 실수를 찾아냄
- 코드 작성 단계에서 차후 코드를 실행했을 때 발생할 가능성이 높은 문제를 미리 찾고 대처할 수 있음
- 단순이 버그나 오류를 찾아내는 것 뿐만 아니라 더 좋은 코드를 위한 개선점을 제시해 줌
사용법
1. Java JDK SE 17 설치
https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
Java Archive Downloads - Java SE 17
WARNING: These older versions of the JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production. For production use Oracle recommends downloading th
www.oracle.com
소나 큐브는 자바로 만들어져 있어서 JDK 를 설치해야 합니다. 17 버전으로 다운로드하는 이유는 소나 큐브 실행과 관련이 있습니다. (아래에서 설명)
2. 소나 큐브 다운로드
https://www.sonarqube.org/downloads/
Download | SonarQube
Get the latest LTS and version of SonarQube the leading product for Code Quality and Security from the official download page.
www.sonarsource.com
Community Edition 최신버전으로 다운합니다. (저는 10.2.1 버전으로 다운 받았습니다.)
다운 > 압축 풀기 > bin/os/StartSonar.bat 실행
에러 발생 시
: 기본 클래스 org.sonar.application.App을(를) 로드하는 중 LinkageError가 발생했습니다.java.lang.UnsupportedClassVersionError: org/sonar/application/App has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
소나 큐브를 실행하기 위한 Java 버전이 컴파일 버전보다 낮아서 생기는 문제입니다.
- 55 = Java 11
- 56 = Java 12
- 57 = Java 13
- 58 = Java 14
- 59 = Java 15
- 60 = Java 16
- 61 = Java 17
컴파일 버전: 61(Java 17)
실행 버전: 55(Java 11)
설치한 자바 버전이 소나 큐브를 실행할 수 있는 버전이 맞는지 확인해야 합니다.
해결 후 위와 같은 문구가 출력됐다면 실행 성공입니다.
3. 소나 큐브 프로젝트, 토큰 생성
http://localhost:9000/ 에 접속합니다.
ID: admin
PW: admin
3.1 프로젝트 생성
http://localhost:9000/projects/create?mode=manual
모든 값을 입력해 주고 프로젝트를 생성합니다.
3.2 토큰 생성
Locally (로컬 소스)를 선택하고 토큰을 생성해 줍니다.
4. 인텔리제이 SonarLint 플러그인 설치
SonarLint 플러그인을 설치합니다.
Configure SonarLint 아이콘을 클릭합니다.
Project key를 입력하고,
Override binding per-module 하위에서 + 버튼을 누르고 프로젝트 폴더를 선택해 줍니다.
이후 파일 내부 또는 폴더에서 Analyze with SonarLint 실행 시 정적 분석을 할 수 있습니다.
참고 자료
- https://giron.tistory.com/134
- https://www.baeldung.com/java-lang-unsupportedclassversion
'Java' 카테고리의 다른 글
Java static Map 초기화 한번만 하기 (1) | 2023.12.15 |
---|---|
가비지 컬렉터(Garbage Collector) 의 종류 (0) | 2023.11.29 |
Lombok (1) | 2023.11.28 |
Java Optional (0) | 2023.09.29 |
Java Stream 최종 처리 (0) | 2023.09.14 |