VSCode で Steep による開発支援を受けるための拡張機能 Steep 拡張 (steep-vscode) が、先日 0.8.0 にバージョンアップしました。
Steep 拡張は、Steep を利用してさまざまな Ruby の開発支援を行う VSCode 拡張です。
主な機能としては、以下のようなものがあります。
Steep を利用している VSCode ユーザーであれば、必携の VSCode 拡張と言えるでしょう。
なお、Steep は LSP として動作するので、他のエディタでも同様の機能が利用できるはずです。
Steep 拡張の型検査は、コードを書き換えるたびに自動的に実行されるため、編集中に型検査のフィードバックを受けることができます。
たとえば
といった、Steep による型検査の結果をリアルタイムに確認できるのが特徴です。この拡張は非常に便利で、自分が書いたコードが型に適合しているかどうか、すぐにフィードバックを受けられるため、バグに気づくのが早くなります。
ただし、Steep 拡張の型検査機能にはひとつだけ注意点があります (ありました)。それは Steep 拡張と Steep の CLI である steep check
コマンドの型検査結果が異なることです。
steep check
コマンドでは、型検査の結果のうち、information レベルの指摘はフィルタされるようになっています (--severity-level
オプションで変更可能)。一方、Steep 拡張ではすべての指摘が表示されます。
そのため、 steep check
の結果と VSCode 上の表示(Steep 拡張の指摘)は異なるものとなっていました。 steep check
でエラーがないにもかかわらず、VSCode 上では大量に指摘されることも少なくありませんでした。
この問題に対し、Steep 拡張のバージョン 0.8.0 では以下の機能が導入されました。
Steep 拡張に「Hide Diagnostics」というオプションが追加されました。そして、ここにエラーレベルを指定することで、任意のレベルの指摘を無視することができるようになりました。
CLI と同じ動きにするには、Hide Diagnostics に Information を指定します。
Steep を lenient モードや strict モードで動かす場合、 steep check
では指摘がなくても、水面下では Information レベルの指摘がいくつも出ているため、Steep による型チェックを有効にする場合はこのオプションは必須と言えます。
これまでは、ひとまず型チェックは silent モードで見送り、入力支援機能をメインに利用するという方針を採っていましたが、このオプションのお陰で一歩前に進めることができそうです。
実はこの機能、かつて僕が steep 本体に修正を提案したことがきっかけで実装されたものです。
CLI と Steep 拡張の動きが違うのに気づき、Steep 本体 (LSP 自身)にも --serverity-level
オプションを追加したいという提案を送りました(langserver: Add –severity-level option)。その提案はリジェクトされたのですが、かわりに Steep 拡張に導入されたのが、先ほどの Hide Diagnostics オプションです。
ただ、この Hide Diagnostics オプションは、機能としては実装されたものの永らくリリースされることのないままでした。マージはされたものの、Marketplace 上にリリースされないため、利用できない状態が続いていました。
僕自身もこのオプションのことをすっかり忘れて、Steep 拡張での型検査を諦めていたのですが、つい先日 Steep-1.7.0.dev.1 の ignore コメントを試す という記事を書いた際にこのオプションのことを思い出し、soutaro さんにリリースしていただけないかお願いした結果、今回のリリースに繋がりました。
ということで、このオプションはワシが育てたと言っても良いのでは、と思っています。
すみません、言い過ぎですねw