CodeZine(コードジン)

特集ページ一覧

Visual Studioのコード分析機能を利用してコードの品質を上げよう

さらに使いやすく便利になった「Visual Studio」を始めよう! 第4回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/02/05 14:00
目次

ルールセットのカスタマイズ

 先述のとおり、実際の開発ではVisual Studioに標準で搭載された分析ルールは厳しい、もしくはやさし過ぎてあまり有用でないことがあります。そこで、分析ルールをカスタマイズし、開発の状況にふさわしい状態でコード分析を行うのがよいでしょう。

 分析ルールをカスタマイズするには、先述のとおり「ルールセット」を変更します。まず、プロジェクトのプロパティページを開き、コード分析を選択します。次に「ルール セット」→「この規則セットを実行」の隣の「開く」ボタンをクリックし、ルールセットの編集画面を表示します(図9)。このとき、最も厳しいルールセットである「Microsoft のすべての規則」を元にして、不要なルールを除外していくようにするのがよいでしょう。

図9 ルールセットの編集画面
図9 ルールセットの編集画面

 ルールセットを開いたら、不要なルールのチェックを外していきましょう。今回は「CA1014 アセンブリに CLSCompliantAttribute を設定します」を除外してみます(図10)。

図10 CA1014を除外
図10 CA1014を除外

 ルールセットのカスタマイズが終わったら、ファイルを保存します。ただ、元となる「Microsoft のすべての規則(AllRules.ruleset)」ファイルは読み取り専用のため、新たに別名で保存することになります。今回はプロジェクトフォルダー内に「MyRules.ruleset」ファイルとして保存しましょう。

 その後、プロジェクトのプロパティページから、今ほど保存したルールセットファイルを「参照」で開きます。そして、再びコード分析を実行すると、先ほど除外したCA1014について指摘されなくなることが確認できます(図11)。

図11 カスタムルールセットの実行結果
図11 カスタムルールセットの実行結果

 なお、カスタマイズしたルールセットには、プロパティウィンドウで「名前」を編集し、分かりやすい名前を付けるとよいでしょう。

チームでコード分析活用

 最後に、チームでコード分析を活用する際のテクニックを2つ紹介しておきます。

ビルド時に実行する

 せっかくのコード分析ですが、手動で実行するだけだとメンバーによってはコード分析を行ってくれないこともあるでしょうし、何かの手違いで実行されないこともあるでしょう。そんなときは、ビルド時に一緒にコード分析を行わせるようにもできます。

 プロジェクトのプロパティページを開き、「ビルドに対するコード分析の有効化」にチェックを入れて保存します(図12)。こうするだけで、ビルド時に自動的にコード分析も行われるようになります。

図12 コード分析のビルド時自動実行設定
図12 コード分析のビルド時自動実行設定

 ただし、コード分析はそれなりに時間もかかるため、ビルドをするごとに毎回実行すると、快適な開発のリズムを崩す恐れもあり、その使用には注意が必要です。

 それでもビルド時の自動実行には魅力があります。開発環境ではなくCIツールによる継続ビルドなどのタイミングでコード分析を行うだけでも効果はあるでしょう。そのためには、MSBuildでビルドする際、RunCodeAnalysisプロパティにtrueを設定して実行すればよいです(図13)。

msbuild /t:Rebuild /p:RunCodeAnalysis=true CodeAnalysisDemo.sln
図13 MSBuildによるコード分析の実行結果
図13 MSBuildによるコード分析の実行結果

NuGetを使ったルールセットの共有

 チーム用にカスタマイズしたルールセットファイルを用意しても、そのルールセットを使ってもらうためには、それぞれのプロジェクトのプロパティで設定する必要があります。また、ルールセットを改版したら、そのたびに新しいルールセットファイルを配布する必要もあり、手間がかかります。

 そんなときは、NuGetを使ってカスタマイズしたルールセットファイルの配布とプロジェクトへの設定を行うのがおすすめです。開発しているシステム用のプロジェクト テンプレートも用意して、そのテンプレートでルールセットのNuGetパッケージを使うようにしておけば、設定の漏れもありません。

 そして、ルールを改版したときは、新たなバージョンのNuGetパッケージを配置すれば、あとは各メンバーにNuGetパッケージをアップデートしてもらうだけで配布が完了します。また、NuGetのコマンドラインツールを使えば、一括でアップデートすることもできるでしょう。

 紙面の都合上、詳しくはその方法を紹介できませんが、次のGitHubリポジトリで公開しているので、興味があれば参照して試してみてください。

まとめ

 コード分析機能を使うことで、ある程度のコードの不備は機械的に検出することができることが分かったと思います。今回はガイドラインに沿っているかどうかをチェックする機能のみ紹介しましたが、Visual Studioに用意された分析機能は他にも「パフォーマンス計測」「プロファイラー(メモリ使用率などの計測)」「コードメトリクス計算(コードの「分かりやすさ」などの計算)」、といったものがあります。

 どれもうまく使えばコードの品質を向上するのに役立つ機能です。また、上位エディションのVisual Studioは自動化テストのタイミングでコードのカバレッジを測定することもできます。

 人間がより生産的な作業に注力するためにも、こういった機械的なチェックを行うツールをぜひ活用してみてください。

参考資料



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:さらに使いやすく便利になった「Visual Studio」を始めよう!

著者プロフィール

  • WINGSプロジェクト 高野 将(タカノ ショウ)

    <個人紹介> 新潟県長岡市在住の在宅リモートワークプログラマー。家事や育児、仕事の合間に長岡IT開発者勉強会(NDS)、Niigata.NET、TDDBCなどのコミュニティに関わったり、Web記事や書籍などの執筆を行ったりしている。著書に『アプリを作ろう! Visual C#入門 Visual C...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5