소나큐브 적용해보기

최지환·2023년 2월 13일
0

프로젝트-모각코

목록 보기
3/7
post-thumbnail

소나큐브 적용해보기

프로젝트를 하면서 pr를 날릴 때 code smell이 나는 코드들이 불필요하게 push 되어 리뷰의 효율이 안나는 상황이 발생해, 정적 분석 도구의 필요성을 느끼게 되어 적용하기로 했다.

정적 분석 도구

정적 프로그램 분석
(static program analysis
)은 실제 실행 없이 컴퓨터 소프트웨어를 분석하는 것을 말한다. 대부분의 경우에 분석은 소스 코드
의 버전 중 하나의 형태로 수행되며, 가끔은 목적 파일
형태로 분석된다. 이에 반하여 실행 중인 프로그램을 분석하는 것을 동적 프로그램 분석
이라고 한다. - wikipedia

쉽게 말해서 정적 분석은 프로그램이 실행 되지 않은 상태에서 소스 코드를 분석해 프로그램을 분석 하는 방식이다.


SonarQube 적용

나는 여러 정적 분석 도구 중 sonaqube를 사용했다.

→ 관련 레퍼런스가 많기 때문!

SonarQube 설치

나는 SonarQube용 ec2를 따로 생성했고, 도커를 이용하여 설치했다.

  1. 설치
$ docker pull sonarqube
  1. 실행
docker run -d --name sonarqube -p 8080:9000 sonarqube
  • -d : 컨테이너를 데몬 프로세스로 실행.
  • -name : 컨테이너 이름 설정
  • -p : -p [host(외부)의 port]:[container(내부)의 port] 로 설정
    현재 ec2 인바운드 규칙에 9000번 포트를 열어주지 안않기 때문에 8080으로 설정

프로젝트 생성

설치 후 8080포트로 접근을 해보면 sonarqube 창이 뜬다

첫 대시보드를 캡처를 못해서, 현재 프로젝트가 있는 상태로 이미지를 첨부 하였다.

  • sonarqube_test 라는 이름으로 프로젝트를 생성 →Locally 클릭
    (기존에 sonarqube-test 로 만들어 이미지 상 name은 sonqrqube-test 입니다.)

다음과 같이 토큰 생성

토큰은 꼭 복사 해둘 것!

나는 gradle로 프로젝트를 관리하기 때문에 gradle 클릭

해당 플러그인을 프로젝트에 주입해주면 된다.

하단에 있는 쉘 스크립트를 사용해 정적 분석을 실행한다.


이제 jenkins에 방금 생성한 sonarqube 프로젝트를 적용해보자.

  • Jenkins → item → 구성 → Pipeline로 이동

Pipeline에 정적 분석 명령 추가

stage('sonarqube-run'){
            steps{
                    sh '''
                     ./gradlew sonarqube \
                    -Dsonar.projectKey=sonarqube-test \
                    -Dsonar.host.url=http://43.201.18.36:8080 \
                    -Dsonar.login=sqp_c47790b1db057ddeb6fd03c0305532106b7c9a
                    '''
            }
        }

빌드 실행 - 젠킨스 파이프라인으로 실행

잘 동작한다.

소나큐브에 접속 하면 정적 분석 결과를 볼 수 있다.

0개의 댓글