LoginSignup
9
6

More than 3 years have passed since last update.

Clojure開発環境でのリンターclj-kondo, Joker設定まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), Vim (vim-iced)

Last updated at Posted at 2020-07-26

お好みのエディタ/IDEにClojure開発環境を用意したら、ぜひリアルタイムでチェックが走るClojureのリンターを設定しましょう。

バグの疑いのあるコードやコミュニティの標準的なイディオムから外れたコードなどに素早く気づくことができて非常に便利です。

エディタ/IDEとプラグインによってサポート状況に差がありますが、以下の2種類のリンターを準備し、動作するように設定します。

  • clj-kondo: GraalVMでネイティブコンパイルされたClojureリンター
  • Joker: Go言語製のClojureリンター(Clojureのサブセットに対するインタプリタとしても使える)

両者は機能的に重なる部分もありますが、カバー範囲が異なるため可能であれば両方とも設定しておくと便利です。

本記事ではClojure開発環境での基本操作まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), Vim (vim-iced), rebel-readlineと同様に2020年時点でClojurianに特に人気のエディタ/IDEでの設定方法に絞って紹介します。

他のエディタ/IDEをご利用の方は各ツールのサポート状況と設定方法をご確認ください。

共通: clj-kondoとJokerのインストール

macOSの場合、Homebrewでインストールするのが簡単です。

$ brew install borkdude/brew/clj-kondo candid82/brew/joker

特にclj-kondoは非常に活発に機能追加が行われているので、こまめに最新化すると良いでしょう。

Spacemacs + Clojure layerの場合

Clojure layer (developブランチ)のEnabling Automatic Lintingを参考に、~/.spacemacs のClojure layerに対する設定でclj-kondoとJokerをリンターとして有効化します。

~/.spacemacs
(defun dotspacemacs/layers ()
  (setq-default
   ...
   dotspacemacs-configuration-layers
   '(...
     (clojure :variables
              clojure-enable-linters '(clj-kondo joker))
    )
   ...))

動作例:

image.png

IntelliJ IDEA + Cursiveの場合

clj-kondoのEditor integration > IntelliJ IDEA > File Watchers + installed binaryを参考に、clj-kondoとJokerが動作するように設定します。

  • 1. (Ultimate Editionでない場合) File Watchersプラグインをインストールする

image.png

image.png

  • 2. Tools > File Watchers でファイルタイプ Clojure, ClojureScript, CLJC に対するプロジェクト横断(Level: Global)の設定を追加する

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

動作例:

image.png

VS Code + Calvaの場合

Linting - Calva User Guideにあるように、Calvaにバンドルされたclj-kondoが有効化されるようです。

また、Clojure Linter (Joker)をインストールするとJokerもリンターとして組み込むことができます。

動作例:

image.png

Vim + vim-icedの場合

clj-kondoのEditor integration > Vim / Neovim > ALEを参考に、プラグインALEを導入して以下のように設定することでclj-kondoとJokerをリンターとして有効化します。

~/.vimrc
let g:ale_linters = {'clojure': ['clj-kondo', 'joker']}

動作例:

image.png

Further Reading

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6