SHOEISHA iD

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

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

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

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

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

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

コード分析結果への対処

 コード分析を行い、コードの問題点が明らかになったところで、今度はその修正を行っていきましょう。

指摘事項の修正

 コード分析結果では簡単なヒントは表示されますが、その指摘の詳細は分かりません。詳細を知るには、分析結果内の"CA9999"といったリンクをクリックしましょう。MSDNライブラリ内の該当ページがWebブラウザで表示されます(図6)。

図6 コード分析警告の詳細
図6 コード分析警告の詳細

 ヒントとこの詳細内容を元に、コードを実際に修正していきます。例えば、「CA1709: 識別子では、大文字と小文字が正しく区別されなければなりません」というルールで、名前空間名、クラス名、そしてメソッド名の3か所が指摘されていますので、詳細ページに表示された通り、「大文字始まりの単語区切り大文字」という、いわゆる「PascalCase」な名前に修正します(リスト2)。

リスト2 CA1709を修正したコード(Class1.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeAnalysis  // 名前空間名の修正
{
  public class SomeClass  // クラス名の修正
  {
    public void DoSomething(int count, int i)   // メソッド名の修正
    {
      var newCount = countUp(count);
    }

    private int countUp(int count)
    {
      return count + 1;
    }

    private static void UnUseMethod()
    {
    }
  }
}

 修正したら再びコード分析を実行し、CA1709の指摘がなくなったことを確認しましょう。

コード分析結果の抑制

 コード分析によって指摘された内容の中には、そのシステムの状況によっては対処する必要がないものも含まれます。こういった警告については、「抑制」することで次回以降のコード分析実行時に、その箇所が無視されるようになります。

 抑制にはソース内で直接指定する方法と、「抑制ファイル」というファイルにまとめて記述する方法の2種類があります。どちらも、ツールで自動的に行ってくれますので心配はいりません。順番にやり方を見ていきましょう。

ソース内で指定する方法

 まずはソース内での抑制です。例えばCA1704として指摘されている警告は「メソッドのパラメータ名をiではなくもっと意味のある名前に変更しろ」というものですが、場合によってはiという名前がふさわしいケースもあります。今回はそのケースに該当したとみなして抑制してみましょう。

 「コード分析」ウィンドウでCA1704を選択すると、項目の右下に「操作」というリンクが表示されるので、「メッセージの非表示」→「ソース内」を選択します(図7)。すると、該当箇所にSystem.Diagnostics.SuppressMessage属性が付けられ、抑制するルールとその対象となるモノの名前等(今回はパラメータ名i)が設定されます。

図7 ソース内での抑制指示
図7 ソース内での抑制指示
リスト3 ソース内で抑制したコード(Class1.cs)
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "i")
public void DoSomething(int count, int i)
{
  var newCount = countUp(count);
}

抑制ファイルで指定する方法

 次に抑制ファイル内での抑制です。例えばCA2210として指摘されている警告は「アセンブリに厳密名をつけるために署名しろ」という内容ですが、小さな範囲で閉じたシステムでは、そこまでしなくてもよいケースもあります。今回はそのケースに該当したとみなして抑制してみましょう。

 方法はソース内と同様で、「操作」→「抑制ファイル内」と選択するだけです(図8)。すると、プロジェクトにGlobalSuppressions.csという名前の「抑制ファイル」が作成され、ソース内と同じようにSuppressMessage属性が追加されます。

図8 抑制ファイル内での抑制指示
図8 抑制ファイル内での抑制指示
リスト4 抑制ファイル内で抑制したコード(GlobalSuppressions.cs)
// このファイルは、このプロジェクトに適用される SuppressMessage 
//属性を保持するために、コード分析によって使用されます。
// プロジェクト レベルの抑制には、ターゲットがないものと、特定のターゲット
//が指定され、名前空間、型、メンバーなどをスコープとするものがあります。
//
// このファイルに抑制を追加するには、[コード分析] の結果でメッセージを 
// 右クリックし、[メッセージの非表示] をポイントして、
// [抑制ファイル内] をクリックします。
// このファイルに手動で抑制を追加する必要はありません。

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]

 抑制した状態でコード分析を行い、指摘されなくなっていることを確認しましょう。なお、抑制を解除するには、該当するSuppressMessage属性を削除してください。

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

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

  • このエントリーをはてなブックマークに追加
さらに使いやすく便利になった「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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング