NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

StyleCop (C#のコードスタイルチェック)

このページではC#のコード整形ツールであるStyleCopに関する説明を公開します。

StyelCopとは

StyleCopは、C#のコーディング内容をチェックするオープンソースのツールです。インストーラを使用してセットアップすることができます。

f:id:ns_yamaki:20210629112906j:plain

もともとMicrosoftの内部にて使用されていたツールでしたが、2008年にMSDN Code(MSDN Archive)にて無償公開され、2010年にCodePlexにてオープンソース公開されました。

StyleCopの特長

StyleCopではC#のコードにおいて、以下のような内容をチェックすることができます。

  • ヘッダーの設定
  • 命令やクエリ句の書き方
  • 行間の空行の数
  • フィールド、変数、メソッド等の命名規約
  • 括弧の配置、記法
  • キーワードや括弧前後のスペース
  • クラス内の順序(Public→Protectedなど)
  • 使用する型やクラスの指定(Stringでなくstring、””ではなくString.Empty等)
  • チェックした結果、「エラー一覧」ウィンドウの警告として表示されます。

チェックした結果、「エラー一覧」ウィンドウの警告として表示されます。

f:id:ns_yamaki:20210629115346j:plain

日本語化について

StyleCopは便利なツールですが、メッセージは英語となります。チームに展開する際、英語では敷居が高いため、日本語メッセージが表示されることが望ましいでしょう。その場合は、有志によって作られたStyleCopの日本語版を利用します。
日本語StyleCopはSourceforgeのページから入手することができます。セットアップ方法はReadmeに従ってください。StyleCopの制約上、英語版StyleCop 4.4.0.9(プロパティ上のバージョンはMicrosoft StyleCop 4.4.0.14で問題なし)をインストールした後で、日本語版をビルドして、アセンブリを入れ替える必要があります。この設定も、それなりに手間がかかりますので、注意してください。また、CodePlexの最新版は新しいバージョンが出ていますが、その最新版を使用せず、4.4を使用することとなります。
[追記] 残念ながら、現在、CodePlexでは4.4の安定板が公開されていないので、以下に置いておきます。必要に応じてダウンロードしてください。
StyleCop4.4.0.9
▲ZIP形式、Ms-PLライセンス

Visual Studio Express Editionでの使用について

StyleCopはVisual Studioのすべてのエディションで使用することができます。Express以外のエディションでは、StyleCop用のメニューがVSで表示されます。ショートカットキー(CTL+SHIFT+Y)も用意されるので、プログラミング作業に組み込みやすいと言えます。
これに対してExpress Edtionの場合、アドオンが許可されていないため、ビルドプロセス(MsBuild)と統合する必要があります。ビルド時に自動でStyleCopのチェックが実施できるので便利ですが、プロジェクトファイル(csprojファイル)に「<Import Project=”$(ProgramFiles)\MSBuild\Microsoft\StyleCop\v4.4\Microsoft.StyleCop.targets” />」のように記述する必要があります。もしバージョンが違ったり、StyleCopをインストールしていない環境ではビルドそのものが失敗してしまうという問題があります。そのため、Express Editionを使った開発で、StyleCopを導入する時は環境の統一に注意したほうが良いでしょう。
環境の統一が難しい場合は、CIサーバー(Jenkins等)にStyleCopを用意して、そちらでチェックするほうが良い場合もあります。

FxCopとの相違

似たツールとして、FxCopが存在します。FxCopはコンパイルされた後のアセンブリに対してチェックを行います。つまり、FxCopは、ILレベルでのルールチェック確認はできますが、コンパイル前の細かい規約についてのチェックはできません。デザインガイドに基づいた言語に依存しないアセンブリチェックを行う点では便利ですが、C#におけるコーディング規約をチェックする上では、StyleCopのほうが適していると言えます。

ルールのカスタマイズと設定サンプル

StyleCopでは数多くのチェックがありますが、その多さゆえ、細かいチェックも含まれています。そこで、ある程度緩く設定したStyleCopの設定ファイルを置いておきます。よろしければ、以下からダウンロードしてください。

Settings(Settings.zip)

解凍したファイル(Setting.StyleCop)をプロジェクトフォルダ、もしくはソリューションフォルダに配置すると有効になります。基本的に親フォルダの設定が最初に適用され、子フォルダに配置した設定で上書きがされます。そのためソリューションフォルダに共通の設定を、プロジェクトフォルダで個別の設定を行います。
プロジェクトの有効、無効の設定を行うには、インストーラで用意されるWindowsアプリケーションを起動します。StyleCop拡張子に関連付されているので、通常はダブルクリックすれば設定用アプリケーション(Microsoft StyleCop Project Settings)立ち上がってきます。

f:id:ns_yamaki:20210629120119j:plain

太字になっている部分が、標準から変更(チェックを入れたり、外したり)したルールとなります。親フォルダの設定を継承している場合は、親の設定との相違箇所が太字で表示されます。なお別のタブでは、設定ファイルのマージ方法や、命名規約に関する設定を行うことができます。
また、独自のスタイル用ルールを作ることもできます。その場合は、特定のルールにのっとったチェック用にアセンブリを作成して、StyleCopのフォルダに入れることとなります。