ルールセットのカスタマイズ
先述のとおり、実際の開発ではVisual Studioに標準で搭載された分析ルールは厳しい、もしくはやさし過ぎてあまり有用でないことがあります。そこで、分析ルールをカスタマイズし、開発の状況にふさわしい状態でコード分析を行うのがよいでしょう。
分析ルールをカスタマイズするには、先述のとおり「ルールセット」を変更します。まず、プロジェクトのプロパティページを開き、コード分析を選択します。次に「ルール セット」→「この規則セットを実行」の隣の「開く」ボタンをクリックし、ルールセットの編集画面を表示します(図9)。このとき、最も厳しいルールセットである「Microsoft のすべての規則」を元にして、不要なルールを除外していくようにするのがよいでしょう。
ルールセットを開いたら、不要なルールのチェックを外していきましょう。今回は「CA1014 アセンブリに CLSCompliantAttribute を設定します」を除外してみます(図10)。
ルールセットのカスタマイズが終わったら、ファイルを保存します。ただ、元となる「Microsoft のすべての規則(AllRules.ruleset)」ファイルは読み取り専用のため、新たに別名で保存することになります。今回はプロジェクトフォルダー内に「MyRules.ruleset」ファイルとして保存しましょう。
その後、プロジェクトのプロパティページから、今ほど保存したルールセットファイルを「参照」で開きます。そして、再びコード分析を実行すると、先ほど除外したCA1014について指摘されなくなることが確認できます(図11)。
なお、カスタマイズしたルールセットには、プロパティウィンドウで「名前」を編集し、分かりやすい名前を付けるとよいでしょう。
チームでコード分析活用
最後に、チームでコード分析を活用する際のテクニックを2つ紹介しておきます。
ビルド時に実行する
せっかくのコード分析ですが、手動で実行するだけだとメンバーによってはコード分析を行ってくれないこともあるでしょうし、何かの手違いで実行されないこともあるでしょう。そんなときは、ビルド時に一緒にコード分析を行わせるようにもできます。
プロジェクトのプロパティページを開き、「ビルドに対するコード分析の有効化」にチェックを入れて保存します(図12)。こうするだけで、ビルド時に自動的にコード分析も行われるようになります。
ただし、コード分析はそれなりに時間もかかるため、ビルドをするごとに毎回実行すると、快適な開発のリズムを崩す恐れもあり、その使用には注意が必要です。
それでもビルド時の自動実行には魅力があります。開発環境ではなくCIツールによる継続ビルドなどのタイミングでコード分析を行うだけでも効果はあるでしょう。そのためには、MSBuildでビルドする際、RunCodeAnalysisプロパティにtrueを設定して実行すればよいです(図13)。
msbuild /t:Rebuild /p:RunCodeAnalysis=true CodeAnalysisDemo.sln
NuGetを使ったルールセットの共有
チーム用にカスタマイズしたルールセットファイルを用意しても、そのルールセットを使ってもらうためには、それぞれのプロジェクトのプロパティで設定する必要があります。また、ルールセットを改版したら、そのたびに新しいルールセットファイルを配布する必要もあり、手間がかかります。
そんなときは、NuGetを使ってカスタマイズしたルールセットファイルの配布とプロジェクトへの設定を行うのがおすすめです。開発しているシステム用のプロジェクト テンプレートも用意して、そのテンプレートでルールセットのNuGetパッケージを使うようにしておけば、設定の漏れもありません。
そして、ルールを改版したときは、新たなバージョンのNuGetパッケージを配置すれば、あとは各メンバーにNuGetパッケージをアップデートしてもらうだけで配布が完了します。また、NuGetのコマンドラインツールを使えば、一括でアップデートすることもできるでしょう。
紙面の都合上、詳しくはその方法を紹介できませんが、次のGitHubリポジトリで公開しているので、興味があれば参照して試してみてください。
まとめ
コード分析機能を使うことで、ある程度のコードの不備は機械的に検出することができることが分かったと思います。今回はガイドラインに沿っているかどうかをチェックする機能のみ紹介しましたが、Visual Studioに用意された分析機能は他にも「パフォーマンス計測」「プロファイラー(メモリ使用率などの計測)」「コードメトリクス計算(コードの「分かりやすさ」などの計算)」、といったものがあります。
どれもうまく使えばコードの品質を向上するのに役立つ機能です。また、上位エディションのVisual Studioは自動化テストのタイミングでコードのカバレッジを測定することもできます。
人間がより生産的な作業に注力するためにも、こういった機械的なチェックを行うツールをぜひ活用してみてください。