ラベル MSBuild の投稿を表示しています。 すべての投稿を表示
ラベル MSBuild の投稿を表示しています。 すべての投稿を表示

2016年8月19日金曜日

TeamCity のBuild で SonarQube のソース解析を実行する(MSBuild)

概要

SonarQubeの「SonarQube Scanner for MSBuild」を、TeamCityから起動できるようにするまでの手順。
とりあえずやってみたらとりあえず出来た! というレベル。もっと良い手段もある、と、思う。。

前提

  • TeamCity の BuildAgent に「SonarQube Scanner for MSBuild」がインストール済であること。
  • SonarQube サーバが起動済であること

手順

  1. Build Agent に実行ファイルの場所を追加する(省略可能*1)
以下ファイルをメモ帳なり、任意のエディタで開く
<Build Agentのインストールフォルダ>\conf\buildAgent.properties
※<Build Agentのインストールフォルダ>は、TeamCity上で、Agentの「Agent Parameters」タブの”agent.home.dir”に記載されている
  1. 開いたファイルに、以下内容を追加
system.msBuildSonarQubeRunnerPath=<SonarQube Scanner for MSBuild を配置した場所>
※”<>”の間の部分は、適宜読み替えてください。。c:\\sonarqube\\bin とか。”/”をエスケープするのをお忘れなく

  1. Build Step に 普通にビルドを実行するBuild Step を追加する
以下のような。

  1. ビルドを実行するBuild Stepの手前に、以下のBuild Stepを追加する
実行コマンドの内容:
%system.msBuildSonarQubeRunnerPath%\MSBuild.SonarQube.Runner.exe
パラメータの内容(*2):
begin /k:"%system.teamcity.projectName%" /n:"%teamcity.project.id%" /v:"%build.number%"

  1. 後続に、以下のBuild Stepを追加する
実行コマンドの内容:
%system.msBuildSonarQubeRunnerPath%\MSBuild.SonarQube.Runner.exe
パラメータの内容:
end

  1. 全体的には、以下のような Build Configuration になる:

補足

*1 Build Step内でパラメータを使って実行ファイルのパスを指定しているので、Build Agent にパラメータを追加している。不必要だと思うのであれば、省略して、Build Stepに直接ファイルパスを記載してください
*2 Scanner for MSBuild の引数として引き渡しているTeamCityのパラメータの意味合いは以下の通り
  • system.teamcity.projectName : 現在ビルドを実行中のプロジェクトの名前。
  • teamcity.project.id : プロジェクト作成時に指定したID
  • build.number : ビルド毎に更新される番号。何も設定していない場合は「ビルドを実行した回数」が設定されるはず(Build Configuration の General Settings にて設定可能)

実行結果の確認

実行すると、SonarQube 側のページで、以下のような雰囲気で確認が可能。
(2行目が、追加された解析結果)

SonarQube は、実行結果を勝手に蓄積していくので、後々の品質評価等にも、役立つ情報が得られる。デプロイのような作業が必要ないようなプロジェクトでも、チェックインする度にソース解析が実行される状態にしておくことは、非常に有益であると思う。

以上。

Sonar Scanner for MSBuild のセットアップ手順

概要

SonarQube にて、C#、VB.NET のソース解析をするための覚書。

前提条件

  • SonarQube がインストール済であること。
  • SonarQube サーバが起動中であること。

設定手順

Soner Scanner for MSBuild のダウンロード、解凍

ダウンロードURL:
上記ページの「ダウンロード」リンクから、zipファイルをダウンロードし、任意の場所に解凍する。
解凍したフォルダを<SonarMsbuildフォルダ>と呼ぶ。

設定の変更(必要であれば)

もし、インストール中のマシンと同じマシンで SonarQube サーバが動作してない場合は、以下設定を変更する必要がある。
<SonarMSbuildフォルダ>\SonarQubeAnalysis.xml
<Property Name=”sonar.host.url”> のタグ内に記載されたURLを、localhost から、対象のSonarQubeサーバに接続できるURLに変更。

動作確認

解析対象となるプロジェクトの前後に、ダウンロードした Soner Scanner for MSBuild の実行を挟む必要がある。

コマンド実行内容

以下のように、コマンドを実行する。
cd <解析対象のルートフォルダ>
<SonarMsbuildフォルダ>\MSBuild.SonarQube.Runner.exe begin /k:"sonarqube_project_key" /n:"sonarqube_project_name" /v:"sonarqube_project_version"
"C:\Program Files\MSBuild\14.0\Bin\MSBuild.exe" <ソリューションとか>  /t:Rebuild
<SonarMsbuildフォルダ>\MSBuild.SonarQube.Runner.exe end

※MSBuild の実行部分は、各プロジェクトの内容に応じて、適切な内容に書き換える
※“begin”での呼び出しで引き渡している三つの引数は、任意の内容で良いが、必須で指定する必要がある。
それぞれの意味合いは、大まか以下の通り:
  • /n : SonarQube上でプロジェクト名として表示される
  • /v : SonarQube上でプロジェクトのバージョンとして表示される。数字以外でもOK
  • /k : プロジェクト全体で一意である必要がある、プロジェクトの識別キー。SonarQube上の管理者画面で表示される。
※気軽に解析を試せるソースコードがない場合は、SonarQube の用意したサンプルで試すのが良い:https://github.com/SonarSource/sonar-examples/archive/master.zip

結果の確認

同じマシンからであれば、以下から確認。
(別マシンからであれば、”localhost”部分を、ホスト名なりIPアドレスなりに書き換え)

ソースコードの解析結果と、プロジェクト名などに、引数で指定した値が、そのまま設定されているのが確認できる、はず。

参考:

解析の実行方法:
パラメータ:

以上。