概要
Unityで個人製作中にVSCodeを利用してコードを書いているとき、共同作業者でC#コードフォーマットを共有するための方法をどうすれば良いか気になったので調べました。
今回はフォーマット設定ファイル(omnisharp.json)をGitでバージョン管理するところまで
(Mac環境です)
スペース、タブの可視化
よくあるフォーマット宗教としてスペースorタブ問題があると思います
- タブをスペースとして変換するのか
- タブをそのままタブとして利用するのか
とりあえず、コード開いた時にスペースなのかタブなのか一発で分かるように可視化します
Cmt + ,
から Settings をひらき、 whitespace で検索。
Render Whitespace
を none から boundary(境界) に変更します
これで変数やメソッド間の空白以外の場所に ...(空白)
or → (タブ)
が表示されます
他にも設定ありますがこれが一番じゃまにならずに使いやすいと思います
C#のフォーマット設定は omnisharp.json を見るようにする
プロジェクトで同じフォーマット設定を利用するために omnisharp.json
にフォーマット設定を記述します。
まず、settings.json を編集します。
Settingsの右上の赤丸内のアイコンを押して json直接編集モード
jsonに追記
{
...
"[csharp]": {
"editor.defaultFormatter": "ms-dotnettools.csharp"
},
"omnisharp.useEditorFormattingSettings": false,
}
- C#コードではデフォルトのフォーマットは ms-dotnettools.csharp を利用する
- useEditorFormattingSettigsはfalseにしてVSCodeのフォーマット設定は利用しない
そしてプロジェクト直下に omnisharp.json ファイルを作成し、フォーマット設定を記述。
{
"FormattingOptions": {
"newLine": "\n",
"useTabs": true
}
}
これはタブをそのままタブとして利用する場合の設定です!
もしタブをスペースにする場合は以下でしょうか
{
"FormattingOptions": {
"newLine": "\n",
"useTabs": false,
"TabSize": 4,
}
}
これで保存してVSCodeを再起動します
再起動後、読み込み完了まで少し待機...
フォーマット変更したいファイルを開いた状態で Alt+Shift+F
を押して全体にフォーマットかけ直したら無事に変更されるようになりました。
後はこの omnisharp.json
をコミットしバージョン管理すれば他の共同開発者も同じ設定が適用されるようになります。 終わり
最後に
基本はデフォルトが良いと思っており、その他のフォーマットは特に触っていません。
その他設定や、omnisharpの構成ファイル読み込み優先順位等の解説は以下のブログに詳しく書いてくれています