BiomeのType-aware linterとMulti-file supportをちょっと眺める

Type-aware linter
前提として、型情報を必要とするルールのためにTSコンパイラを使うとしたらパフォーマンスが問題になるという話がある(TSコンパイラをRustで利用すること自体は可能なのかな、あんまり分かってない)
そこで、Biome側で型検査器を独自実装しようとしている
しかし、全て型推論できるようにするのではなくて、実装したいルールのために必要なものだけ推論できればOKみたいな方針になりそう
例えば今メインで動いているものだとnoFloatingPromises
だったり、issueで例として最初に挙げられているのはuseAwaitThenable
で、どちらもPromise周りの型が必要になるので、その部分だけ取得できるようにするみたいな形
このコメントでnoFloatingPromises
の実装方針が説明されている
https://github.com/biomejs/biome/issues/3187#issuecomment-2598344384
実装の進捗を管理しているのがこのissue
既に1つPRがnextブランチにマージされた(中枢部分はcrates/biome_js_analyze/src/lint/nursery/no_floating_promises.rs
)
手元で試してみた感じでは、今マージされたものは同じファイル内の関数を使用した場合のlintのみで、別のファイルの関数をimportして使用するとかはまだ対応されていない
これは次に書くmulti-file supportが実装されたら、他のファイルの情報も見て検知できるようになるはず
一応メモとして、手元で試す方法
Biomeのプロジェクトのルートで
cargo build --bin biome
でビルドして、いい感じのファイルを用意したプロジェクトで
/path/to/biomejs/biome/target/debug/biome lint --only=nursery/noFloatingPromises
みたいにしてビルド成果物を用いてコマンドを叩けばOK
参考

issueに書かれてないけど、型情報必要なやつだとstrict-boolean-expressions
のルールほしい
次回multi-file support読むのでメモ

Multi-file support
思ってたより実装寄りでちゃんと読めそうなところあんまりなかったので一旦パスで