Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

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

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

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

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

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

本記事ではClojure開発環境での基本操作まとめ: Spacemacs, IntelliJ IDEA (Cursive), VS Code (Calva), 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

Further Reading

lagenorhynque
「楽しく楽にcoolにsmartに」を理想とするprogrammer/philosopher。好きな言語はClojure, Haskell, Elixir, Python, English, français。読書、プログラミング、語学、法学、数学が大好き! イルカと海も大好き(*> ᴗ •*)ゞ
https://scrapbox.io/lagenorhynque/
opt
"INNOVATION AGENCY" を標榜するインターネット広告代理店。エンジニア組織 "Opt Techonologies" を中心にアドテクetc...に取り組んでいます。
https://opt-technologies.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away