結論から言うと
今はできませんが、動くものを開発中です
StyleCop.Analyzers とは
RoslynベースのC#のコードに対する静的解析ツールです。
コーディング規約に違反していないかをチェック/修正まで行ってくれます
.NET Core/Roslyn などと同じくOSSとして公開されています
StyleCop.Analyzers
使用方法
VisualStudio/Rider などの統合開発環境を使用している場合は容易に使用できます
導入方法は VisualStudioであれば、NuGet Package Manager
などから導入可能です
残念ながらVS Codeはサポートされていません
CLIで動かす同期
CIやgit commit hookなどでチェックしたいからです
その他に筆者はVS Code派なので...
特にコーディング規約に関わることはレビューで指摘するのは不毛ですので、
出来る限りPull/Merge Requestなどが上がった時点で自動的にチェックしたいという思いがあります
CLIで動くStyleCopのツール郡は存在している
StyleCop.Analyzersの前身プロジェクトで、StyleCopというものがあります
StyleCop
StyyleCop自身はCLIで動作し、静的解析としては必要十分な条件を満たしています
ただし、既に死んでいるプロジェクトです
StyleCop.Analyzersは開発が続けられており、新しいルールなども追加されています
また、StyleCopにはコードを修正する機能はありませんが、StyleCop.Analyzersにはあります
StyleCop.AnalyzersのCLIツールはあるのか
現時点ではありません
ただし、以下のようなIssuも上がっており、そのうち正式にサポートされるかもしれません
CLI?
ですが、いつ実装されるかもわからないものを待つのは辛いです
何度かトライして諦めていた
実は結構前からトライしていたのですが、StyleCop.Analzyersをビルドするために .NET Framework
が必要でした
.NET FramworkはWindowsしかサポートしておらず、Mac/LinuxではStyleCop.Analyzersと依存しているライブラリ群をビルドしようとするとエラーとなり諦めていましたが、ようやく周辺環境も整ってきてビルドできるようになりました
Microsoft.Build.Locator
はβ版ではありますが使用できます
なので作ってみた (まだ出来上がっていない)
進捗率は50%程度ですが、以下のように出力することができました
試しに解析してみたのは、gRPCのC#のソースコードです
dotnet StyleCopAnalyzersCmd.dll -d ./grpc/src/csharp
というようなコマンドで使えるようにしたいなと思ってますが、コマンド名がダサいので何か良い案があれば...
余談
まだチェックだけで、コードの修正までは出来ていませんが、チェック処理がある程度ものになった時点で公開したいと思います
CLIツールを作るのに、CySharpさんのMicroBatchFrameworkが非常に便利です
GitHubに公開する際にはこのツールを作るための苦労話なども記載しないと思います
StyleCop.Analyzersの機能の全てがinternalで容易にアクセスできないのが非常に辛い。。。