Visual Studio は便利ですが、Rider や Resharper を考えるとまだまだよくなる余地を感じます。 そんな中で Visual Studio 2022 になって有効にしている便利な設定をメモしておきます。
tl;dr;
コード上で分析情報や型、パラメーターをインライン表示できるようになり、目線をコードから移動せずに済むので便利。
- Text Editor > C# > Advanced > Display diagnostics inline (experimental)
- Text Editor > C# > Advanced > Display inline parameter name hints
- Text Editor > C# > Advanced > Display inline type hints
きっかけ
Rider の Inlay hints がうらやましい。VS2019 のころに Rider でいいなぁと思っていたのが Inlay hints でした。1
Type name hints や Code analysis hints は、個人的に欲しいと思ってたものの Visual Studio ではどうやるのかなぁと思いつつ放置していたのでした。(やれると思ってなかった)
Visual Studio でインラインでヒントを表示する
Visual Studio 2022 では、Rider を見ててよさそうだった次の3つの設定を有効にしています。実際とてもいいので、しばらくは有効なままでやっています。
- Display diagnostics inline (experimental)
- Display inline parameter name hints
- Display inline type hints
設定前後のコード表示を見ると、得られる情報量が違っているのがわかります。
Display diagnostics inline (experimental)
この設定を有効にすると、Error List で表示されていた分析情報 が コード上にインラインで表示されます。 Error List は常に見たいですが、IDEの下は一等地なのでそればかり見るわけにもいかないのでインラインでお知らせしてくれるほうが好ましく感じます。
設定は Text Editor > C# > Advanced > Display diagnostics inline (experimental)
から行えます。
ただし欠点もあり、書いている最中でも警告を出してきます。例えば、書いている最中の、文末のセミコロンがないというのさえ警告が出てきます。この時 at the end of the line of code
にしていると、書いている最中のコードに被って何も見えなくなるので、on the right edge of the editor in window
が妥協ラインになります。ただ、画面ギリギリの時に結局かぶるのですが。
書いている最中は警告出ないか一行上とかにずれてほしいものですね。
Display inline parameter name hints
この設定を有効にすると、メソッドのパラメーター名がコード上にインラインで表示されます。
時々、メソッド引数を enableNantoka: true
のようにパラメーター名を明示して指定することがありましたが、それはこの設定で見たい情報に他なりません。設定しても今後もやるんでしょうが、コードリード上も便利で好ましく感じます。
設定は Text Editor > C# > Advanced > Display inline parameter name hints
から行えます。
気づいていなかったのですが、Visual Studio 2019 v16.8 で Display inline parameter name hints (experimental) として提供されていたんですね。
Display inline type hints
この設定を有効にすると、メソッドのパラメーターごとの型がコード上にインラインで表示されます。
var
の型表示や メソッドのパラメーターの型もうれしいのですが、特にラムダ式でパラメーターの型がインラインでわかるのは思ったより便利で好ましいです。
設定は Text Editor > C# > Advanced > Display inline type hints
から行えます。
まとめ
Visual Studio も粛々と進化しているのでいいですね。 そういえば、VS2019 で .NET 6 がサポートされていないのは悲しいと思うのでした。 .NET 6 使いたかったら VS2022 というのは、.NET にとってはネガティブインパクトが強そうですね。
- inline じゃなくて inlay なんですね↩