Analyzing with SonarQube Scanner for MSBuild

By SonarSource – MIT – Issue Tracker  Sources

SonarQube Scanner for MSBuild 4.0.0.821
Compatible with SonarQube 6.7+ (LTS) 

Download

Table of Contents

기능

SonarQube Scanner for MSBuild는 SonarSource와 Microsoft 가 협업을 통해 개발 및 제공하며, MSBuild 프로젝트 및 솔루션을 SonarQube로 분석하기 위해 권장합니다.

커맨드라인 명령어를 통해 사용 가능하며, VSTS-TFS 및 Jenkins의 빌드 스텝으로 활용할 수 있습니다.

설치

  1. .NET Framework v4.6+ 를 설치합니다.
  2. Java Runtime Environment 8을 설치합니다.
  3. 최신 버전의 SonarQube Scanner for MSBuild 를 다운로드 합니다(이 페이지 상단의 링크를 참조하십시오).
  4. zip 파일의 블럭을 해제합니다(마우스 우 클릭 file > Properties > Unblock).
  5. sonar-scanner-msbuild-[version].zip 파일의 압축을 풉니다. (예: C:\SonarQube\bin)
  6. C:\SonarQube\bin\SonarQube.Analysis.xml  파일의 다음 파라미터를 입력합니다:
    1. sonar.host.url - 사용할 SonarQube 서버의 URL

    2. sonar.login - Execute Analysis 권한을 가진 사용자의 사용자 토큰 값을 입력합니다. Anonymous 계정이 해당 권한을 가지고 있지 않은 경우 이 값을 입력해야 합니다
  7. SonarQube.Analysis.xml 파일에 대한 접근권한을 적절하게 설정해, 불필요한 수정을 방지합니다.
  8. %PATH% 환경 변수에 실행 파일이 위치한 디렉토리를 추가합니다.

사용

  1. 분석하고자 하는 프로젝트의 루트 폴더에서 다음 명령어를 실행합니다:

    SonarQube.Scanner.MSBuild.exe begin /k:"org.sonarqube:sonarqube-scanner-msbuild" /n:"Project Name" /v:"1.0"
    MSBuild.exe /t:Rebuild
    SonarQube.Scanner.MSBuild.exe end

    분석을 위해 추가 파라미터를 설정해야할 경우 추가 파라미터 페이지를 참조하십시오.
    커맨드 라인에서 분석 인증 정보(사용자 토큰)를 전달해야 하는 경우, /d: 옵션을 사용하십시오(예: /d:sonar.login=[my token value)

  2. 분석 종료 후 터미널에 표시되는 SonarQube UI Url을 브라우저에 입력하여 결과 페이지로 합니다.

기타

MSBuild 용 스캐너를 MSBuild 파이프라인의 일부로 구성할 수 있습니다. 이 경우 다음의 속성들이 변경됩니다:

  • 프로젝트의 기존 코드 분석기들을 모두 제거하여, 이슈를 중복 식별하는 것을 방지합니다.
  • SonarC# 및 SonarVB 분석기가 추가되며, CodeAnalysisRuleSet이 SonarQube의 quality profile에 맞추어 업데이트 됩니다.
  • SonarQube에 분석 보고서가 전송되기 전에 빌드가 깨지지 않도록 WarningAsError 기능이 비활성화 됩니다.

위의 변경 사항으로 인해 기존 빌드 프로세스에 악영향을 미치는 경우, SonarQube 분석을 위한 별도의 job을 생성할 것을 권장합니다. 또한,

  • 프로젝트 빌드는 begin / end 커맨드 사이에서 수행해야 합니다. 위 예제에서는 /t:Rebuild 를 수행했습니다.
  • "sonar.login" 혹은 "sonar.password"와 같은 민감한 속성은 보안상의 의유로 디스크에 보관하지 않습니다. 커맨드 라인 인자로 해당 속성을 전달하고자 하는 경우에도 해당 과정은 begin / end 사이에서 수행해야 합니다.
  • MSBuild 14.0+ 버전을 사용하지 않는 경우, Visual Studio 및 MSBuild와의 호환성 매트릭스를 확인하십시오.

샘플 프로젝트

github에서 대부분의 지원 언어를 포함하는 간단한 샘플 프로젝트를 제공하며, 리포지토리를 탐색하거나 샘플 프로젝트를 다운로드할 수 있습니다. projects/languages 디렉토리의 샘플 프로젝트를 확인하십시오.

알려진 제약 사항

Web Application 솔루션에 대한 분석은 지원하나, Web Site 솔루션에 대한 분석은 지원하지 않습니다.

트러블 슈팅

The End Step executable was not found

여러 분석을 빠르게 연속적으로 수행하고자 하는 경우에는 /nodereuse:false 인자를 msbuild 명령어로 전달하십시오. 그렇지 않은 경우,  새로운 분석 과정에서 요구하는 DLL이 이전 분석에 의해 점유되어 있는 경우 다음 오류를 만날 수 있습니다:

The End Step executable was not found 'D:\***\.sonarqube\bin\MSBuild.SonarQube.Internal.PostProcess.exe'. Please check that the begin step, the build step and the end step are all executed in the same directory.

End of Central Directory record could not be found

오래된 빌드 태스크로 인해 위 오류가 발생합니다. 최신 버전을 다운로드하여 설치하십시오.

더 보기


© 2017-2018 Moses Kim.

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

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