Clojure Tutorial Part 7 -- clj-konodo, Calva, cljstyle をインストールして文法やフォーマットのエラーを検知変更できるようにする。
kaede
Posted on June 5, 2022
clj-konodo
これは何?
https://github.com/clj-kondo/clj-kondo#command-line
静的分析ツール。
走らせると間違っているところを指摘してくれる。
https://github.com/clj-kondo/clj-kondo#features
詳細なチェック項目はここにある。
インストール
https://github.com/clj-kondo/clj-kondo/blob/master/doc/install.md#brew-macos-and-linux
arch -arm64 brew install borkdude/brew/clj-kondo
==> Installing clj-kondo from borkdude/brew
直接叩くコマンドではないのに brew で入れる。
clj-kondo --version
clj-kondo v2022.05.31
コマンドでの使い方
Options:
--lint <file>:
a file can either be a normal file,
directory or classpath.
In the case of a directory or classpath,
only .clj, .cljs and .cljc will be processed.
Use - as filename for reading from stdin.
--lang <lang>:
if lang cannot be derived from the file extension
this option will be used.
Supported values: clj, cljs, cljc.
--filename <file>:
in case stdin is used for linting,
use this to set the reported filename.
通常は --lint {fileName} で動くらしい。
デフォルトの src/ ディレクトリに打って、エラーが出ないのを確認する
デフォルトのディレクトリを狙って clj-kondo --lint を打ってみる
clj-kondo --lint src/
src/cljblog/core.clj:6:6: warning: unused binding args
linting took 170ms, errors: 0, warnings: 1
するとスキャンが走って、エラーがないのを確認できる。
引数が足りない状態でスキャンを打って、エラーが出るのを確認する
(defn -main
"I don't do a whole lot ... yet."
(println "lint test"))
main を引数
[& args]
なしで書いて、
clj-kondo --lint src/
src/cljblog/core.clj:6:3: error:
Function arguments should be wrapped in vector.
linting took 185ms, errors: 1, warnings: 0
と
引数がベクトルに包まれてるべき言う指摘が出た。
スキャンとエラーの洗い出しが機能しているのが確認できた。
clj-kondo まとめ
brew でインストールできる。
clojure コードを書いた際にファイルやディレクトリに対して打てば
ミスっている時に指摘してくれる。
VSCode/ Calva
Extension Store でインストール
検索して出てくるので、インストールすると
hover で警告がだせた。
間違えている時に自動で教えてくれると効率が上がりそう。
cljstyle
これは何?
トヨクモ株式会社の記事によると
- 規定とは違うインデントの数
- 余分なスペース
- 余分な改行
これらを修正してくれるコマンドらしい。
インストールと有効化
https://github.com/greglook/cljstyle#macos-via-homebrew
arch -arm64 brew install --cask cljstyle
...
==> Installing Cask cljstyle
🍺 cljstyle was successfully installed!
cljstyle も brew でインストールできる。
cljstyle --help
“cljstyle” cannot be opened
because the developer cannot be verified
しかし、デフォルトでは認証が通ってないので実行できない。
Finder/Security&Pravacy/General/
を確認すると、ブロックされているので
Allow Anyway のボタンを押して変更する。
cljstyle version
mvxcvi/cljstyle 0.15.0 (1f58e2e7af4c193aa77ad0695f6c2b9ac2c5c5ec)
すると、0.15.0 で入っているのが確認できた。
cljstyle check コマンドで、フォーマットに反している部分の差分を出力する
cljstyle check src
--- a/src/cljblog/core.clj
+++ b/src/cljblog/core.clj
@@ -2,8 +2,7 @@
(:gen-class))
-
(defn -main
"I don't do a whole lot ... yet."
- [& args]
+ [& args]
(println "core.clj's text changed"))
1 files formatted incorrectly
無駄な改行やインデントを敢えて入れて
cljstyle check {dir/} コマンドを叩くと
どこが修正されるかのを表示してくれる。
cljstyle fix コマンドでフォーマットに沿った形に変更する
cljstyle fix
Reformatting source file project.clj
Reformatting source file src/cljblog/core.clj
Reformatting source file test/cljblog/core_test.clj
Corrected formatting of 3 files
fix を打つと、フォーマットに沿った形に
実際のファイルが書き換えられる。
https://qiita.com/lagenorhynque/items/a5d83b4a36a1cf1cacbe#vs-code--calva%E3%81%AE%E5%A0%B4%E5%90%88
VSCode Calva に組み込んで、保存時に自動的に fix が走るようにする。
cljstyle まとめ
余分な改行やインデントを検知、変更ができるコマンド。
brew cask でインストールして認証を通して有効化する。
check で変更すべき箇所の差分を出力して
fix で変更をファイルに適用する。
clj-konodo, Calva, cljstyle まとめ
clj-kondo
静的解析ツール (Lint) 。
実行すると文法が間違っている箇所を教えてくれる。
Node.js の eslint 相当。
brew でインストールできる。
Calva
自動解析ツール?
VSCode に入れると、文法が間違っている箇所を
自動で波線( ~ )を出して表示してくれる。
VSCode x TypeScript の標準機能相当。
VSCode の拡張機能ストアでインストールできる。
cljstyle
静的解析ツール (Formatter)
実行するとインデントや改行が間違っている箇所を教えてくれる。
Node.js の prettier 相当。
brew cask でインストールできる。
Posted on June 5, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
October 30, 2024
November 18, 2024