AttsuBlog

ATTSU INC. Official Blog
2015-06-23 12.40.13
0 comments

Clojure開発の便利ツール

タグ:, , ,

昨日に引き続き、こんにちは萬屋です(・∀・)

突然ですがお知らせです。Twitterを始めてみましたヽ(*´∀`)ノ
アカウントはこちらになります、もしよろしければフォローしていただければと思いますm(_ _)m

最近はTwitterで技術系の検索をしたり、最新情報を見つけたり、詳しい人に聴いてみたり、と開発においても欠かせない存在になりつつありますね!

Twitterではリアルタイムで今やっていることや、ハマったことなど、つらつらとつぶやいてみたいと思います(`・ω・´)ゞ

今回のブログの内容ですが、Clojure開発において自分が使っているツールなんかをご紹介してみようかなと思います。
とは言ってもIDEとかではなくleiningenのプラグインを紹介します。

1, kibit

こちらは静的解析ツールになります。有名なSonarQubeにはClojureプラグインが無いのでこちらで対応したのですが、これが凄くいいです( ・∀・)イイ!!
「てめぇのこのコードはこうやって書き直したほうが良いんだぜ、ボウズ」と言わんばかりに優しく教えてくれますw
この教えに従うとClojureっぽいコードになっていきますよ!

leiningenプラグインは project.clj の :plugins に書きます。


:plugins [[lein-kibit "0.0.8"]]

これで lein kibit で解析を実行します。あえてダメコードを書いて試してみましょう。


(defn ng-func
  [num]
  (- num 1)
  (+ num 1)
  (if (= 0 num)
    "ゼロ!"
    nil))

こんな関数を書きました。これで lein kibit をやるとこんな感じで教えてくれます。


At /xxx/xxx.clj:4:
Consider using:
  (dec num)
instead of:
  (- num 1)

At /xxx/xxx.clj:5:
Consider using:
  (inc num)
instead of:
  (+ num 1)

At /xxx/xxx.clj:6:
Consider using:
  (when (= 0 num) "ゼロ!")
instead of:
  (if (= 0 num) "ゼロ!" nil)

At /xxx/xxx.clj:6:
Consider using:
  (zero? num)
instead of:
  (= 0 num)

kibitさんイケメンΣ(゚∀゚ノ)ノキャー
このイケメンの言う通りにしてみましょう!


(defn ng-func
  [num]
  (dec num)
  (inc num)
  (when (zero? num) "ゼロ!"))

一気にClojureっぽく(?)なりましたね(`・ω・´)

こんな感じで色々と教えてくれます。特にClojureを始めたばかりだとどんな関数があるとか分からないと思うのでとても重宝します!是非お試しあれ!

2, eastwood

こちらはlintツールになります。
project.clj に [jonase/eastwood “0.2.1”] を追加して、 lein eastwood [namespace] で実行します。namespaceなしでプロジェクト内すべてを見てくれます。

こちらでは使ってもいないのにrequireやuseしているものがあるのを警告してくれたり、関数の呼び出しで引数の間違いを警告してくれたりと、こちらも便利です。kibit と合わせて使うと良いのではないでしょうか(^^ゞ

3, lein-cloverage

こちらはテストのカバレッジをHTMLで出力してくれるやーつです。色んな言語にも同じようなものがたくさんあるので馴染み深いものですね。

他と同じように project.clj に [lein-cloverage “1.0.2”] を追加して、 lein cloverage で実行します。
出力されたHTMLはプロジェクト内のtargetディレクトリに保存されます。

単体テストにおいてカバレッジは必ず100%にすることに躍起になる必要はないと思っていますが、なんかカバレッジが埋まっていくのって楽しくないですか?あれ、自分だけ……?(-_-;)

やたらと kibit 推しな内容になってしまいましたが、自分がよく使うものを紹介しました(^^ゞ
他にもこいつ便利!とかあれば教えていただければ嬉しい限りですヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ

今日はこのへんで……
晩御飯は何にしようか……


Leave A Comment