2015-09-04 90 views
0

我被要求將另一個項目(C#)集成到SonarQube中。我們使用TFS 2013,SonarQube 5.1.2和Sonar.MSBuild.Runner 1.0。 構建過程模板是舊的(不支持預發佈和後發佈的Powershell腳本)並且它是自定義的。 Visual Studio 2013無法編輯舊的構建過程模板。運行沒有TFS構建的SonarQube?

我試着只做靜態代碼分析,並用start參數運行MSBuild.SonarQube.Runner,第二次運行結束參數而不在兩者之間進行構建(代碼覆蓋率對他們來說並不重要) 。但後來我得到錯誤"No ProjectInfo.xml files were found. Check that the analysis targets are referenced by the MSBuild projects being build"?

我有什麼選擇將此項目集成到SonarQube?

+0

您對構建控制器/代理程序有何種版本的TFS? – ds19

+0

這也是TFS 2013. – tobre

回答

1

要在命令行中使用的MSBuild SonarQube亞軍,你必須:

  1. 準備環境:MSBuild.SonarQube.Runner.exe begin /k:SQ_project_key /n:SQ_project_name /v:SQ_project_version(接任意SonarQube項目的關鍵,名稱和版本)
  2. 運行構建:msbuild
  3. 上傳分析結果:MSBuild.SonarQube.Runner.exe end

的MSBuild的SonarQube亞軍與MSBuild的集成,並在收集因爲它構建了您的項目:您必須在beginend調用期間運行構建,否則此強制性信息將不可用,並且MSBuild SonarQube Runner將失敗並顯示您報告的消息。 MSBuild集成與MSBuild版本4.0,12和14兼容。

關於與TFS XAML構建的集成,如果您使用的是自定義構件,則必須對其進行自定義以便將調用集成到MSBuild SonarQube Runner的命令beginend

使用默認構建定義模板在TFS 2013上支持代碼覆蓋率,您只需運行啓用覆蓋率的測試即可。如果這不適用於您,請參閱以下鏈接以瞭解如何手動傳遞代碼覆蓋率結果路徑屬性:http://docs.sonarqube.org/x/CoBh

+0

msbuild如何知道運行SonarQube.Integration.targets? – WiSeeker

+0

在'MSBuild.SonarQube.Runer.exe開始'期間,引導程序'.targets'文件被部署到一個特殊的MSBuild'ImportsBefore'文件夾中,請參閱https://github.com/SonarSource/sonar-msbuild-runner/blob/ 1.1/SonarQube.TeamBuild.PreProcessor/TargetsInstaller.cs - 如果引導文件「.targets」存在於當前目錄的「.sonarqube」子文件夾中,它將包含「SonarQube.Integration.targets」文件。請參閱https://github.com/SonarSource/sonar-msbuild-runner/blob/1.1/SonarQube.MSBuild.Tasks/Targets/SonarQube.Integration.ImportBefore.targets –

+0

如果由於某些原因需要自定義,請另外發布問題任何這樣的邏輯:我們不希望發生這種情況,並且幾乎在每個版本中都會對這些目標文件進行更改。改變它們將會使你更難以在將來更新版本,所以如果還不是這樣的話,那麼你的使用案例可能會被覆蓋。 –