1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows10上のspacemacsでClojureのlinterを使う(clj-kondo, joker)

Last updated at Posted at 2019-11-16

英語を読めばわかると言われればそれはそうなんだけど英語力クソザコなので。。。。。。。。。

developブランチで利用可能になった

linterである clj-kondojokerが使えるようになった(Clojure Layerの README.orgに項目が追加されている)
https://github.com/syl20bnr/spacemacs/tree/develop/layers/%2Blang/clojure#enabling-automatic-linting

clj-kondoは履歴でいうとコレなのかなぁ…

   ...
   290cacf2a * [python] Bind formatter to == only for LSP backend
   c4a05f7eb * Corrected keybinding collision (format-buffer)
   592fb5863 * documentation formatting: Sat Aug 31 19:04:38 UTC 2019
-> b71c78655 * add flycheck-clj-kondo as an optional package
   145f7e56c * [ansible] Fix void-variable company-backends
   e61e91fbc * documentation formatting: Thu Aug 29 23:13:44 UTC 2019
   424d02919 * Revert "[gnus] Add G prefix to evil state"
   c5c63f48c * ansible: simplify filename matching re
   ...

該当コミット => https://github.com/syl20bnr/spacemacs/commit/b71c78655f105739c1062452fe5c60bbcaf5ea0c

clj-kondoを使う

インストール

公式いわく、

This linter based on static syntax checking and requires the clj-kondo binary installed on the system PATH that spacemacs.env includes. Please read the clj-kondo binary installation instructions

clj-kondo binary installation instructionsリンク先を読めば何とかなる(雑)。

飛んだ先は clj-kondoのREADME。下の方に Installationというリンクがあるのでまた飛ぶ。 clj-kondo/doc/install.mdだと思う。

色々書いてあるけど、基本はMac or Linux向け。その中にぽつんと、

NPM (Linux, MacOS, Windows)

npm install -g clj-kondo

Note: on Windows this invokes the standalone jar.

これに従い、npmでインストールする(Nodeバージョンは確認してないけど 10.14.0は大丈夫だった)

おまけ:
npm install -gでインストールした場合、clj-kondoの更新はこんな感じ。

更新があるか確認し、

> npm outdated -g
Package               Current      Wanted     Latest  Location
clj-kondo  2019.10.11-alpha.1  2019.11.23  2020.1.13  global

Wantedのバージョンのほうが新しければ更新を行い、

> npm update -g clj-kondo
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
C:\nvm_windows\clj-kondo -> C:\nvm_windows\node_modules\clj-kondo\bin\clj-kondo

> clj-kondo@2019.11.23 install C:\nvm_windows\node_modules\clj-kondo
> binwrap-install

+ clj-kondo@2019.11.23
removed 1 package and updated 14 packages in 8.701s

再び npm outdated -gで、更新された (CurrentとWantedが一致している)ことを確認する。

参考 => npm入門

spacemac側の設定

公式のEnable clj-kondo linterに書いてある。 .spacemacsにこんな感じで追記すればいい

.spacemacs
;; to use clj-kondo as a linter, add this variable to the clojure layer
;; wrapping the clojure layer in a list
dotspacemacs-configuration-layers
'(...
  (clojure :variables
           clojure-enable-linters 'clj-kondo)
  )

jokerなど他のlinterと併用する場合はEnable multiple lintersが示すように書く。

使えているか確認する

spacemacsを再起動して、適当な .cljファイルで (def- okimochi 1)とか書けば unresolved symbol def-とか怒ってくれる。

jokerを使う

インストール

公式には jokerのインストール方法が載ってる => https://github.com/syl20bnr/spacemacs/tree/develop/layers/%2Blang/clojure#enable-joker-linter

This linter is based on static syntax checking and requires the joker binary installed on the system PATH that spacemacs.env includes. Please read the joker binary installation instructions

やはり joker binary installation instructionsリンク先を見に行けばわかる(雑)らしい。

ちょうど joker READMEのInstallationに飛ぶ。

On macOS, the easiest way to install Joker is via Homebrew:

やはりMacを前提とされている😇

しかし、Windows10でも使えることを仄めかす記述もある。

On other platforms (or if you prefer manual installation), download a precompiled binary for your platform and put it on your PATH.
You can also build Joker from the source code.

precompiled binaryリンクから飛ぶとGithub上のReleasesページに着く。
Windows10なら、たとえば joker-0.13.0-win-amd64.zipをダウンロードする。

解凍したディレクトリ内には joker.exeだけが入っているので、これを好きな場所に置く。たとえば C:\joker-0.13.0-win-amd64\joker.exe

そしてWindows環境変数Pathに、そのディレクトリを加える。たとえば上記の場所なら C:\joker-0.13.0-win-amd64

どうやらjokerはこれでインストール完了のようだ。

spacemacs側の設定

※環境変数Pathを設定したということは、 .spacemacs.envにも jokerのPathが書かれていなければならない。
自動で更新されない場合😇は、Pathを追記しておく。


公式のEnable joker linterにあるように、 .spacemacsに追記する。

.spacemacs
;; to use joker as a linter, add this variable to the clojure layer
;; wrapping the clojure layer in a list
dotspacemacs-configuration-layers
'(...
  (clojure :variables
           clojure-enable-linters 'joker)
  )

clj-kondoなど他のlinterと併用する場合はEnable multiple lintersが示すように書く。

使えているか確認する

spacemacs再起動後、適当な .cljファイルで (let [a 1])とか書けば let form with empty bodyと怒ってくれる。

誤検知っぽい何かをどうにかする

正しく動いているコードでも、 jokerがエラーを出すことはある。

対処法は joker公式のReducing false positivesに書いてある。

Leiningenプロジェクトなら、プロジェクトのルートディレクトリ直下に .jokerファイルを置いておくと効きそう。
たとえば clojure.spec.alpha/fdef(マクロ?)に出されるエラーを無視するなら以下のようになりそう。

.joker
{:known-macros [clojure.spec.alpha/fdef]}

まとめ

  • Windows10で掃除屋を雇えた気がする
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?