3

Sonar Begin Analysis および End Analysis タスクで囲まれた Visual Studio Build タスクを含む Visual Studio Team Services ビルド定義があります。Visual Studio Build は、/p:IsPackaging=True プロパティを使用して、SharePoint プロバイダーがホストするアドインをパッケージ化します。このプロパティが設定されている場合、Sonar Build Runner から次のエラーが発生します。

2015-11-27T13:23:05.9534586Z WARNING: Duplicate project GUID: "31ef7995-fdbc-4307-9024-a3d640fdf987". 
Check that the project is only being built for a single platform/configuration and that that 
the project guid is unique. The project will not be analyzed by SonarQube. 

もちろん、最初に /p:IsPackaging=True を指定せずにソリューションをビルドし、これに対して分析を実行して、2 番目のステップでパッケージ化を行うこともできますが、ソリューションを 2 回ビルドする必要があるのはリソースの無駄のようです。

SharePoint プロバイダーがホストするアドインをパッケージ化して、同じタスクを Sonar でコード分析に使用する方法を教えてください。

使用中のソナーのバージョンは 5.1.2 です。また、VSTS タスクで使用される MSBuild.SonarQube.Runner のバージョンは 1.0.1 です。

4

1 に答える 1

5

返信が大変遅くなってしまい申し訳ありません!

これを調べたところ、SharePoint msbuild ターゲットが "Build" ターゲットを 2 回呼び出しているようです。1 回は通常のビルドの一部で、もう 1 回はパッケージング プロセスの一部です。SonarQube 分析ですべてのビルド アーティファクトを追跡するために、ビルド タスクに依存するいくつかのロジックを挿入しましたが、このロジックが 2 回呼び出され、「プロジェクト GUID の重複」の問題が発生します。

単純な SharePoint プロジェクトで試した回避策を次に示します。実際のビルドとパッケージ化は別の手順として行ってください。したがって、ビルド定義は次のようになります。

  • SonarQube 開始
  • MSBuild (/p:IsPackaging=true なし)
  • SonarQube終了
  • MSBuild your_SP_project.csproj /t:パッケージ

msbuild への 2 回目の呼び出しは、sharepoint プロジェクトで実行する必要があることに注意してください。SharePoint ターゲットがインポートされていないため、ソリューションで /t:Package を呼び出しても機能しません。

これがうまくいくかどうか教えてください!

于 2015-12-07T16:39:12.290 に答える