올챙이시절 기록소

Sonar-Qube 5.6 (on CentOS) 설치 & 정적분석 실행하기 본문

2017/5월

Sonar-Qube 5.6 (on CentOS) 설치 & 정적분석 실행하기

allroundplayer 2017. 10. 24. 11:31

CI의 프로세스의 한 부분으로 쓰기에 유용한 소나큐브


이 녀석을 설치하고 한 번 수행하는 예제를 보여드리겠다


설치는 간단하기에 절차를 따로 나누지 않는다



Requirement

ref : sonar_qube_docs


JAVA는 1.8 버전이 필요하다.


DB는 아래의 리스트에 있는 것을 사용하거나 아니면 설치하지 않아도 된다.


이때는 embedded DB를 사용하는데 H2라고하는 메모리 DB를 사용한다.


( 개인적인 생각으로는 형상관리의 필요성을 느끼지 못하여 DB를 구축하진 않았다 )


( Gitlab을 사용하는 중이라면 PostgreSQL이 내장되어 있으니 연계해도 좋을 것이다 )







Sonar-Qube & Sonar-Scanner 설치



$ mkdir -p /app/sonarqube

깔끔한 설치를 위해 경로를 하나 만들고



$ cd /app/sonarqube/

해당 디렉토리로 접근



Download URL : Sonar-Qube


$ wget -O sonar.zip https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.6.7.zip

파일을 받아줍니다


0


받는김에 소나큐브 스캐너도 받자



Download URL : Sonar-Qube-Scanner 

$ wget -O sonnar-scanner.zip https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.0.3.778-linux.zip

0


똑같이 파일을 받아줍니다




받은 파일들 확인하고




압축해제 한다




스캐너두 압축해제




zip 파일들은삭제




$ ln -s /app/sonarqube/sonarqube-5.6.7/bin/linux-x86-64/sonar.sh /usr/bin/sonar


파일들을 /usr/bin 경로에 링크를 걸어둔다


0


이런식으로 위치가 어디든 sonarqube를 켜거나 끌 수 있다


사용할 수 있는 명령어들은 console, start, stop, restart, status, dump 정도가 있다

sonar.sh 참고


525 case "$1" in 526 527 'console') 528 checkUser touchlock $1 529 console 530 ;; 531 532 'start') 533 checkUser touchlock $1 534 start 535 ;; 536 537 'stop') 538 checkUser "" $1 539 stopit 540 ;; 541 542 'restart') 543 checkUser touchlock $1 544 stopit 545 start 546 ;; 547 548 'status') 549 checkUser "" $1 550 status 551 ;; 552 553 'dump') 554 checkUser "" $1 555 dump 556 ;; 557 558 *) 559 echo "Usage: $0 { console | start | stop | restart | status | dump }" 560 exit 1 561 ;; 562 esac 563 564 exit 0






Default로 9000포트에 서비스가 열리니 이렇게 접속하면 웹페이지가 보인다


 Default ID / PW : admin / admin


( * 방화벽 처리 필요 )




$ ln -s /app/sonarqube/sonar-scanner-3.0.3.778-linux/bin/sonar-scanner /usr/bin/sonar-scanner


소나 스캐너도 편리함을 위해 링크를 걸어둔다


본격적으로 정적분석을 한 번 해보겠다



$ cd /app/sonarqube/

$ mkdir static_analysis_items $ cd static_analysis_items/

정적분석을 할 형상항목을 여기다 위치 시킬 것이다




mfoweb 항목을 git clone 할 것이다


*  mfoweb : maxgague for oracle web front end 



SSH 세팅을 안해놔서 ID/PW로 인증절차를 거쳤다


0


잘 받아 와진다



mfoweb의 디렉토리 내에 설정파일이 하나 있어야


소나 스캐너로 분석이 가능한데



바로 'sonar-project.properties'  이다




파일 내부는 이런식으로 작성되었다



# must be unique in a given SonarQube instance sonar.projectKey=mfo:mfoweb sonar.projectName=mfoweb (web_front_end) sonar.projectVersion=mfoweb_170920.02 sonar.projectBaseDir=./ sonar.sources=PA,RTM,common,config,Exem #sonar.sources=. sonar.language=js sonar.sourceEncoding=UTF-8

# JAVA SCRIPT 항목인 경우



# must be unique in a given SonarQube instance sonar.projectKey=mfo:mfodg sonar.projectName=mfodg (data_gather) sonar.projectVersion=mfodg_170920.01 sonar.sources=. # Encoding of the source code. Default is default system encoding #sonar.sourceEncoding=UTF-8

# JAVA 항목인 경우



분석을 해봅시다



0


잘 되던 것 같더니


실패를 했다


이유는 플러그인의 버전이 너무 낮기 때문이다


Sonar-qube 플러그인 버전 업 & 다운그레이드 편 참고하면 좋을 것 같다



Update Center에서



Sonar JS 버전을 2.11 -> 3.2 최신버전까지 올린다


Update to 3.2 버튼 클릭



상단의 Restart 버튼 눌러주고


처리가 끝난 후




다시 해보면 잘 된다




웹에서는 이렇게 보여진다!





PS. 소스코드가 푸쉬되면 정적분석을 실시하고 알람을 받도록 세팅을 했었다


중요한 것은 잘하는 개발자분들이 Rules을 만들어 사내 표준을 선도하는 것이라 생각한다


0



Comments