Visual Studio 2017 RCのC#コードスタイル機能について

Visual Studio アドベントカレンダーの1日目です。

Visual Studio 2017ではコード編集機能が強化されていて、今までのバージョンに比べてC#のコードスタイルの設定が細かく出来るようになっているので、その紹介をします。

下図の様にオプションのテキストエディタの項目にコードスタイルの項目があります。

capture-2016_11_30_2010_12-001

各設定項目は、None, Suggest, Warning, Errorのレベルが設定できるようになっていて、Suggest以上に設定すると、ビルド時にそのレベルのメッセージが表示され、Errorであればコンパイルエラーになります。また、編集中もリアルタイムでコード分析され、コードヒント等で、設定された内容に合わせてコードをその場で修正することが出来ます。

例えば、varの使用でErrorになるように設定しておき、コード内でvarを使用すると以下のように赤いニョロ付きで該当箇所が表示され、マウスカーソルをその場所にホバーするといつものようにエラー内容が表示されます。

snapcrab_consoleapp1-microsoft-visual-studio_2016-11-30_20-36-18_no-00

一緒に表示されているコードヒント(電球のアイコン)をクリックすると以下のようにどの様に修正されるか(するべきか)表示されます。

snapcrab_noname_2016-11-30_20-40-48_no-00

varでは無く明示的な型を使用しますをクリックすると、コードが修正されます。

snapcrab_noname_2016-11-30_20-41-56_no-00

このようにただ、後からコードスタイルを静的解析できると言うだけで無く、リアルタイムで解析して、通知、修正までが行えるようになっています。

個別の設定項目

それでは個別の設定項目を見ていきます。

まず全般の項目では次の設定項目があります。

また、各書式設定はその設定でどの様にコードスタイルが変化するのかわかるようにビジュアルでも表示されます。

  • 「thisの優先」thisを使用する化しないかの設定です。
    capture-2016_11_30_2016_57-001
  • 「定義済みの方の設定」これはInt32のようなフレームワークの型名を使うかintのような言語で定義された型名を使うかの設定をします。
    capture-2016_11_30_2017_52-001
  • 「’var’を優先」これはどの様なときにvarを使うのかを設定します。デフォルトでは一切使用しません。
    capture-2016_11_30_2024_39-001
  • 「Expression preference」これは型の初期化時に初期化子を使用するかどうかの設定です。
    capture-2016_11_30_2020_36-001
  • 「Variable Preference」は変数の定義場所の指定で、関数や条件式の中でインラインで定義できるか、変数の定義は独立させるかの設定となります。
    capture-2016_11_30_2027_04-001
  • 「’null’チェック」はnullチェックの方法についての設定を行います。
    capture-2016_11_30_2030_00-001
    capture-2016_11_30_2030_11-001

書式設定の全般はほぼ今まで通りです。

capture-2016_11_30_2051_16-001

インデントの設定は以下のようになっています。

capture-2016_11_30_2053_09-001

スペースの項目は設定項目が大幅に増え、細かく設定できるようになっています。

capture-2016_11_30_2054_06-001 capture-2016_11_30_2055_17-001

改行も同様に設定項目が大幅に増えています。

capture-2016_11_30_2057_18-001

折り返しの設定項目は以下のようになっています。

capture-2016_11_30_2058_25-001

名前指定は、変数名、型名などの名前の設定ルールを指定する項目で、デフォルトの設定では以下のようになっています。

capture-2016_11_30_2100_50-001

ルールは追加削除が可能で、ダイアログ左下の+をクリックでルールを追加、ルール右側のxをクリックするとルールの削除が行えます。また各ルールの左の矢印で適応の優先度を調整できます。

また、ルール対象、スタイルそれぞれの追加削除も可能で、以下はスタイルの定義をしているところです。

capture-2016_11_30_2100_28-001

これを組み合わせると以下のように新しいルールを追加できます。

capture-2016_11_30_2105_04-001

詳細設定は以下のような項目になっています。

capture-2016_11_30_2107_13-001

保存と展開

設定したルールは、設定のインポートとエクスポートウイザードのエクスポート機能で保存できるので、これを各ユーザーに配布して、インポートしてもらいます。

capture-2016_11_30_2110_13-001

まとめ

今まで、リアルタイムでのコードスタイル分析機能と、修正機能はReSharper等の有償の拡張ツールでは実現されてきましたが、Community Editionでも使用できるVisual Studioの基本機能としてこれが実装された意義は大きいと思っています。

Stylecopの時も書きましたが、コードスタイルの確認と指摘をいちいちコードレビューで行うようなことはお互い時間の無駄でしかないので、そのようにつまらないことは、このVSの新機能やStylecopで機械にやらせ、コードレビューはもっと本質的なところに注力できるようにした方がいいです。

という事で、1日目の投稿でした。VS2017はこれ以外にもいろいろな機能強化点があるので是非試してみてください。

では、Happy Holidays!

One thought on “Visual Studio 2017 RCのC#コードスタイル機能について”

コメントを残す