2016年9月4日日曜日

SonarLint for Visual Studio で、実装中にコード解析結果を確認

概要

SonarQubeと同じルールで、VisualStudio上でソースファイルのルール違反部分をその場で表示できるようになる。

参考

  • Visual Studio 上で、SonarQube サーバと連携方法
  • SonarLint ルール一覧

導入手順

Plugin のダウンロードURL

Download ボタンをクリックして、ダウンロードしたファイルを実行で、インストール。
使用を開始するにあたって、Visual Studio 側では、特に設定は必要ない。

簡単な機能説明

Sonarlint をインストールした後に怪しげなコードを打ち込むと、エラー一覧に、SonarLintのルールに則った警告が出てくるようになる。

怪しげなコードのサンプル:

using System.IO;

namespace SimpleClassLibrary
{
   public class SimpleExampleClass
   {
       private TextReader reader;

       public SimpleExampleClass()
       {
           this.reader = new StreamReader("some path");
           Initialize();

       }

       private void Initialize()
       {
       }

       public string SomeRead()
       {
           string someStr = "someValue";
           string retVal = reader.ReadLine();
           return retVal;
       }
   }
}
出てきた警告:
※上のエラー一覧で、”S”から始まるコードを持つ警告が、Sonarlintが出力している警告。
青い字のコードをクリックすると、内容の説明と、一般的な修正方法を説明したSonarLintのページに飛ぶ。

ルールの有効化/無効化

プロジェクトのRefences > Analyzer を右クリックし、「Open Active Rule Set」をクリック

開かれたダイアログの「SonarAnalyzer.CSharp」の配下に、SonarLintでチェックしているルールがぞろっと出てくるので、左側のチェックボックスで、有効/無効を切り替える。

なお、設定を変更すると、RuleSetファイルが自動的に作成される。

SonarQube サーバとの接続

もし、SonarQube サーバを別に構築済であれば、SonarQubeサーバと接続して、解析するルールの内容を、SonarQubeサーバ側と同期することが出来る。

  1. トップメニューの Analize > SonarQube Connection をクリック

  1. チームエクスプローラにSonarQube が表示されるので、connect をクリック

  1. SonarQube ServerのURL、ユーザー名、パスワードを入力の上、「Connect」をクリック
※特にユーザ、パスワードを設定していない場合には、Server のURLだけで問題なし。
「SonarQube server:」には、SonarQube の画面を開く際に普通にアクセスしているURLを入力すればよい

  1. SonarQube のプロジェクト一覧が表示される

  1. 現在のソリューションに対応するプロジェクトを右クリックし、「Bind」をクリック
これで、ソリューションに必要なファイルが追加される。

定義の更新:

サーバのルールなどを取り込みなおしたい合には、TeamExploerを開き、プロジェクトを右クリック して、 Update を選択すると、サーバから設定を取り込みなおせる:



SonarLintを利用すれば、実装中に、ソースコードの品質を開発者がより確認しやすくなる。
SonarQube 上への品質情報の保存と共に利用すれば、チーム全体の品質に対する意識が大きく向上できる気がする。
個人で作業する場合でも、うっかりしたミスを減らせるので、ありがたい存在である。


蛇足メモ:サーバ接続時のトラブル

SonarQube サーバへの接続時、自環境では、うまく動かないことがあった。
SonarAnalizer.CSharp のバージョンが古い? か、上手くインストールできていなかった?ようなので、Package Manager コンソールで、以下コマンドを実行して、SonarAnalyzerを入れなおしたら、上手く動くようになった。
コマンド:
Install-Package SonarAnalyzer.CSharp


以上。