Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

By SonarSource – MIT – Issue Tracker  Sources 
SonarQube/SonarCloud Extension for TFS-VSTS

Table of Contents

기능

Team Foundation Buid의 새로운 구조를 활용해 Visual Studio Team Services(VSTS)(구 VSO) 및 Team Foundation Server(TFS) 설치형 버전에서 빌드와 릴리즈를 통합할 수 있습니다., 이를 위해서는 여러분의 VSTS 계정 혹은 TFS 서버에 public extension이 설치되어 있어야 합니다. 이 확장 패키지를 사용해 SonarQube에서 지원하는 모든 언어를 분석할 수 있습니다.

호환성

  • v3.x는 다음 시스템과 호환됩니다:
    • TFS 2015 Update 3
    • TFS 2017 Update 1
    • VSTS
  • v4.x는 다음 시스템과 호환됩니다:
    • TFS 2017 Update 2+
    • TFS 2018
    • VSTS

SonarQube 5.6+ (LTS)

SonarQube Extension에는 SonarQube Scanner for MSBuild가 포함되어 있습니다.

SonarQube Extention3.1.04.1.0
SonarQube Scanner for MSBuild4.0.04.0.2

설치

  1. 분석을 수행할 머신에 .NET framework v4.5.2+가 설치되어 있어야 합니다
  2. 분석을 수행할 머신에 Java Runtime Environment 8이 설치되어 있어야 합니다
  3. 마켓 플레이스에서 SonarQube extention을 설치합니다.

  

TFS manual install

Note: 사용하는 TFS 버전이 2017 Update 2 이전의 버전이 경우에는, 사용자가 직접 VSIX v3.x 최신버전을 다운로드 받아 설치하여야 합니다.

  • VSIX는 GitHub 저장소의 릴리즈 페이지에서 다운로드할 수 있습니다.
  • SonarQube Exstion 3.0 문서를 참조합니다.


사용

SonarQube 서비스 환경설정

가장 먼저 VSTS 프로젝트 설정에 SonarQube 서버를 서비스 엔드포인트로 설정해야 합니다. SonarQube 엔드 포인트 설정 문서를 참조합니다.

분석 설정 및 분석 수행

프로젝트 분석을 수행하기 위해서는, extension이 다음 3가지 태스크를 제공해야 합니다.

  • Prepare Analysis Configuration 태스크. 이 태스크는 빌드를 실행하기 전 필요한 속성들을 설정합니다.
    • 이 태스크는 반드시 필요합니다(mandatory).
    • .NET solution 혹은 Java 프로젝트인 경우 MSBuild, Maven 및 Gradle 태스크를 활용해 유연하게 통합할 수 있습니다.
  • Run Code Analysis 태스크. 이 태스크는 실제 소스 코드 분석을 수행합니다.
    • Maven 혹은 Gradle  프로젝에서는 Maven/Gradle 빌드에서 scanner가 수행되므로, 이 태스크는 별도로 필요하지 않습니다.
  • Publish Analysis Result 태스크. 이 태스크는 Quality Gate 상태를 빌드 요약 정보에 표시하며, 이 정보를 활용해 품질 관점에서 해당 애플리케이션이 프로덕션에 릴리즈 가능한지 판단할 수 있습니다.
    • 이 태스크는 선택 사항입니다.
    • 이 태스크는 SonarQube 분석이 종료될 때까지 대기하기 때문에, 빌드 시간이 크게 증가될 수 있습니다. 

이 태스크들을 추가하려면, 태스크 검색창에 "SonarQube"를 입력합니다:

하나의 .NET solution 분석하기

  1. 빌드 정의에 다음을 추가합니다:
    • 필수: Prepare Analysis Configuration 태스크, Run Code Analysis 태스크
    • 선택: Publish Analysis Result 태스크
  2. 태스크 순서를 다음과 같이 조정합니다:
    • Prepare Analysis Configuration: 모든 MSBuild 혹은 Visual Studio Build 태스크 이전 
    • Run Code Analysis: Visual Studio Test 태스크 이후
    • Publish Analysis Result


Simple Project

Ant 빌드 스크립트에 sonar Ant 타겟을 정의합니다:

build.xml
<project name="My Project" default="all" basedir="." xmlns:sonar="antlib:org.sonar.ant">
...
  
<!-- Define the SonarQube global properties (the most usual way is to pass these properties via the command line) -->
<property name="sonar.host.url" value="http://localhost:9000" />
 
...
  
<!-- Define the SonarQube project properties -->
<property name="sonar.projectKey" value="org.sonarqube:sonarqube-scanner-ant" />
<property name="sonar.projectName" value="Example of SonarQube Scanner for Ant Usage" />
<property name="sonar.projectVersion" value="1.0" />
<property name="sonar.sources" value="src" />
<property name="sonar.java.binaries" value="build" />
<property name="sonar.java.libraries" value="lib/*.jar" />
...
 
<!-- Define SonarQube Scanner for Ant Target -->
<target name="sonar">
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
        <!-- Update the following line, or put the "sonarqube-ant-task-*.jar" file in your "$HOME/.ant/lib" folder -->
        <classpath path="path/to/sonar/ant/task/lib/sonarqube-ant-task-*.jar" />
    </taskdef>
 
    <!-- Execute SonarQube Scanner for Ant Analysis -->
    <sonar:sonar />
</target>
...

프로젝트 베이스 디렉토리에서 다음 명령어를 실행하면 분석이 수행됩니다:

ant sonar

보안

Execute Analysis 권한을 가지고 있는 사용자는 누구나 분석을 수행할 수 있습니다.

Anyone 그룹에 Execute Analysis 권한이 부여되어 있지 않거나, SonarQube 인스턴스에 보안 설정이 된 경우에는(sonar.forceAuthentication=true) Execute Analysis 권한을 부여받은 사용자의 토큰값을 sonar.login 속성값으로 설정해야 합니다.

예: sonar-scanner -Dsonar.login=[my analysis token]

샘플 프로젝트

다음 링크에서 간단한 프로젝트 샘플을 다운로드 할 수 있습니다: https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-ant

멀티-모듈 프로젝트

상위 및 하위 모듈의 환경 설정은 상위(parent) build.xml 파일에 설정해야 합니다:

Parent build.xml
... 
<!-- Set modules IDs -->
<property name="sonar.modules" value="module-one,module-two"/>
   
<!-- For modules, properties are inherited from the parent. They can be overridden as shown below: -->
<property name="module-one.sonar.projectName" value="Module One" />
<property name="module-one.sonar.sources" value="sources/java" />
<property name="module-one.sonar.binaries" value="target" />
<!-- Default module base directory is <curent_directory>/<module_ID>. It can be overridden if necessary -->
<property name="module-one.sonar.projectBaseDir" value="Module 1" /> 
...

디버그 로그 활성화

일반적인 Ant verbose 옵션을 사용해 디버그 로그를 활성화 할 수 있습니다: -v

ant sonar -v

Advanced Usage

build.xml 파일 혹은 command-line 파라미터를 사용해 분석 파라미터를 추가 설정할 수 있습니다.

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.