前回からの続き
StyleCop.AnalyzersをCLIで動かせるツールを.NET Coreで作った
こちらでコードスタイルをチェックするツールを実装しました
その続きで、コードスタイルに引っかかったコードを整形するまで行えるようにしました
リポジトリ
使用方法
dotnet StyleCopAnalyzers.CLI.dll fix ./Sandbox
このような感じで実行できます。
その他の細かいオプションなどについては、コマンドのヘルプに用意してあります
14:25:44 StyleCopAnalyzers.CLI $ dotnet ./tools/bin/style/StyleCopAnalyzers.CLI.dll fix --help
StyleCopAnalyzers.CLI 0.5.0
Copyright (C) 2019 StyleCopAnalyzers.CLI
-r, --ruleset Ruleset file path.
-j, --json stylecop.json file path
-v, --verbose verbose mode. output execution detail log.
--help Display this help screen.
--version Display version information.
sln/csproj file path or directory path (pos. 0)
コード整形を行わずチェックスだけのオプションも用意してあります
dotnet StyleCopAnalyzers.CLI.dll check ./Sandbox
動作gif
実行するとこのような感じでコードを整形する処理が実行されます
差分がどうなっているか
コード自体はあまり意味のないものですが、実行すると以下のようにルールに違反しているコードを整形してくれます
実行したのはStyleCop.Analyzersのデフォルトルールですので、コメントの追加までやってくれています
課題
とにかく実行速度が遅い
遅い理由は、ルール一つを整形する度に対象のコードを再読込する必要があるためです(StyleCop.Analyzersの制限でこうするしかない)
commit-hookなどで実行するには致命的な遅さなので、commitする差分だけをツールに渡せるように改良しようと思ってます
全てのルールの修正できるわけではない
これは、StyleCop.Analyzersにその機能がないものもありますが、全てのルール修正の挙動を追いきれていません
今後対応していきます
今後の追加予定
ルールを一つずつ実行できるようにしたいと思っています
一括で全て修正してしまうと、想定していない修正が入ることになるので、一つずつ確認できるようにしたら便利かなと
Unityプロジェクトの場合は、SerializeField
の変数名なんかを変えてしまうと、Prefabなどの参照が全て外れて阿鼻叫喚となる場合も...
余談
ImmutableArrayが素敵なので他のプロジェクトでも活用していきたい
これも後ほどまとめます
ちなみに、Visual StudioやRiderを使えばこれと同じ処理をEditorでやってくれます
作った理由は個人的にCLIでのツールがどうしても欲しかったというのがあります