SonarQube 소스코드 분석

3rd-big·2021년 3월 5일
0

SonarQube

목록 보기
2/2
post-thumbnail

SonarQube 소스코드 분석

1. 프로젝트 생성

초기 기본 세팅ID: admin, PW: admin 을 통해 로그인 후 프로젝트 생성 (Sonarqube 버전에 따라 UI는 달라질 수 있음)

2. 분석방법 선택

순차적으로 Key, Token 을 생성 후 분석할 방법을 선택, 해당 매뉴얼은 Windows 환경의 SonarScanner 를 사용하여 분석진행

3. 분석 진행과정

아래 사진의 1번 링크를 통해 SonarScanner 를 다운받아 환경변수를 설정하고, 2번 내용을 복사하여 추후 분석할 소스코드의 경로에서 실행

4. SonarScanner 설치 및 환경변수 설정

압축해제 후 환경변수에 bin 디렉토리를 설정하여 어느 환경에서든 bin 디렉토리의 sonar-scanner.bat 파일을 실행 가능하게 설정

다음과 같이 임의의 경로에서 sonar-scanner.bat 파일이 실행되면 세팅 완료(환경변수 설정은 windows 환경의 jdk 설정과 같음)

5. 소스코드 분석

분석할 소스코드의 프로젝트경로로 이동하는 방법은 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" >> 프로젝트 생성 시 표시된 토큰값

분석 완료

6. 분석결과 확인

87개의 버그, 640개의 취약점, 3037개의 Code smell, **46.9%**의 코드중복

해당 분석 결과는 룰 설정을 하지않고 Default 로 세팅된 기준으로 분석한 결과이므로 정확한 분석은 분석하고자 하는 룰 설정 및 필터링 내역을 세팅 후 진행해야 함

상단의 Issues 에서 분석결과의 소스코드부분 확인가능


분석 시 참고사항

sonar-project.properties

소나큐브 분석 시 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
``
profile
Don't Forget

0개의 댓글