コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【ReSharper】Jenkins と ReSharper を使用して静的解析を行う方法

はじめに

「ReSharper Command Line Tools」を使用することで
コマンドラインから ReSharper による静的解析を実行できるようになります

この記事では、Jenkins から「ReSharper Command Line Tools」を呼び出して
静的解析を行う方法を紹介していきます

目次

検証環境

  • Windows 10
  • Visual Studio 2017 Community
  • ReSharper Command Line Tool 2019.1.1
  • Jenkins 2.164.1

インストール

上記のページから「ReSharper Command Line Tools」をダウンロードして
ダウンロードした .zip を展開しておきます

コマンドラインから実行してみる

Jenkins から実行する前に、試しにコマンドラインから実行してみます
ここでは、ダウンロードした .zip をデスクトップに展開しており、

public class Example
{
    public int    Id   { get; } = 25;
    public string Name { get; } = "ピカチュウ";
}

なおかつ、上記のソースコードのみを持ち、
デスクトップに存在するコンソールアプリケーションを
ReSharper で静的解析する想定で話を進めていきます

"C:\Users\【ユーザー名】\Desktop\JetBrains.ReSharper.CommandLineTools.2019.1.1\inspectcode.exe" ^
    "C:\Users\【ユーザー名】\Desktop\ConsoleApp1\ConsoleApp1.sln" ^
    -f="Html" ^
    -o="results.html" 

上記のようなコマンドをコマンドラインで実行すると
「C:\Users\【ユーザー名】」フォルダに「results.html」が出力されます

f:id:baba_s:20191205093324p:plain

「results.html」を開くことで、上記のような静的解析の結果を閲覧できます
例えば、Example クラスが使用されていない、といったことが確認できます
以上がコマンドラインから実行する方法になります

Jenkins から実行してみる

ReSharper による静的解析をコマンドラインから実行できることが確認できたので
あとは、そのコマンドを Jenkins から実行するようにするだけで完了ですが、
静的解析の結果を Jenkins 上で閲覧できるようにするための設定も進めていきます

f:id:baba_s:20191205093714p:plain

Jenkins に「Warnings Next Generation Plugin」プラグインを追加します

f:id:baba_s:20191205093550p:plain

次に、Jenkins で新規のジョブを作成して、「ビルド手順の追加」から
「Windowsバッチコマンドの実行」を選択して、

"C:\Users\【ユーザー名】\Desktop\JetBrains.ReSharper.CommandLineTools.2019.1.1\inspectcode.exe" ^
    "C:\Users\【ユーザー名】\Desktop\ConsoleApp1\ConsoleApp1.sln" ^
    -o="results.xml" 

上記のコマンドを入力します

先ほど、コマンドラインから実行した時は、
出力ファイルの拡張子を「.html」にしていましたが、
今回は、Jenkins に解析してもらう必要があるため「.xml」で出力するようにしています

f:id:baba_s:20191205093558p:plain

そして、「ビルド後の処理の追加」から
「Record compiler warnings and static analysis results」を選択して
「Tool」は「Resharper InspectCode」に変更し、
「Report File Pattern」に「results.xml」と入力します

以上でジョブの設定が完了したので、これでジョブをビルドしてみます

f:id:baba_s:20191205093604p:plain

ビルドに成功すると、ジョブの設定画面に
「Resharper InspectCode Warnings」が追加されます
この「Resharper InspectCode Warnings」を選択すると

f:id:baba_s:20191205093610p:plain

ReSharper による静的解析の結果を閲覧できます

f:id:baba_s:20191205093616p:plain

例えば、Example クラスが使用されていない、といったことが確認できます
以上が Jenkins から実行する方法になります

おまけ

ReSharper Command Line Tools のオプション

ReSharper Command Line Tools では上記のオプションが使用できます

設定ファイルを指定

"C:\Users\【ユーザー名】\Desktop\JetBrains.ReSharper.CommandLineTools.2019.1.1\inspectcode.exe" ^
    "C:\Users\【ユーザー名】\Desktop\ConsoleApp1\ConsoleApp1.sln" ^
    -o="results.xml"
    -p="C:\Users\【ユーザー名】\Desktop\ConsoleApp1\ConsoleApp1.sln.DotSettings"

-p オプションで ReSharper の設定ファイルを指定することができます

参考サイト様

http://d.hatena.ne.jp/machi_pon/20160111/1452498502

Code inspection on build server using ReSharper Command Line Tools

関連記事