🤖
【Neovim】credoが入っていないプロジェクトでも静的解析結果を表示する
先日の記事でnull-lsを導入してcredoの結果をbufferに表示する方法を記事にしました。
記事に書いたような基本的な設定だと、以下の条件を満たさないとうまく動作しません。
- vimで開いているディレクトリのrootに
mix.exs
がある - 依存に
credo
が追加されていて、mix credo
が実行できる
これだと credo
を導入していないOSSのコードを開いたり、使い捨てのexsスクリプトを書く場合にエラーが表示されてしまいます。
この記事ではこのエラーの解消について解説します。
どのように解決するか
mix credo
ではなくグローバルにインストールした credo
を実行するように変更します。こうすればMixプロジェクトにcredoが入っているかどうか関係なく、任意のディレクトリでcredoの結果を利用できます。
導入
以下のコマンドでcredoの実行ファイル(escript)をインストールします。
$ mix escript.install hex credo
バージョンが確認できればインストールOKです。
$ credo version
1.6.4
あとはnull-ls側の設定を変更して、 mix credo
ではなく credo
を実行するようにします。
- null_ls.builtins.diagnostics.credo,
+ null_ls.builtins.diagnostics.credo.with({
+ command = "credo",
+ args = { "suggest", "--format", "json", "--read-from-stdin", "$FILENAME" },
+ }),
これで設定完了です。試しにphoenixのリポジトリなどcredoが入っていないプロジェクトで適当なファイルを開いてもcredoによる解析が動作しています🎉
まとめ
credoのescriptを使った設定についてまとめました。これで心置きなくどんなパスでも良い感じにelixirを書けます。
ちなみに解析結果がノイズになる場合は一時的に表示をon/off切り替えれるようなプラグインもあるようです。参考まで。
Discussion