Fork me on GitHub
Jordan Robinson13:12:41

Hey all, on the project I'm currently working on there is both clj-kondo as well as kibit. I was wondering if the linters in clj-kondo are actually a superset of the checks in kibit and if we're getting any benefit from running both, as I'd rather just run clj-kondo Does anyone know if this is the case or can point me in the direction of how to figure it out?


I haven't used kibit that much, so I'll defer to the rest of this room

šŸ‘ 1
Jordan Robinson13:12:22

if it helps for context, kibit suggests more idiomatic forms, e.g. if you're testing for (= 0 x) it will recommend (zero? x) (as seen here:


hello :) about using Kondo and Meander, how can I tell Kondo to ignore the body from the Meander functions like m/find and m/search? currently I'm doing #_ :clj-kondo/ignore on each form, is there a way to just tell Kondo to ignore the content under these functions?


@wilkerlucio is this for unresolved symbols?


if so then {:linters {:unresolved-symbol {:exclude [(]}}}


you could also write a hook which quotes the question-marked symbols


or quotes the entire argument


nice, a cooworker of mine said he may try to tackle this via hooks šŸ™‚


@borkdude one thing though, now I'm getting errors though warning: Unresolved var: m/app, I tried to do the same with :unresolved-var linter, but they are not going away


what is m/app?


ah, got it now, its a pointer to meander, somehow wasn't finding, but I realize now the exclusion list must be about those names


this is the config that's working for me:

:unresolved-symbol {:exclude [(meander.epsilon/find)
                 :unresolved-var    {:exclude [meander.epsilon/app


those are defined using defsyntax macro, which looks like a fn, but for some reason when I tried now to meander.epsilon/defsyntax clojure.core/defn, it doesn't fix the issue


and now we are zero days without having a caching issue šŸ˜…


you need to re-lint your deps with this config


clj-kondoĀ 2021.12.16 A pretty big release with several new linters, options and improvements! New ā€¢ Automatically load configurations fromĀ `.clj-kondo///config.edn`. This can be disabled withĀ `:auto-load-configs false`.Ā ā€¢ Add linterĀ `:duplicate-case-test-constant`: detect duplicate case test constants. SeeĀĀĀ ( ā€¢ Add linterĀ `:unexpected-recur`: warn onĀ `recur`Ā in unexpected (non-tail) position.Ā ā€¢ Add linterĀ `:used-underscored-binding`: warn on used bindings that start with underscore. Disabled by default. SeeĀĀĀ ( ā€¢ Add linterĀ `:docstring-blank`Ā for checking empty docstring. SeeĀĀĀ ( ā€¢ Add linterĀ `:docstring-leading-trailing-whitespace`Ā for checking leading and trailing whitespace in docstring. Disabled by default. SeeĀĀĀ ( ā€¢ Add linterĀ `:docstring-no-summary`Ā for checking the absence of summary of args in docstring. Disabled by default. SeeĀĀĀ ( ā€¢ AddĀ `:exclude-defmulti-args`Ā option forĀ `:unused-bindings`Ā linter. SeeĀĀĀ ( ā€¢ SupportĀ `:config-in-comment`Ā SeeĀ Enhanced ā€¢ Bump built-in cache for clojure 1.11.0-alpha3 andĀ `` ā€¢ RewordĀ `:refer`Ā suggestion so you can copy paste itĀĀ ( ā€¢ Add re-frame analysis outputĀĀ ( ā€¢ Qualified map causes too many arguments in type checkerĀ ā€¢ Handle reader conditional with unknown languageĀ

šŸŽ‰ 4

i upgraded to the new version but had a little surprise when looking at a defmulti in a cljc file. :exclude-defmulti-args doesnā€™t seem to get picked up there:

> echo "(defmulti my-multi (fn [a b] b))" | clj-kondo --lang clj --lint -
linting took 12ms, errors: 0, warnings: 0

> echo "(defmulti my-multi (fn [a b] b))" | clj-kondo --lang cljc --lint -
<stdin>:1:25: warning: unused binding a
linting took 14ms, errors: 0, warnings: 1
is this just a configuration issue on my side?


I suspect the predicate for CLJS isn't right. Try it with a CLJS file


I mean the defmulti? pred


with --lang cljs i get the same warning


Yeah so that's the issue. PR welcome šŸ™


iā€™ll file an issue