🤖

【Neovim】credoが入っていないプロジェクトでも静的解析結果を表示する

2022/06/25に公開

先日の記事でnull-lsを導入してcredoの結果をbufferに表示する方法を記事にしました。

https://zenn.dev/koga1020/articles/583be482690a3c

記事に書いたような基本的な設定だと、以下の条件を満たさないとうまく動作しません。

  • vimで開いているディレクトリのrootに mix.exs がある
  • 依存に credo が追加されていて、 mix credo が実行できる

これだと credo を導入していないOSSのコードを開いたり、使い捨てのexsスクリプトを書く場合にエラーが表示されてしまいます。

error image

この記事ではこのエラーの解消について解説します。

どのように解決するか

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による解析が動作しています🎉

image

まとめ

credoのescriptを使った設定についてまとめました。これで心置きなくどんなパスでも良い感じにelixirを書けます。

ちなみに解析結果がノイズになる場合は一時的に表示をon/off切り替えれるようなプラグインもあるようです。参考まで。

https://github.com/WhoIsSethDaniel/toggle-lsp-diagnostics.nvim

Discussion