소스 코드 분석하기

Table of Contents

SonarQube 플랫폼 설치를 완료한 경우, Analyzer를 설치하고 코드를 분석해 프로젝트를 생성할 수 있습니다. 분석을 하기 전에 SonarQube 프로젝트 설정을 먼저 하고 싶은 경우에는 프로젝트 설정을 하고 싶다면 프로비져닝 기능을 사용할 수 있습니다.

분석 범위: 파일 종류 및 데이터

SonarQube는 20가지 이상의 프로그래밍 언어를 분석해서 품질 메트릭을 생성하고 이슈(코딩 표준 위반 항목)를 검출합니다. 다만 분석 격과는 분석 대상 프로그래밍 언어에 따라 차이가 있습니다.

  • 분석을 지원하는 모든 프로그래밍 언어에 대해, SonarQube가 지원하는 SCM 제공자로부터 "blame" 정보를 자동 추출합니다. Git, SVN은 기본 지원입니다. 다른 SCM 제공자 사용시 추가로 플러그인을 설치해야 합니다.
  • 분석을 지원하는 모든 프로그래밍 언어에 대해, 소스 코드의 정적 분석을 수행합니다(Java 파일, COBOL 프로그램 등).
  • 분석을 지원하는 특정 프로그래밍 언어에 한해, 컴파일 된 코드의 정적 분석을 수행합니다(Java의 .class 파일, C#의 .dll 파일 등).
  • 분석을 지원하는 특정 프로그래밍 언어에 한해, 동적 분석을 수행합니다.

인식하지 못하는 파일들

SonarQube는 기본적으로 프로그래밍 언어 플러그인(즉, 코드 분석 엔진)이 인식하는 파일만을 분석 과정에서 프로젝트로 로드합니다. 예를 들어, SonarQube 인스턴스에 Java와 JavaScript 플러그인이 설치되어 있다면 .java 파일과 .jsp 파일은 로드하지만 .xml 파일은 무시합니다. 다른 텍스트 파일을 로드해야 하는 경우, SonarQube에서 Settings > Exclusions > FIles > Import unknown files를 true로 설정합니다..

분석을 진행하는 과정에서

SonarQube 서버는 데이터를 요청하고, 분석 엔진에 제공된 파일을 분석하며, 분석 결과 정보는 보고서의 형태로 서버에 다시 전송됩니다.는 보고서의 형태로 서버로 다시 전송됩니다. 서버는 전송된 데이터를 비동기적으로 분석합니다. 분석 보고서는 큐에 담겨 순차적으로 처리되므로, SonarQube 서버의 로그에 분석이 완료된 것으로 표시되더라도 실제 분석 결과가 SonarQube에 표시되기까지는 약간의 시간이 소요됩니다. 프로젝트 이름 옆에 별도의 아이콘이으로 현재 어떤 과정이 수행되고 있는지 표시합니다. 해당 아이콘에 마우스 커서를 올리면 세부 정보를 확인할 수 있습니다(적절한 권한을 가진 계정으로 로그인한 경우, 아이콘을 클릭해 세부 정보를 확인할 수 있습니다)

프로세스를 완료한 뒤 아이콘은 사라집니다. 다만 분석이 실패하는 경우 아이콘은 아래와 같이 표시됩니다:

분석 과정 중 프로세스와 관련된 세부 내용은 Background Tasks를 참조합니다.

분석 수행하기

가장 먼저, 분석 대상 소스 코드와 관련된 프로그래밍 언어 플러그인을 설치해야 합니다. 플러그인은 직접 다운로드 후 설치하거나 마켓플레이스를 통해 설치합니다.

다음과 같은 방법으로 소스 코드를 분석할 수 있습니다:

SonarQube가 분석을 수행하는 동안 안티 바이러스 스캐너를 실행하지 않을 것을 권장합니다. 안티 바이러스 스캐너로 인해 예상치 못한 문제가 발생할 수 있습니다.

SonarCloud 사용자이십니까?

SonarCloud 및 TravisCI 사용자는 Travis Add-On을 활용해 최소한의 설정만으로 SonarCould로 소스 코드 분석결과를 피드할 수 있습니다. https://docs.travis-ci.com/user/sonarqube/를 참조하십시오.

더 많은 정보

아래 내용을 참조하십시오.:

© 2017-2018 Moses Kim.

별도의 언급이 없는 한, 이 스페이스의 컨텐츠는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
SONARQUBE는 SonarSource SA의 트레이드 마크입니다. 모든 트레이트 마크 및 저작권은 각 소유자의 소유물입니다.

::: SonarQube 관련 문의 : 이메일 :::