- 1. 背景
- 2. EditorConfigとは
- 3. EditorConfig for VS Codeのインストール
- 4. VS CodeでOmnisharpを有効化する
- 5. ビルド時に有効とさせる
- 6. コーディングルールを設定していく
- 7. まとめ
- 8. 参考
1. 背景
いきなりですが,皆さんが業務でプログラムを書くにあたり,コーディングルールは定められていますか?
過去にはありましたが,今は使われていないですとか,ルールはないですねなど.割と思い当たる節があるのではないでしょうか?私も身に覚えがあります.
では,どう解決するべきだろうと考えた結果,EditorConfigを使用してコーディングルールを統一することにしました.タイトルでも触れている通り,言語はC#です.
2. EditorConfigとは
EditorConfigをGoogle翻訳にブチ込むと以下とあり,コーディングスタイルを統一するのにうってつけですね.
EditorConfigは、さまざまなエディターやIDEで同じプロジェクトに取り組んでいる複数の開発者に対して一貫したコーディングスタイルを維持するのに役立ちます。 EditorConfigプロジェクトは、コーディングスタイルを定義するためのファイル形式と、エディターがファイル形式を読み取って定義されたスタイルに準拠できるようにするテキストエディタープラグインのコレクションで構成されています。 EditorConfigファイルは読みやすく、バージョン管理システムでうまく機能します。
3. EditorConfig for VS Codeのインストール
EditorConfig for VS Codeをインストールします.
4. VS CodeでOmnisharpを有効化する
拡張機能のC#にはOmnisharpが搭載されているので関連設定を有効化します.VS Codeで⌘ + ,
もしくはCode→基本設定→設定からOmnisharpで検索します.以下の2項目にチェックを入れます.
- Omnisharp: Enable Editor Config Support
- Omnisharp: Enable Roslyn Analyzers
チェックを入れたら⌘ + shift + p
もしくはF1
でコマンドパレットにreloadと入力してReload Windowを選択,VS Codeの再読み込みを行います.
5. ビルド時に有効とさせる
実はこれについては設定がわからなくて少しハマりましたが,Microsoft Docsに書いてありました.目を凝らさないと見落としてしまうので気を付けなければ...
ビルド時にIDEコードスタイルのルールを有効としたいので,対象の.csproj
ファイルに以下を追加します.
<PropertyGroup> <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild> </PropertyGroup>
これで準備完了です.あとは.editorconfig
ファイルを作成して設定していきます.
6. コーディングルールを設定していく
EditorConfig for VS Codeをインストールされていると,エクスプローラー上で右クリック時にGenerate .editorconfigの項目が出るので選択します.私はプロジェクトのルートに置きました.
一部を抜粋しました.コーディングルールについてはこちらを参考に記載していきましたが,ルールの量も多いので完成への道のりはまだ遠いです.ちなみに前述のビルド有効時の設定値としてIDE0055
だけ記載しています.ルールIDは多いのでドキュメントを眺めて適宜設定しましょう.
# EditorConfig is awesome: https://EditorConfig.org # top-most EditorConfig file root = true # All files [*] indent_style = space # JSON files [*.json] indent_size = 2 # CSharp code style settings: [*.cs] indent_size = 4 end_of_line = lf charset = utf-8 trim_trailing_whitespace = false insert_final_newline = false # IDE0055: Fix formatting dotnet_diagnostic.IDE0055.severity = warning # 改行オプション csharp_new_line_before_open_brace = all csharp_new_line_before_else = true csharp_new_line_before_catch = true csharp_new_line_before_finally = true csharp_new_line_before_members_in_object_initializers = true csharp_new_line_before_members_in_anonymous_types = true csharp_new_line_between_query_expression_clauses = true # インデントオプション csharp_indent_case_contents = true csharp_indent_switch_labels = true csharp_indent_labels = flush_left csharp_indent_block_contents = true csharp_indent_braces = false csharp_indent_case_contents_when_block = true # varの設定 csharp_style_var_for_built_in_types = true:suggestion csharp_style_var_when_type_is_apparent = true:suggestion csharp_style_var_elsewhere = true:suggestion
例えばdotnet_diagnostic.IDE0055.severity = warning
に絞って見ていくと,このルールに該当した場合は以下のように警告が表示されます.
インデント,スペース,および改行が統一されていない場合はこれに該当します.この例では無駄なスペースが入っているのが原因です.このようにEditorConfigで,動作に関わらない小さなノイズも検知出来ます.
ここではwarning
としていますが,error
と記述することでビルド時のエラー対象としても扱うことが出来ます.委ねられている感じがありがたい.
7. まとめ
VS CodeでEditorConfigを使用してコーディングルールを定義する方法について書きました.今回はC#で進めましたが,もちろん他の言語にも対応しています.作成した.editorconfig
ファイルをリポジトリ管理すればチーム共有も非常に楽です.
とはいえ記載した内容では完成には程遠いので,今後も理解を深めながら進めます.C#で言うとroslynが参考になりそうでした.こういったルールはついおろそかにしてしまうので,いつでも引き出せるように事前準備が大事ですね.