0

SonarQube Scanner for MSBuild 명령 줄에서 내 C# 코드를 분석하려고합니다.C# 프로젝트에서 MSBuild 용 SonarQube Scanner를 실행하려고하면 빌드가 실패합니다.

MSBuild 2.2.0.24 (http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+MSBuild) 용 SonarQube 스캐너를 설치했으며 모든 전제 조건이 있습니다.

SonarQube.Scanner.MSBuild.exe begin /k:"MyProject" /n:"My Project" /v:"1.0.0.0" 

"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /t:Rebuild 

SonarQube.Scanner.MSBuild.exe end 

을하지만 내 솔루션 (닷넷 프레임 워크 4.5.1)에 msbuild를 실행하면 빌드가 실패

나는 다음과 같은 명령을 실행하고 있습니다. 이 솔루션은 음파 탐지기 검사를 수행하지 않을 때 성공적으로 구축되므로 음파 탐지기 스캐너 플러그인과 관련이 있습니다.

SonarQube.Analysis.xml에서 나는 sonar.host.url, sonar.login 및 sonar.password만을 제공했습니다.

Build FAILED. 

"C:\git\src\MySoltion.sln" (Rebuild target) (1) -> 
"C:\git\src\\MyProject\MyProject.csproj" (Rebuild target) (2) -> 
"C:\git\src\\MyProject\xxc3zd2a.tmp_proj" (_CompileTemporaryAssembly target) (4) -> 
(CoreCompile target) -> 
    CSC : error CS0016: Could not write to output file 'C:\git\src\\MyProject\Build\bin\xxc3zd2a\Debug\MyProject.exe 
.RoslynCA.json' -- 'Could not find a part of the path 'C:\git\src\\MyProject\Build\bin\xxc3zd2a\Debug\MyProject.ex 
e.RoslynCA.json'.' [C:\git\src\MyProject\xxc3zd2a.tmp_proj] 

    0 Warning(s) 
    1 Error(s) 
+0

가 확인하시기 바랍니다. –

+0

xxc3zd2a.tmp_proj가 임시 또는 자동 생성 프로젝트 인 것으로 보입니다. 분석에서 제외 할 수 있습니까? ' true'를 프로젝트 속성에 추가하십시오. '.RoslynCA.json'은 roslyn이 생성 한 SARIF json 파일입니다. 우리는 생성 된 exe/dll 옆에 넣으려고합니다. 아마 이것은 예상 된 폴더를 생성하지 않는 사용자 지정 msbuild 프로젝트입니다. 이 경우 해결 방법으로 CoreCompile 대상 앞에 작업을 추가하여 폴더를 만들 수 있습니다. – Tamas

답변

1

이 문제는 우리 솔루션의 주요 프로젝트에 대한 csproj 파일을 편집하여 해결되었습니다

은 MSBuild에서의 출력이다. 그것은 처음에이처럼 보였다 :

<OutputPath>$(BuildOutputPath)\bin\$(MSBuildProjectName)\$(Configuration)</OutputPath> 

을하지만, 소나 스캔 중 msbuild를 실행시 변수가 보이지 않았다 $ (MSBuildProjectName)가 작동하려면 대신 실제 프로젝트의
xxc3zd2a.tmp_proj 폴더를 생성 이름.
$ (MSBuildProjectName)을 프로젝트 이름으로 바꿀 때 효과가있었습니다. 우리의 솔루션에는 4 개의 프로젝트가 있지만 그 중 하나만 변경했습니다. 전용 파일을 csproj에 MSBuild에서 변경을 실행하지 않을 때 필요하다고

주 ... 폴더 안에 파일을 쓸 수있는 권한이있는 경우