초기 기본 세팅 된 ID: admin, PW: admin 을 통해 로그인 후 프로젝트 생성 (Sonarqube 버전에 따라 UI는 달라질 수 있음)
순차적으로 Key, Token 을 생성 후 분석할 방법을 선택, 해당 매뉴얼은 Windows 환경의 SonarScanner 를 사용하여 분석진행
아래 사진의 1번 링크를 통해 SonarScanner 를 다운받아 환경변수를 설정하고, 2번 내용을 복사하여 추후 분석할 소스코드의 경로에서 실행
압축해제 후 환경변수에 bin 디렉토리를 설정하여 어느 환경에서든 bin 디렉토리의 sonar-scanner.bat 파일을 실행 가능하게 설정
다음과 같이 임의의 경로에서 sonar-scanner.bat 파일이 실행되면 세팅 완료(환경변수 설정은 windows 환경의 jdk 설정과 같음)
분석할 소스코드의 프로젝트경로로 이동하는 방법은 Eclipse 기준으로 해당 프로젝트 우클릭 > Properties 이후 해당버튼 클릭
해당 프로젝트로 이동하여 아래 그림과 같이 폴더 경로를 복사
cmd 창에서 해당 프로젝트 경로로 이동 후, 3. 분석 진행과정 에서 복사한 명령어를 실행
Note
※ sonar-scanner.bat -D"sonar.projectKey=FirstKey">> 프로젝트 생성 시 기입한 프로젝트 키
-D"sonar.sources=. ">> 현재경로의 내용을 분석
-D"sonar.host.url=http://192.168.1.179:9000">> SonarQube 실행서버
-D"sonar.login=78a60eb47c259d8930d5447812c9797e7004e2c2">> 프로젝트 생성 시 표시된 토큰값
분석 완료
87개의 버그, 640개의 취약점, 3037개의 Code smell, 46.9%의 코드중복
해당 분석 결과는 룰 설정을 하지않고 Default 로 세팅된 기준으로 분석한 결과이므로 정확한 분석은 분석하고자 하는 룰 설정 및 필터링 내역을 세팅 후 진행해야 함
상단의 Issues 에서 분석결과의 소스코드부분 확인가능
소나큐브 분석 시 java 파일 1개만 생성 후 테스트 할 경우엔 해당 설정파일은 필요 없으나, 대부분의 소스분석은 여러 소스코드가 포함 된 프로젝트를 분석 할 경우가 대다수
2개 이상의 소스코드가 포함 된 프로젝트를 분석 할 경우 아래와 같은 오류가 발생
SonarScanner 다운로드 페이지 하단에 샘플 properties 를 사용하여 해결가능
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
properties 내용에는 자바소스코드가 컴파일되어 저장 된 위치를 알려줘야 함
properties 위치는 분석 할 프로젝트의 최상위경로에 저장 후 분석 실행
# must be unique in a given SonarQube instance
sonar.java.binaries=bin
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
``