環境構築
- .NET Compiler Platform SDK をインストール
- https://visualstudiogallery.msdn.microsoft.com/2ddb7240-5249-4c8c-969e-5d05823bcb89
- テンプレートと Syntax Visualizer が入る
開発
主に実装するのはこの2つ
- DiagnosticAnalyzer
- どのタイミングで解析するか
- どんな条件でどんなメッセージを出すか
- CodeFixProvider
- リファクタリング用なので任意
- コードの変換処理を実装する
- 実装すると
- アナライザーでメッセージを出したところに、light bulb を出せる
- light bulb をクリックするとプレビューや変更ができる
デバッグは、テンプレート生成後すぐに F5 でできるようになっている。 (別のプロセスでVSが立ち上がるので、なんでもいいのでプロジェクトをロードする)
- Syntax Visualizer
- View -> Other Window -> Syntax Visualizer
- 解析対象のコードをポイントするとツリーが表示される
アナライザーを適用したいコードを別のVSで開いて、Syntax Visualizer を開くと、 リアルタイムでフォーカスしたところのツリーが表示されるので、これを見ながら Analyzer を実装する。
参考資料
- .NETコンパイラープラットフォーム拡張の作り方 - Build Insider
- Roslyn拡張: Analyzerの作り方と、各メソッドの使い方 - Build Insider
- neue cc - VS2015のRoslynでCode Analyzerを自作する(ついでにUnityコードも解析する)
- .NET Analyzers · GitHub
作ってみたもの
Analyzer で Dapper のパラメーターの SQL を整形できるようにしてみた https://t.co/nOFaIPVifAhttps://t.co/tMjgmOcP1s
— essentialism (@minato128) 2016年10月8日