Confluence URL: Analyzing Source Code
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에서 표시할 때까지는 약간의 시간이 필요합니다. 그렇지만 프로젝트 이름 옆에 별도의 아이콘이 표시되므로 어떤 과정이 수행되고 있는지 알 수 있습니다. 해당 아이콘에 마우스 커서를 올리면 세부 정보를 확인할 수 있습니다(적절한 권한을 가진 계정으로 로그인한 경우, 아이콘을 클릭해 세부 정보를 확인할 수 있습니다)
<그림1>
프로세스가 완료 후 아이콘이 사라집니다. 그러나 분석이 실패하는 경우 아이콘은 다음과 같이 변경됩니다:
<그림2>
분석 보고서 프로세스와 관련된 세부 내용은 [Background Tasks](https://docs.sonarqube.org/display/SONAR/Background+Tasks)를 참조합니다.
## 분석 수행하기
먼저, 분석 대상 소스 코드와 관련된 프로그래밍 언어 플러그인을 설치해야 합니다. 플러그인은 [직접 다운로드](https://docs.sonarqube.org/display/PLUG/Plugin+Library)해 설치하거나 [Update Center](https://docs.sonarqube.org/display/SONAR/Update+Center)를 통해 설치합니다.
다음으로 분석 방법을 선택합니다. 다음의 방법으로 소스 코드를 분석할 수 있습니다:
- [SonarQube Scanner](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner): 커맨드 라인에서 분석을 수행합니다.
- [SonarQube Scanner for MSBuild](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild): .Net 프로젝트 분석을 수행합니다.
- [SonarQube Scanner for Ant](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Ant): Ant 빌드 스크립트를 사용하는 프로젝트 분석을 수행합니다.
- [SonarQube Scanner for Maven](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven): Maven 빌드 스크립트를 사용하는 프로젝트를 분석합니다
- [SonarQube Scanner for Gradle](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle): Gradle 빌드 스크립트를 사용하는 프로젝트를 분석합니다.
- [SonarQube Scanner For Jenkins](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins): Jenkins에서 분석을 수행합니다.
SonarQube가 분석을 수행하는 동안 안티바이러스 스캐너를 실행하지 않기를 권장합니다. 안티바이러스 스캐너로 인해 예상치 못한 문제가 발생할 수 있습니다.
## SonarQube.com 사용자?
[SonarQube.com](http://sonarqube.com/), [TravisCI](https://travis-ci.org/) 사용자인 경우, Travics Add-On을 활용해 최소한의 설정으로 SonarQube.com에 분석 결과를 피드할 수 있습니다: [https://docs.travis-ci.com/user/sonarqube/](https://docs.travis-ci.com/user/sonarqube/)
## 더 많은 정보
아래 내용을 참조합니다:
- [Analysis Parameters](https://docs.sonarqube.org/display/SONAR/Analysis+Parameters)
- [Project Examples](https://docs.sonarqube.org/display/SONAR/SonarQube+Project+Examples)
- [Generic Test Data](https://docs.sonarqube.org/display/SONAR/Generic+Test+Data)
<center>
© 2008-2017, SonarSource S.A, Switzerland.
Except where otherwise noted, content in this space is licensed under a
[Creative Commons Attribution-NonCommercial 3.0 United States License](https://creativecommons.org/licenses/by-nc/3.0/us/).
SONARQUBE is a trademark of SonarSource SA.
All other trademarks and copyrights are the property of their respective owners.
</center>