LoginSignup
7
3

More than 3 years have passed since last update.

omnisharp.json を利用してVSCodeのC#フォーマットをプロジェクトで統一する

Last updated at Posted at 2021-04-04

概要

Unityで個人製作中にVSCodeを利用してコードを書いているとき、共同作業者でC#コードフォーマットを共有するための方法をどうすれば良いか気になったので調べました。

今回はフォーマット設定ファイル(omnisharp.json)をGitでバージョン管理するところまで
(Mac環境です)

スペース、タブの可視化

よくあるフォーマット宗教としてスペースorタブ問題があると思います

  • タブをスペースとして変換するのか
  • タブをそのままタブとして利用するのか

とりあえず、コード開いた時にスペースなのかタブなのか一発で分かるように可視化します

Cmt + , から Settings をひらき、 whitespace で検索。
Render Whitespace を none から boundary(境界) に変更します

20210404140238.png

これで変数やメソッド間の空白以外の場所に ...(空白) or → (タブ) が表示されます

20210404141236.png

他にも設定ありますがこれが一番じゃまにならずに使いやすいと思います

C#のフォーマット設定は omnisharp.json を見るようにする

プロジェクトで同じフォーマット設定を利用するために omnisharp.json にフォーマット設定を記述します。

まず、settings.json を編集します。
Settingsの右上の赤丸内のアイコンを押して json直接編集モード

20210404141353.png

jsonに追記

{
...
    "[csharp]": {
        "editor.defaultFormatter": "ms-dotnettools.csharp"
    },
    "omnisharp.useEditorFormattingSettings": false,
}
  1. C#コードではデフォルトのフォーマットは ms-dotnettools.csharp を利用する
  2. useEditorFormattingSettigsはfalseにしてVSCodeのフォーマット設定は利用しない

そしてプロジェクト直下に omnisharp.json ファイルを作成し、フォーマット設定を記述。

{
    "FormattingOptions": {
      "newLine": "\n",
      "useTabs": true
  }
}

これはタブをそのままタブとして利用する場合の設定です!

もしタブをスペースにする場合は以下でしょうか

{
    "FormattingOptions": {
      "newLine": "\n",
      "useTabs": false,
      "TabSize": 4,
  }
}

これで保存してVSCodeを再起動します
再起動後、読み込み完了まで少し待機...

フォーマット変更したいファイルを開いた状態で Alt+Shift+F を押して全体にフォーマットかけ直したら無事に変更されるようになりました。

後はこの omnisharp.json をコミットしバージョン管理すれば他の共同開発者も同じ設定が適用されるようになります。 終わり

最後に

基本はデフォルトが良いと思っており、その他のフォーマットは特に触っていません。

その他設定や、omnisharpの構成ファイル読み込み優先順位等の解説は以下のブログに詳しく書いてくれています

7
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3