Slide 1

Slide 1 text

clj-kondo Michiel Borkent @borkdude Dutch Clojure Meetup 2019-05-08

Slide 2

Slide 2 text

clj-kondo • a linter for Clojure and ClojureScript • static analysis: only looking at code, not executing • compiled to binary with GraalVM, runs on Linux and MacOS • runnable on Windows via JVM (but slower startup, so editor integration is not as nice)

Slide 3

Slide 3 text

Why another linter? • I've been a happy joker user since 2017 • Missing some features but not that experienced in Go... • joker only knows about 1 file at a time • clj-kondo knows about multiple files at a time, so it can lint calls that cross namespaces

Slide 4

Slide 4 text

Features

Slide 5

Slide 5 text

inline def

Slide 6

Slide 6 text

redundant let

Slide 7

Slide 7 text

redundant do

Slide 8

Slide 8 text

arity error

Slide 9

Slide 9 text

arity error calling other ns

Slide 10

Slide 10 text

arity error when calling a lib

Slide 11

Slide 11 text

arity error when calling Java

Slide 12

Slide 12 text

arity error when calling let- bound fn

Slide 13

Slide 13 text

letfn arity error

Slide 14

Slide 14 text

schema defn arity error

Slide 15

Slide 15 text

recur arity error

Slide 16

Slide 16 text

private call

Slide 17

Slide 17 text

cond

Slide 18

Slide 18 text

duplicate keys

Slide 19

Slide 19 text

missing map value

Slide 20

Slide 20 text

binding syntax

Slide 21

Slide 21 text

missing test assertion

Slide 22

Slide 22 text

CLJC

Slide 23

Slide 23 text

coming soon:
 unused namespace

Slide 24

Slide 24 text

Project setup

Slide 25

Slide 25 text

Config

Slide 26

Slide 26 text

Config

Slide 27

Slide 27 text

Thanks! • joker • rewrite-clj • CircleCI (best CI ever!) • eastwood • clj.native-image • people reporting bugs, false positives and suggesting new features

Slide 28

Slide 28 text

Thank for listening! Questions, suggestions? @borkdude