SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

さらに使いやすく便利になった「Visual Studio」を始めよう!(AD)

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

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

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

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

 先述のとおり、実際の開発では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は自動化テストのタイミングでコードのカバレッジを測定することもできます。

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

参考資料

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
さらに使いやすく便利になった「Visual Studio」を始めよう!連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

<個人紹介>新潟県長岡市在住の在宅リモートワークプログラマー。家事や育児、仕事の合間に長岡IT開発者勉強会(NDS)、Niigata.NET、TDDBCなどのコミュニティに関わったり、Web記事や書籍などの執筆を行ったりしている。著書に『アプリを作ろう! Visual C#入門 Visual C# 2017対応』(日経BP社、2017)など。<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8403 2015/02/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング