clj-kondo/clj-kondo (cljkondo/clj-kondo)
### [`v2024.05.24`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240524)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.05.22...v2024.05.24)
- Imports were copied to `.clj-kondo/imports` but weren't pick up correctly. Thanks [@frenchy64](https://togithub.com/frenchy64) for reporting the bug.
- [#2333](https://togithub.com/clj-kondo/clj-kondo/issues/2333): Add location to invalid literal syntax errors
### [`v2024.05.22`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240522)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.03.13...v2024.05.22)
- [#2323](https://togithub.com/clj-kondo/clj-kondo/issues/2323): New linter `:redundant-str-call` which detects unnecessary `str` calls. Off by default.
- [#2302](https://togithub.com/clj-kondo/clj-kondo/issues/2302): New linter: `:equals-expected-position` to enforce expected value to be in first (or last) position. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md)
- [#1035](https://togithub.com/clj-kondo/clj-kondo/issues/1035): Support SARIF output with `--config {:output {:format :sarif}}`
- [#2307](https://togithub.com/clj-kondo/clj-kondo/issues/2307): import configs to intermediate dir
- [#2309](https://togithub.com/clj-kondo/clj-kondo/issues/2309): Report unused `for` expression
- [#2315](https://togithub.com/clj-kondo/clj-kondo/issues/2315): Fix regression with unused JavaScript namespace
- [#2304](https://togithub.com/clj-kondo/clj-kondo/issues/2304): Report unused value in `defn` body
- [#2227](https://togithub.com/clj-kondo/clj-kondo/issues/2227): Allow `:flds` to be used in keys destructuring for ClojureDart
- [#2316](https://togithub.com/clj-kondo/clj-kondo/issues/2316): Handle ignore hint on protocol method
- [#2322](https://togithub.com/clj-kondo/clj-kondo/issues/2322): Add location to warning about invalid unicode character
- [#2319](https://togithub.com/clj-kondo/clj-kondo/issues/2319): Support `:discouraged-var` on global JS values, like `js/fetch`
### [`v2024.03.13`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240313)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.03.05...v2024.03.13)
- Fix memory usage regression introduced in 2024.03.05
- [#2299](https://togithub.com/clj-kondo/clj-kondo/issues/2299): Add documentation for `:java-static-field-call`.
### [`v2024.03.05`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240305)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.02.12...v2024.03.05)
- [#1732](https://togithub.com/clj-kondo/clj-kondo/issues/1732): new linter: `:shadowed-fn-param` which warns on using the same parameter name twice, as in `(fn [x x])`
- [#2276](https://togithub.com/clj-kondo/clj-kondo/issues/2276): New Clojure 1.12 array notation (`String*`) may occur outside of metadata
- [#2278](https://togithub.com/clj-kondo/clj-kondo/issues/2278): `bigint` in CLJS is a known symbol in `extend-type`
- [#2288](https://togithub.com/clj-kondo/clj-kondo/issues/2288): fix static method analysis and suppressing `:java-static-field-call` locally
- [#2293](https://togithub.com/clj-kondo/clj-kondo/issues/2293): fix false positive static field call for `(Thread/interrupted)`
- [#2296](https://togithub.com/clj-kondo/clj-kondo/issues/2296): publish multi-arch Docker images (including linux aarch64)
- [#2295](https://togithub.com/clj-kondo/clj-kondo/issues/2295): lint case test symbols in list
### [`v2024.02.12`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240212)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.12.15...v2024.02.12)
- [#2274](https://togithub.com/clj-kondo/clj-kondo/issues/2274): Support clojure 1.12 new type hint notations
- [#2260](https://togithub.com/clj-kondo/clj-kondo/issues/2260): New linter `:java-static-field-call`: calling static *field* as function should warn, e.g. `(System/err)`
- [#1917](https://togithub.com/clj-kondo/clj-kondo/issues/1917): detect string being called as function
- [#1923](https://togithub.com/clj-kondo/clj-kondo/issues/1923): Lint invalid fn name
- [#2256](https://togithub.com/clj-kondo/clj-kondo/issues/2256): enable `assert` in hooks
- [#2253](https://togithub.com/clj-kondo/clj-kondo/issues/2253): add support for `datomic-type-extensions` to datalog syntax checking
- [#2255](https://togithub.com/clj-kondo/clj-kondo/issues/2255): support `:exclude-files` in combination with linting from stdin + provided `--filename` argument
- [#2246](https://togithub.com/clj-kondo/clj-kondo/issues/2246): preserve metadata on symbol when going through `:macroexpand` hook
- [#2254](https://togithub.com/clj-kondo/clj-kondo/issues/2254): lint files in absence of config dir
- [#2251](https://togithub.com/clj-kondo/clj-kondo/issues/2251): support suppressing `:unused-value` using `:config-in-call`
- [#2266](https://togithub.com/clj-kondo/clj-kondo/issues/2266): suppress `:not-a-function` linter in reader tag
- [#2259](https://togithub.com/clj-kondo/clj-kondo/issues/2259): `ns-map` unmaps var defined prior in namespace
- [#2272](https://togithub.com/clj-kondo/clj-kondo/issues/2272): Report var usage in `if`/`when` condition as always truthy, e.g. `(when #'some-var 1)`
### [`v2023.12.15`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20231215)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.10.20...v2023.12.15)
- [#1990](https://togithub.com/clj-kondo/clj-kondo/issues/1990): Specify `:min-clj-kondo-version` in config.edn and warn when current version is too low ([@snasphysicist](https://togithub.com/snasphysicist))
- [#1753](https://togithub.com/clj-kondo/clj-kondo/issues/1753): New linter `:underscore-in-namespace` ([@cosineblast](https://togithub.com/cosineblast))
- [#2207](https://togithub.com/clj-kondo/clj-kondo/issues/2207): New `:condition-always-true` linter, see [docs](doc/linters.md)
- [#2235](https://togithub.com/clj-kondo/clj-kondo/issues/2235): New
`:multiple-async-in-deftest` linter: warn on multiple async blocks in
`cljs.test/deftest`, since only the first will run.
- [#2013](https://togithub.com/clj-kondo/clj-kondo/issues/2013): Fix NPE and similar errors when linting an import with an illegal token ([@cosineblast](https://togithub.com/cosineblast))
- [#2215](https://togithub.com/clj-kondo/clj-kondo/issues/2215): Passthrough hook should not affect linting
- [#2232](https://togithub.com/clj-kondo/clj-kondo/issues/2232): Bump analysis for clojure 1.12 (partitionv, etc)
- [#2223](https://togithub.com/clj-kondo/clj-kondo/issues/2223): Do not consider classes created with `deftype` a var that is referred with `:refer :all`
- [#2236](https://togithub.com/clj-kondo/clj-kondo/issues/2236): `:line-length` warnings cannot be `:clj-kondo/ignore`d
- [#2224](https://togithub.com/clj-kondo/clj-kondo/issues/2224): Give `#'foo/foo` and `(var foo/foo)` the same treatment with respect to private calls
- [#2239](https://togithub.com/clj-kondo/clj-kondo/issues/2239): Fix printing of unresolved var when going through `:macroexpand` hook
### [`v2023.10.20`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20231020)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.09.07...v2023.10.20)
- [#1804](https://togithub.com/clj-kondo/clj-kondo/issues/1804): new linter `:self-requiring-namespace`
- [#2065](https://togithub.com/clj-kondo/clj-kondo/issues/2065): new linter `:equals-false`, counterpart of `:equals-true` ([@svdo](https://togithub.com/svdo))
- [#2199](https://togithub.com/clj-kondo/clj-kondo/issues/2199): add `:syntax` check for var names starting or ending with dot (reserved by Clojure)
- [#2179](https://togithub.com/clj-kondo/clj-kondo/issues/2179): consider alias-as-object usage in CLJS for :unused-alias linter
- [#2183](https://togithub.com/clj-kondo/clj-kondo/issues/2183): respect `:level` in `:discouraged-var` config
- [#2184](https://togithub.com/clj-kondo/clj-kondo/issues/2184): Add missing documentation for `:single-logical-operand` linter ([@wtfleming](https://togithub.com/wtfleming))
- [#2187](https://togithub.com/clj-kondo/clj-kondo/issues/2187): Fix type annotation of argument of `clojure.core/parse-uuid` from `nilable/string` to string ([@dbunin](https://togithub.com/dbunin))
- [#2192](https://togithub.com/clj-kondo/clj-kondo/issues/2192): Support `:end-row` and `:end-col` in `:pattern` output format ([@joshgelbard](https://togithub.com/joshgelbard))
- [#2182](https://togithub.com/clj-kondo/clj-kondo/issues/2182): Namespace local configuration does not silence `:missing-else-branch`
- [#2186](https://togithub.com/clj-kondo/clj-kondo/issues/2186): Improve warning when `--copy-configs` is enabled but no config dir exists
- [#2190](https://togithub.com/clj-kondo/clj-kondo/issues/2190): false positive with `:unused-alias` and namespaced map
- [#2200](https://togithub.com/clj-kondo/clj-kondo/issues/2200): include optional `:callstack` in analysis
### [`v2023.09.07`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230907)
- [#1332](https://togithub.com/clj-kondo/clj-kondo/issues/1332): New linter `:unused-alias`. See [docs](doc/linters.md).
- [#2143](https://togithub.com/clj-kondo/clj-kondo/issues/2143): false positive type warning for `clojure.set/project`
- [#2145](https://togithub.com/clj-kondo/clj-kondo/issues/2145): support ignore hint on multi-arity branch of function definition
- [#2147](https://togithub.com/clj-kondo/clj-kondo/issues/2147): use alternative solution as workaround for [https://github.com/cognitect/transit-clj/issues/43](https://togithub.com/cognitect/transit-clj/issues/43)
- [#2152](https://togithub.com/clj-kondo/clj-kondo/issues/2152): Fix false positive with used-underscored-binding with core.match
- [#2150](https://togithub.com/clj-kondo/clj-kondo/issues/2150): allow command line options = as in --fail-level=error
- [#2149](https://togithub.com/clj-kondo/clj-kondo/issues/2149): `:lint-as clojure.core/defmacro` should suppress `&env` as unresolved symbol
- [#2161](https://togithub.com/clj-kondo/clj-kondo/issues/2161): Fix type annotation for `clojure.core/zero?` to number -> boolean
- [#2165](https://togithub.com/clj-kondo/clj-kondo/issues/2165): Fix error when serializing type data to cache
- [#2167](https://togithub.com/clj-kondo/clj-kondo/issues/2167): Don't crash when `:unresolved-symbol` linter config contains unqualified symbol
- [#2170](https://togithub.com/clj-kondo/clj-kondo/issues/2170): `:keyword-binding` linter should ignore auto-resolved keywords
- [#2172](https://togithub.com/clj-kondo/clj-kondo/issues/2172): detect invalid amount of args and invalid argument type for `throw`
- [#2164](https://togithub.com/clj-kondo/clj-kondo/issues/2164): deftest inside let triggers :unused-value
- [#2154](https://togithub.com/clj-kondo/clj-kondo/issues/2154): add `:exclude` option to `:deprecated-namespace` linter
- [#2134](https://togithub.com/clj-kondo/clj-kondo/issues/2134): don't warn on usage of private var in `data_readers.clj(c)`
- [#2148](https://togithub.com/clj-kondo/clj-kondo/issues/2148): warn on configuration error in `:unused-refeferred-var` linter
- Expose more vars in `clj-kondo.hooks-api` interpreter namespace
### [`v2023.07.13`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230713)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.05.26...v2023.07.13)
- [#2111](https://togithub.com/clj-kondo/clj-kondo/issues/2111): warn on symbol in case test using new opt-in linter `:case-symbol-test`
- Rename `:quoted-case-test-constant` to `:case-quoted-test`
- Rename `:duplicate-case-test-constant` to `:case-duplicate-test`
- [#1230](https://togithub.com/clj-kondo/clj-kondo/issues/1199): new linter, `:unsorted imports`
- [#1125](https://togithub.com/clj-kondo/clj-kondo/issues/1125): new `:deprecated-namespace` linter
- [#2097](https://togithub.com/clj-kondo/clj-kondo/issues/2097): analyze and act on `defprotocol` metadata ([@lread](https://togithub.com/lread))
- [#2105](https://togithub.com/clj-kondo/clj-kondo/issues/2105): Consider `.cljd` files when linting ([@ericdallo](https://togithub.com/ericdallo))
- [#2101](https://togithub.com/clj-kondo/clj-kondo/issues/2101): false positive with `if-some` + `recur`
- [#2109](https://togithub.com/clj-kondo/clj-kondo/issues/2109): `java.util.List` type hint corresponds to `:list` or nil
- [#2096](https://togithub.com/clj-kondo/clj-kondo/issues/2096): apply `:arglists` metadata to `:arglist-strs` for analysis data ([@lread](https://togithub.com/lread))
- [#256](https://togithub.com/clj-kondo/clj-kondo/issues/256): warn on reader conditional usage in non-cljc files
- [#2115](https://togithub.com/clj-kondo/clj-kondo/issues/2115): false positive `:redundant-fn-wrapper` in CLJS when passing keyword to JS
- [#1082](https://togithub.com/clj-kondo/clj-kondo/issues/1082): protocol methods do not support varargs
- [#2125](https://togithub.com/clj-kondo/clj-kondo/issues/2125): Setting `clj-kondo.hooks-api/*reload*` to true does not lint with the latest hook changes.
- [#2135](https://togithub.com/clj-kondo/clj-kondo/issues/2135): private vars starting with `_` should not be reported as unused
- [#1199](https://togithub.com/clj-kondo/clj-kondo/issues/1199): warn about reader conditional features that are not keywords, e.g. `#?(:clj 1 2)` (2 is not a keyword)
- [#2132](https://togithub.com/clj-kondo/clj-kondo/issues/2132): false negative unused value in clojure.test
- [#1294](https://togithub.com/clj-kondo/clj-kondo/issues/1294): redefined var comment edge case
### [`v2023.05.26`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230526)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.05.18...v2023.05.26)
- [#2083](https://togithub.com/clj-kondo/clj-kondo/issues/2083): fix regression with `:missing-test-assertion` introduced in 2023.05.18
- [#2084](https://togithub.com/clj-kondo/clj-kondo/issues/2084): add `:refers` to `:refer-all` finding
- [#2086](https://togithub.com/clj-kondo/clj-kondo/issues/2086): false positive missing test assertion with `swap!`
- [#2087](https://togithub.com/clj-kondo/clj-kondo/issues/2087): honor :config-in-comment for :unused-referred-var
### [`v2023.05.18`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230518)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.04.14...v2023.05.18)
- Linter `:uninitialized-var` moved from default `:level :off` to `:warning`
- [#2065](https://togithub.com/clj-kondo/clj-kondo/issues/2065): new linter `:equals-true`: suggest using `(true? x)` over `(= true x)` (defaults to `:level :off`).
- [#2066](https://togithub.com/clj-kondo/clj-kondo/issues/2066): new linters `:plus-one` and `:minus-one`: suggest using `(inc x)` over `(+ x 1)` (and similarly for `dec` and `-`, defaults to `:level :off`)
- [#2051](https://togithub.com/clj-kondo/clj-kondo/issues/2051): consider `:unresolved-namespace :exclude` as already required namespaces
- [#2056](https://togithub.com/clj-kondo/clj-kondo/issues/2056): validate collection nodes when constructing and `--debug` is true
- [#2058](https://togithub.com/clj-kondo/clj-kondo/issues/2058): warn about `#()` and `#""` in `.edn` files
- [#2064](https://togithub.com/clj-kondo/clj-kondo/issues/2064): False positive when using `:sha` instead of `:git/sha` in combination with git url in `deps.edn`
- [#2063](https://togithub.com/clj-kondo/clj-kondo/issues/2063): introduce new `:defined-by->lint-as` key which contains the `:lint-as` value for "defining" var, whereas `:defined-as` now always contains the name of the original "defining var". This is a **BREAKING** change.
- [#1983](https://togithub.com/clj-kondo/clj-kondo/issues/1983): produce java-member-definition analysis for `.java` files.
- [#2068](https://togithub.com/clj-kondo/clj-kondo/issues/2068): include `:or` default in `:local-usages analysis`
- [#2079](https://togithub.com/clj-kondo/clj-kondo/issues/2079): analysis for `data_readers.clj`
- [#2067](https://togithub.com/clj-kondo/clj-kondo/issues/2067): support `:ns-groups` to be used with `:analyze-call` and `:macroexpand` hooks
- [#1918](https://togithub.com/clj-kondo/clj-kondo/issues/1918): ignore keyword bindings with namespaced in `:keyword-binding` linter
- [#2073](https://togithub.com/clj-kondo/clj-kondo/issues/2073): `:lint-as clj-kondo.lint-as/def-catch-all` should ignore unresolved namespaces
- [#2078](https://togithub.com/clj-kondo/clj-kondo/issues/2078): detect more `:missing-test-assertion` cases, e.g. `(deftest foo (not (= 1 2)))`
### [`v2023.04.14`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230414)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.03.17...v2023.04.14)
- [#1196](https://togithub.com/clj-kondo/clj-kondo/issues/1196): show language context in `.cljc` files with `:output {:langs true}`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#show-language-context-in-cljc-files).
- [#2026](https://togithub.com/clj-kondo/clj-kondo/issues/2026): coercing string did not create StringNode, but TokenNode, lead to false positive `Too many arguments to def`
- [#2030](https://togithub.com/clj-kondo/clj-kondo/issues/2030): Add a new `:discouraged-tag` linter for discouraged tag literals. See the [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#discouraged-tag).
- Add `:gen` support on `clojure.spec.alpha/keys`
- [#1647](https://togithub.com/clj-kondo/clj-kondo/issues/1647): support `:exclude-patterns` in `:unresolved-symbol` linter
- [#2036](https://togithub.com/clj-kondo/clj-kondo/pull/2036): False positive `:def-fn` on `def` + `reify`
- [#2024](https://togithub.com/clj-kondo/clj-kondo/issues/2024): CLJS allows interop in constructor position
- [#2025](https://togithub.com/clj-kondo/clj-kondo/issues/2025): support namespace groups with `:unresolved-namespace` linter
- [#2039](https://togithub.com/clj-kondo/clj-kondo/issues/2039): :analysis `:symbols` + `:aliased-namespace-symbol` linter gives false positive in quoted symbol
- [#2043](https://togithub.com/clj-kondo/clj-kondo/issues/2043): support ignore annotation on private calls
- Support `:exclude-pattern` in `:unused-binding`
- [#2046](https://togithub.com/clj-kondo/clj-kondo/issues/2046): clj-kondo stuck in loop with multiple :or in destructuring
- [#2048](https://togithub.com/clj-kondo/clj-kondo/issues/2048): better linting in `schema.core/defn` with invalid s-exprs
### [`v2023.03.17`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230317)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.02.17...v2023.03.17)
- [#2010](https://togithub.com/clj-kondo/clj-kondo/issues/2010): Support inline macro configuration. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#inline-macro-configuration)
- [#2010](https://togithub.com/clj-kondo/clj-kondo/issues/2010): Short syntax to disable linters: `{:ignore [:unresolved-symbol]}` or `{:ignore true}`, valid in ns-metadata, `:config-in-ns`, `:config-in-call`
- [#2009](https://togithub.com/clj-kondo/clj-kondo/issues/2009): new `:var-same-name-except-case` linter: warn when vars have names that differ only in case (important for AOT compilation and case-insensitive filesystems) ([@emlyn](https://togithub.com/emlyn)).
- [#1269](https://togithub.com/clj-kondo/clj-kondo/issues/1269): warn on `:jvm-opts` in top level of `deps.edn`
- [#2003](https://togithub.com/clj-kondo/clj-kondo/issues/2003): detect invalid arity call for function passed to `update`, `update-in`, `swap!`, `swap-vals!`, `send`, `send-off`, and `send-via` ([@jakemcc](https://togithub.com/jakemcc)).
- [#1983](https://togithub.com/clj-kondo/clj-kondo/issues/1983): add support for java member analysis, via new `java-member-definitions` bucket ([@ericdallo](https://togithub.com/ericdallo)).
- [#1999](https://togithub.com/clj-kondo/clj-kondo/issues/1999): add `hooks-api/set-node` and `hooks-api/set-node?` ([@sritchie](https://togithub.com/sritchie)).
- [#1997](https://togithub.com/clj-kondo/clj-kondo/issues/1997): False positive on `clojure.core/aget` with more than two args
- [#2011](https://togithub.com/clj-kondo/clj-kondo/issues/2011): push images to GHCR ([@lispyclouds](https://togithub.com/lispyclouds))
- [#2001](https://togithub.com/clj-kondo/clj-kondo/issues/2001): false positive `:misplaced-docstring` in `clojure.test/deftest`
### [`v2023.02.17`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230217)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.01.20...v2023.02.17)
- [#1976](https://togithub.com/clj-kondo/clj-kondo/issues/1976): warn about using multiple bindings after varargs (`&`) symbol in fn syntax
- Add arity checks for core `def`
- [#1954](https://togithub.com/clj-kondo/clj-kondo/issues/1954): new `:uninitialized-var` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#uninitialized-var).
- [#1996](https://togithub.com/clj-kondo/clj-kondo/issues/1996): expose `hooks-api/resolve`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/hooks.md#api).
- [#1971](https://togithub.com/clj-kondo/clj-kondo/issues/1971): false positive `:redundant-fn-wrapper` with syntax-quoted body
- [#1984](https://togithub.com/clj-kondo/clj-kondo/issues/1984): lint java constructor calls as unresolved-symbol when using dot notation.
- [#1970](https://togithub.com/clj-kondo/clj-kondo/issues/1970): `:dynamic-var-not-earmuffed` should be opt-in
- [#1972](https://togithub.com/clj-kondo/clj-kondo/issues/1972): type hint aliases should not result in unresolved symbol
- [#1951](https://togithub.com/clj-kondo/clj-kondo/issues/1951): include end locations in `:line-length` linter
- [#1987](https://togithub.com/clj-kondo/clj-kondo/issues/1987): Fix escaping of regex literal string in `:macroexpand`
- [#1980](https://togithub.com/clj-kondo/clj-kondo/issues/1980): make support for ignoring warnings in generated hooks explicit
- [#1979](https://togithub.com/clj-kondo/clj-kondo/issues/1979): allow `:level :off` in `:discouraged-var` config on var level
- [#1995](https://togithub.com/clj-kondo/clj-kondo/issues/1995): `clj-kondo.lint-as/def-catch-all` doesn't emit locations, fixes navigation for lsp
- [#1978](https://togithub.com/clj-kondo/clj-kondo/issues/1978): false positive type error with symbol argument + varargs
- [#1989](https://togithub.com/clj-kondo/clj-kondo/issues/1989): don't analyze location metadata coming from `:macroexpand hook` (performance optimization)
### [`v2023.01.20`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230120)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.01.16...v2023.01.20)
- [#1956](https://togithub.com/clj-kondo/clj-kondo/issues/1956): enable printing to `*err*` in hooks
- [#1943](https://togithub.com/clj-kondo/clj-kondo/issues/1943): allow `:discouraged-namespace` to be suppressed with `#_:clj-kondo/ignore`
- [#1942](https://togithub.com/clj-kondo/clj-kondo/issues/1942): prioritize specific namespace over ns-groups for `:discouraged-namespace` linter
- [#1959](https://togithub.com/clj-kondo/clj-kondo/issues/1959): analyze custom `defn` properly
- [#1961](https://togithub.com/clj-kondo/clj-kondo/issues/1961): be lenient with unexpected type
- [#1945](https://togithub.com/clj-kondo/clj-kondo/issues/1945): support merging of multiple ns-group configs
- [#1962](https://togithub.com/clj-kondo/clj-kondo/issues/1962): don't emit warning for aliased namespace var usage in syntax-quote
- [#1952](https://togithub.com/clj-kondo/clj-kondo/issues/1952): add `:exclude-urls` and `:exclude-pattern`
### [`v2023.01.16`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230116)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.01.12...v2023.01.16)
- [#1920](https://togithub.com/clj-kondo/clj-kondo/issues/1920): new linter `:def-fn`: warn when using `fn` inside `def`, or `fn` inside `let` inside `def` ([@andreyorst](https://togithub.com/andreyorst)).
- [#1949](https://togithub.com/clj-kondo/clj-kondo/issues/1949): `:aliased-namespace-var-usage` gives erroneous output for keywords
- Add test for [#1944](https://togithub.com/clj-kondo/clj-kondo/issues/1944) (already worked)
- Don't reload SCI namespace on every hook usage
### [`v2023.01.12`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230112)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.12.10...v2023.01.12)
- [#1742](https://togithub.com/clj-kondo/clj-kondo/issues/1742): new linter `:aliased-namespace-var-usage`: warn on var usage from namespaces that were used with `:as-alias`. See [demo](https://twitter.com/borkdude/status/1613524896625340417/photo/1).
- [#1914](https://togithub.com/clj-kondo/clj-kondo/issues/1914): Don't warn about single arg use when there's a second arg in a reader conditional ([@mk](https://togithub.com/mk))
- [#1912](https://togithub.com/clj-kondo/clj-kondo/issues/1912): Allow forward references in `comment` forms ([@mk](https://togithub.com/mk)). See [demo](https://twitter.com/borkdude/status/1603028023565062145).
- [#1926](https://togithub.com/clj-kondo/clj-kondo/issues/1926): Add keyword analysis for edn files.
- [#1922](https://togithub.com/clj-kondo/clj-kondo/issues/1922): don't crash on invalid type specification
- [#1902](https://togithub.com/clj-kondo/clj-kondo/issues/1902): provide `:symbols` analysis for navigation to symbols in quoted forms or EDN files. See [demo](https://twitter.com/borkdude/status/1612773780589355008).
- [#1939](https://togithub.com/clj-kondo/clj-kondo/issues/1939): no longer warn on unused namespace that was only used with `:as-alias`
- [#1911](https://togithub.com/clj-kondo/clj-kondo/issues/1911): missing test assertion linter doesn't work in CLJS
- [#1891](https://togithub.com/clj-kondo/clj-kondo/issues/1891): support `CLJ_KONDO_EXTRA_CONFIG_DIR` environment variable to enable extra linters after project config
### [`v2022.12.10`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221210)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.12.08...v2022.12.10)
- [#1909](https://togithub.com/clj-kondo/clj-kondo/issues/1909): lower requirement on `glibc` in dynamic linux binary to 2.31 by using fixed version of CircleCI image
### [`v2022.12.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221208)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.11.02...v2022.12.08)
- [#609](https://togithub.com/clj-kondo/clj-kondo/issues/609): typecheck var usage, e.g. `(def x :foo) (inc x)` will now give a warning
- [#1867](https://togithub.com/clj-kondo/clj-kondo/issues/1867): add name metadata to class usage
- [#1875](https://togithub.com/clj-kondo/clj-kondo/issues/1875): add `:duplicate-field-name` linter for deftype and defrecord definitions.
- [#1883](https://togithub.com/clj-kondo/clj-kondo/issues/1883): constructor usage should have name-col in analysis
- [#1874](https://togithub.com/clj-kondo/clj-kondo/issues/1874): fix name of fully qualified class usage
- [#1876](https://togithub.com/clj-kondo/clj-kondo/issues/1876): suppress . analysis from .. macroexpansion
- [#1877](https://togithub.com/clj-kondo/clj-kondo/issues/1877): suppress `new` analysis from `(String. x)` expansion
- [#1888](https://togithub.com/clj-kondo/clj-kondo/issues/1888): use `namespace-munge` for resolving hook files rather than `munge`
- [#1896](https://togithub.com/clj-kondo/clj-kondo/issues/1896): don't consider `**`, `***` etc. to be a dynamic vars
- [#1899](https://togithub.com/clj-kondo/clj-kondo/issues/1899): treat var or local reference as unused value when not in tail position
- [#1903](https://togithub.com/clj-kondo/clj-kondo/issues/1903): int can be cast to double
- [#1871](https://togithub.com/clj-kondo/clj-kondo/issues/1871): clj-kondo marks args in `definterface` as unused
- [#1879](https://togithub.com/clj-kondo/clj-kondo/issues/1879): analyze `definterface` more similarly to `defprotocol` for lsp-navigation
- [#1907](https://togithub.com/clj-kondo/clj-kondo/issues/1907): add `hooks-api/generated-node?` function to check if a node was generated
- [#1887](https://togithub.com/clj-kondo/clj-kondo/issues/1887), use `re-find` for ns groups rather than re-matches
### [`v2022.11.02`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221102)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.10.14...v2022.11.02)
- [#1846](https://togithub.com/clj-kondo/clj-kondo/issues/1846): new linters: `:earmuffed-var-not-dynamic` and `:dynamic-var-not-earmuffed`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#dynamic-vars).
- [#1842](https://togithub.com/clj-kondo/clj-kondo/issues/1842): Add `:exclude` option to `:used-underscored-binding` ([@staifa](https://togithub.com/staifa))
- [#1840](https://togithub.com/clj-kondo/clj-kondo/issues/1840): Fix warning in `.cljs` and `.cljc` for `:aliased-namespace-symbol` in interop calls. ([@NoahTheDuke](https://togithub.com/NoahTheDuke))
- [#1845](https://togithub.com/clj-kondo/clj-kondo/issues/1845): add `:derived-location` to analysis when location is derived from parent node
- [#1853](https://togithub.com/clj-kondo/clj-kondo/issues/1853): fix `:level :off` not being respected in `:discouraged-var` configs that are merged in.
- [#1855](https://togithub.com/clj-kondo/clj-kondo/issues/1855): accept symbol in addition to keyword in `clojure.spec.alpha/def` name position
- [#1844](https://togithub.com/clj-kondo/clj-kondo/issues/1844): support extra schema in `schema.core/defrecord`
- [#1720](https://togithub.com/clj-kondo/clj-kondo/issues/1720): prevent parse error on defmulti without args
- [#1863](https://togithub.com/clj-kondo/clj-kondo/issues/1863): Added `clj-kondo-docker` pre-commit hook.
### [`v2022.10.14`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221014)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.10.05...v2022.10.14)
- [#1831](https://togithub.com/clj-kondo/clj-kondo/issues/1831): Add `:redundant-fn-wrapper` support for keyword and binding calls ([@NoahTheDuke](https://togithub.com/NoahTheDuke))
- [#1830](https://togithub.com/clj-kondo/clj-kondo/issues/1830): Fix warning on `:include-macros` in `.cljs` and `.cljc` for `:unknown-require-option` linter. ([@NoahTheDuke](https://togithub.com/NoahTheDuke))
- [#1238](https://togithub.com/clj-kondo/clj-kondo/issues/1238): Build a linux/aarch64 executable in CI ([cap10morgan](https://togithub.com/cap10morgan))
- Add `:exclude` option to `:unknown-require-option`
- Enable `:unused-value` by default
- Publish `.sha256` files along with released artifacts
### [`v2022.10.05`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221005)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.09.08...v2022.10.05)
- [#611](https://togithub.com/clj-kondo/clj-kondo/issues/611): New linter: `:unused-value` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#unused-value). Also see issue [#1258](https://togithub.com/clj-kondo/clj-kondo/issues/1258).
- [#1794](https://togithub.com/clj-kondo/clj-kondo/issues/1794): New linter: `:line-length` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#line-length) ([@ourkwest](https://togithub.com/ourkwest))
- [#1460](https://togithub.com/clj-kondo/clj-kondo/issues/1460): New linter: `:unknown-require-option` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#unknown-require-option). ([@NoahTheDuke](https://togithub.com/NoahTheDuke))
- [#1800](https://togithub.com/clj-kondo/clj-kondo/issues/1800): New linter: `:aliased-namespace-symbol` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#aliased-namespace-symbol). ([@NoahTheDuke](https://togithub.com/NoahTheDuke))
- [#1758](https://togithub.com/clj-kondo/clj-kondo/issues/1758): Overrides don't get applied to var-definitions during analysis ([@sheluchin](https://togithub.com/sheluchin))
- [#1807](https://togithub.com/clj-kondo/clj-kondo/issues/1807): False positive with map transducer in cljs
- [#1806](https://togithub.com/clj-kondo/clj-kondo/issues/1806): False positive recur mismatch with letfn
- [#1810](https://togithub.com/clj-kondo/clj-kondo/issues/1810): Fix printing error map as additional error ([@NoahTheDuke](https://togithub.com/NoahTheDuke))
- [#1812](https://togithub.com/clj-kondo/clj-kondo/issues/1812): Inconsistent handling of location metadata sometimes produces `nil` values ([@sheluchin](https://togithub.com/sheluchin))
- [#1805](https://togithub.com/clj-kondo/clj-kondo/issues/1805): Ignore hints not being considered on protocol vars
- [#1819](https://togithub.com/clj-kondo/clj-kondo/issues/1819): Fix "Too many open files" in java class definition analysis caused by files not being closed ([@rsauex](https://togithub.com/rsauex))
- [#1821](https://togithub.com/clj-kondo/clj-kondo/issues/1821): Include vectors in `:unused-binding` config `:exclude-destructured-as` flag. ([@NoahTheDuke](https://togithub.com/NoahTheDuke))
- [#1818](https://togithub.com/clj-kondo/clj-kondo/issues/1818): unresolved var when using interop on var in CLJS
- [#1817](https://togithub.com/clj-kondo/clj-kondo/issues/1817): improve warning with invalid require libspec ([@benjamin-asdf](https://togithub.com/benjamin-asdf))
- [#1801](https://togithub.com/clj-kondo/clj-kondo/issues/1801): Missing docstring fix for `deftype` in CLJS
- Bump GraalVM to 22.2.0 for native-image
- Bump SCI to 0.4.33
### [`v2022.09.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220908)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.08.03...v2022.09.08)
- `:config-in-call` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#config-in-call)
- [#1127](https://togithub.com/clj-kondo/clj-kondo/issues/1127): `:config-in-tag` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#config-in-tag)
- [#1791](https://togithub.com/clj-kondo/clj-kondo/issues/1791): Fix issue with namespace-name-mismatch on namespaces with + sign (and others)
- [#1782](https://togithub.com/clj-kondo/clj-kondo/issues/1782): Fix issue with jar URI missreporting to `file-analyzed-fn`, bump babashka/fs to 0.1.11
- [#1780](https://togithub.com/clj-kondo/clj-kondo/issues/1780): Can not use NPM dependency namespaces beginning with "@" in consistent-linter alias
- [#1771](https://togithub.com/clj-kondo/clj-kondo/issues/1771): don't crash on empty ns clauses: `(require '[])` and `(import '())`
- [#1774](https://togithub.com/clj-kondo/clj-kondo/issues/1774): Add support for sourcehut inferred git dep urls for the Clojure CLI
- [#1768](https://togithub.com/clj-kondo/clj-kondo/issues/1768): Expose a `tag` function in `clj-kondo.hooks-api`
- [#1790](https://togithub.com/clj-kondo/clj-kondo/issues/1790): Add support for `:filename-pattern` in `:ns-group`
- [#1773](https://togithub.com/clj-kondo/clj-kondo/issues/1773): false positive type mismatch warning with hook
- [#1779](https://togithub.com/clj-kondo/clj-kondo/issues/1779): lazy-seq should be coerced a list node
- [#1764](https://togithub.com/clj-kondo/clj-kondo/issues/1764): store overrides in cache and don't run them at runtime
### [`v2022.08.03`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220803)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.06.22...v2022.08.03)
- [#1755](https://togithub.com/clj-kondo/clj-kondo/issues/1755): Fix false positive invalid-arity when using mapcat transducer in sequence with multiple collections
- [#1749](https://togithub.com/clj-kondo/clj-kondo/issues/1749): expose `clojure.pprint/pprint` to the hooks API
- [#698](https://togithub.com/clj-kondo/clj-kondo/issues/698): output rule name with new output option `:show-rule-name-in-message true`. See example in [config guide](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#show-rule-name-in-message).
- [#1735](https://togithub.com/clj-kondo/clj-kondo/issues/1735) Add support for nilable map type specs
- [#1744](https://togithub.com/clj-kondo/clj-kondo/issues/1744) Expose `:imported-ns` in analysis of vars imported by potemkin
- [#1746](https://togithub.com/clj-kondo/clj-kondo/issues/1746) Printing deps.edn error to stdout
- [#1716](https://togithub.com/clj-kondo/clj-kondo/issues/1716) Include dispatch-val in analysis of defmethod
- [#1760](https://togithub.com/clj-kondo/clj-kondo/issues/1760) Add `:arglist-strs` support for functions defined with fn
- [#1731](https://togithub.com/clj-kondo/clj-kondo/issues/1731): prioritize special form in name resolving
- [#1739](https://togithub.com/clj-kondo/clj-kondo/issues/1739): Namespaced map type check fix
- Fix [#1737](https://togithub.com/clj-kondo/clj-kondo/issues/1737): config-in-ns for specific namespace + ns-group override
- Fix [#1741](https://togithub.com/clj-kondo/clj-kondo/issues/1741): Ignore redundant-call when single call is made in .cljc
### [`v2022.06.22`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220622)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.31...v2022.06.22)
- [#1721](https://togithub.com/clj-kondo/clj-kondo/issues/1721): new `:discouraged-namespace` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#discouraged-namespace).
- [#1728](https://togithub.com/clj-kondo/clj-kondo/issues/1728) New macOS aarch64 (M1-compatible) binary
- [#1726](https://togithub.com/clj-kondo/clj-kondo/issues/1726): fix invalid arity warning for `sequence` with `map` multi-arity transducer
- [#1715](https://togithub.com/clj-kondo/clj-kondo/issues/1715): fix false positive warning for `recur` not in tail position with `core.async alt!!`
- [#1714](https://togithub.com/clj-kondo/clj-kondo/issues/1714): fix recur arity for `defrecord`, `deftype` and `definterface`
- [#1718](https://togithub.com/clj-kondo/clj-kondo/issues/1718): make unsorted namespaces linter case-insensitive
- [#1722](https://togithub.com/clj-kondo/clj-kondo/issues/1722): suppress redundant do in `.cljc` for just one language
### [`v2022.05.31`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220531)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.29...v2022.05.31)
- Ensure every node has a location when returning from `:macroexpand`
### [`v2022.05.29`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220529)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.28...v2022.05.29)
- Support `:instance-invocations` analysis bucket
- Copy `.clj_kondo` files from configs
### [`v2022.05.28`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220528)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.27...v2022.05.28)
- Fix false positive redundant do's from `:macroexpand` hooks (regression in 2022.05.27)
### [`v2022.05.27`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220527)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.04.25...v2022.05.27)
- [#686](https://togithub.com/clj-kondo/clj-kondo/issues/686): new `:warn-on-reflection` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#warn-on-reflection).
- [#1692](https://togithub.com/clj-kondo/clj-kondo/pull/1692): new linter `:redundant-call` - warns when a function or macro call with 1 given argument returns the argument. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#redundant-call).
- All new JVM `clj-kondo.hooks-api` API ns for REPL usage. See
[docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/hooks.md#developing-hooks-in-the-repl).
- [#1674](https://togithub.com/clj-kondo/clj-kondo/pull/1674): config options to limit analysis of var-usages and bodies of var-definitions. Can be used to get a quick overview of a project's namespaces and vars, without analyzing their details.
- [#1676](https://togithub.com/clj-kondo/clj-kondo/pull/1676): Add support for custom function to be called for progress update, `:file-analyzed-fn`.
- [#1697](https://togithub.com/clj-kondo/clj-kondo/issues/1697): update docs and messaging around importing configs ([@lread](https://togithub.com/lread))
- [#1700](https://togithub.com/clj-kondo/clj-kondo/issues/1700): allow discouraged var on non-analyzed (closed source) vars
- [#1703](https://togithub.com/clj-kondo/clj-kondo/issues/1703): update built-in cache with newest CLJ (1.11.1) and CLJS (1.11.54) versions
- [#1704](https://togithub.com/clj-kondo/clj-kondo/issues/1704): fix re-frame analysis bug
- [#1705](https://togithub.com/clj-kondo/clj-kondo/issues/1705): add pre-commit utility support via `.pre-commit-hooks.yaml`
- [#1701](https://togithub.com/clj-kondo/clj-kondo/issues/1701): preserve locations in seqs and symbols in `:macroexpand` hook
- [#1685](https://togithub.com/clj-kondo/clj-kondo/issues/1685): Support `.clj_kondo` hook extension
- [#1670](https://togithub.com/clj-kondo/clj-kondo/issues/1670): parse error on auto-resolved keyword for current ns
- [#1672](https://togithub.com/clj-kondo/clj-kondo/issues/1672): support `clojure.test/deftest-`
- [#1678](https://togithub.com/clj-kondo/clj-kondo/issues/1678): support `with-precision`
### [`v2022.04.25`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220425)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.04.23...v2022.04.25)
- [#1669](https://togithub.com/clj-kondo/clj-kondo/issues/1669): fix re-frame analysis problem causing file to be not parsed
### [`v2022.04.23`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220423)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.04.08...v2022.04.23)
- [#1653](https://togithub.com/clj-kondo/clj-kondo/issues/1653): new linter `:keyword-binding` - warns when a keyword
is used in a `:keys` binding vector. This linter is `:off` by default. See [docs](doc/linters.md#keyword-in-binding-vector).
- [#996](https://togithub.com/clj-kondo/clj-kondo/issues/996): new linter `:discouraged-var`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#discouraged-var).
- [#1618](https://togithub.com/clj-kondo/clj-kondo/issues/1618): new `:config-in-ns` configuration option. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#config-in-ns).
- Support `:ns-groups` configuration option. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#namespace-groups)
- [#1657](https://togithub.com/clj-kondo/clj-kondo/issues/1657): support bindings with same name in `clojure.core.match`
- [#1659](https://togithub.com/clj-kondo/clj-kondo/issues/1659): fix false positive unused import
- [#1649](https://togithub.com/clj-kondo/clj-kondo/issues/1649): dot (`.`) should
be unresolved when not in fn position
### [`v2022.04.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220408)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.03.09...v2022.04.08)
- [#1331](https://togithub.com/clj-kondo/clj-kondo/issues/1331): new linter `:non-arg-vec-return-type-hint` that warns when a return type hint is not placed on the arg vector (CLJ only). See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#non-arg-vec-return-type-hint).
- Enable `:namespace-name-mismatch` by default
- [#1611](https://togithub.com/clj-kondo/clj-kondo/pull/1611): support `^:replace` override for nested config values
- [#1625](https://togithub.com/clj-kondo/clj-kondo/issues/1625): Add option `--skip-lint`, to skip linting while still executing other tasks like copying configuration with `--copy-configs`.
- [#1620](https://togithub.com/clj-kondo/clj-kondo/issues/1620): return type too narrow for `re-find`
Analysis:
- [#1623](https://togithub.com/clj-kondo/clj-kondo/issues/1623): Implement analysis for Java classes: `:java-class-definitions` and `:java-class-usages`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/analysis/README.md).
- [#1635](https://togithub.com/clj-kondo/clj-kondo/pull/1635): add `:end-row` and `end-col` to analyze data for `:namespace-definitions`
- [#1651](https://togithub.com/clj-kondo/clj-kondo/issues/1651): Improvements for `:protocol-impls`
- [#1612](https://togithub.com/clj-kondo/clj-kondo/issues/1612): Improve analysis for `deftype`
- [#1613](https://togithub.com/clj-kondo/clj-kondo/issues/1613): Improve analysis for `reify`
- [#1609](https://togithub.com/clj-kondo/clj-kondo/issues/1609): keyword analysis for `ns` + `require`
### [`v2022.03.09`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220309)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.03.08...v2022.03.09)
- [#1607](https://togithub.com/clj-kondo/clj-kondo/issues/1607): disable `:namespace-name-mismatch` until further notice due to problems on Windows
- [#1570](https://togithub.com/clj-kondo/clj-kondo/issues/1570): add `:defmethod true` to defmethod `var-usages` analysis.
### [`v2022.03.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220308)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.03.04...v2022.03.08)
##### New
- [#1602](https://togithub.com/clj-kondo/clj-kondo/issues/1602): analysis data now includes `:protocol-ns` and `:protocol-name` on protocol methods ([@lread](https://togithub.com/lread))
##### Fixed
- [#1605](https://togithub.com/clj-kondo/clj-kondo/issues/1605): error while determining namespace mismatch on Windows
### [`v2022.03.04`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220304)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.02.09...v2022.03.04)
##### New
- [#1240](https://togithub.com/clj-kondo/clj-kondo/issues/1240): Add linter `:namespace-name-mismatch` to detect when namespace name does not match file name. ([@svdo](https://togithub.com/svdo))
##### Fixed
- [#1598](https://togithub.com/clj-kondo/clj-kondo/issues/1598): `:scope-end-row` is missing on multi-arity fn args ([@mainej](https://togithub.com/mainej))
- [#1588](https://togithub.com/clj-kondo/clj-kondo/issues/1588): analyze type hint in reified method
- [#1581](https://togithub.com/clj-kondo/clj-kondo/issues/1581): redundant fn wrapper false positive when using pre-post-map
- [#1582](https://togithub.com/clj-kondo/clj-kondo/issues/1582): False positive Insufficient input when using symbol call
- [#1579](https://togithub.com/clj-kondo/clj-kondo/issues/1579): relax linting in tagged literal forms
- [#1578](https://togithub.com/clj-kondo/clj-kondo/issues/1578): allow `:deprecated-var` config in ns form metadata
- [#892](https://togithub.com/clj-kondo/clj-kondo/issues/892): suppress unresolved namespaces in data readers config
- [#1594](https://togithub.com/clj-kondo/clj-kondo/issues/1594): lint clojure.test.check.properties/for-all as let
### [`v2022.02.09`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220209)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.01.15...v2022.02.09)
##### New
- [#1549](https://togithub.com/clj-kondo/clj-kondo/issues/1549): detect and warn on cyclic task dependencies in `bb.edn` ([@mknoszlig](https://togithub.com/mknoszlig))
- [#1547](https://togithub.com/clj-kondo/clj-kondo/issues/1547): catch undefined tasks present in `:depends`. ([@mknoszlig](https://togithub.com/mknoszlig))
- [#783](https://togithub.com/clj-kondo/clj-kondo/issues/783): `:keys` can be used in `:ret` position, also fixes types return map call as input for another typed map function. ([@pfeodrippe](https://togithub.com/pfeodrippe))
- [#1526](https://togithub.com/clj-kondo/clj-kondo/issues/1526): detect
redundant fn wrappers, like `#(inc %)`. See
[docs](doc/linters.md#redundant-fn-wrapper). This linter of `:off` by default
but may be enabled by default in future versions after more testing.
- [#1560](https://togithub.com/clj-kondo/clj-kondo/issues/1560): lint task definition keys in `bb.edn` ([@mknoszlig](https://togithub.com/mknoszlig))
- [#1484](https://togithub.com/clj-kondo/clj-kondo/issues/1484): Add analysis information about protocol implementations. ([@ericdallo](https://togithub.com/ericdallo))
##### Fixed
- [#1563](https://togithub.com/clj-kondo/clj-kondo/issues/1563): vector inside list should not be linted as function call when inside tagged literal.
- [#1540](https://togithub.com/clj-kondo/clj-kondo/issues/1540): imported class flagged as unused when it only appears in annotation metadata.
- [#1571](https://togithub.com/clj-kondo/clj-kondo/issues/1571): ignore spliced reader conditionals wrt. namespace sorting.
- [#1574](https://togithub.com/clj-kondo/clj-kondo/issues/1574): def usage context contains reference of the re-frame reg-sub it is used in. ([@benedekfazekas](https://togithub.com/benedekfazekas))
### [`v2022.01.15`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220115)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.01.13...v2022.01.15)
- Fix [#1537](https://togithub.com/clj-kondo/clj-kondo/issues/1537): stackoverflow with potemkin import vars with cyclic references
- Fix [#1545](https://togithub.com/clj-kondo/clj-kondo/issues/1545): `recur` in `cond->` gives warning about `recur` not in tail position.
- Fix [#1535](https://togithub.com/clj-kondo/clj-kondo/issues/1535): support CLJS vars / protocols references via dot rather than slash.
### [`v2022.01.13`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220113)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2021.12.19...v2022.01.13)
- Add linter `:conflicting-fn-arity`: warn when an arity occurs more than once in a function that overloads on arity. [#1136](https://togithub.com/clj-kondo/clj-kondo/issues/1136) ([@mknoszlig](https://togithub.com/mknoszlig))
- Add linter `:clj-kondo-config` which provides linting for `.clj-kondo/config.edn`. [#1527](https://togithub.com/clj-kondo/clj-kondo/issues/1527)
- Relax `:reduce-without-init` for functions known to be safe [#1519](https://togithub.com/clj-kondo/clj-kondo/issues/1519)
- Symbol arg to `fdef` can be arbitrary namespace [#1532](https://togithub.com/clj-kondo/clj-kondo/issues/1532)
- Improve potemkin generated var-definition analysis [#1521](https://togithub.com/clj-kondo/clj-kondo/issues/1521) ([@ericdallo](https://togithub.com/ericdallo))
- Stabilize cache version independent from kondo version [#1520](https://togithub.com/clj-kondo/clj-kondo/issues/1520). This allows you to re-use the cache over multiple kondo versions.
- `:output {:progress true}` should print to stderr [#1523](https://togithub.com/clj-kondo/clj-kondo/issues/1523)
- Only print informative messages when `--debug` is enabled. [#1514](https://togithub.com/clj-kondo/clj-kondo/issues/1514)
- Add Sublime Text instructions [#827](https://togithub.com/clj-kondo/clj-kondo/issues/827) ([@KyleErhabor](https://togithub.com/KyleErhabor))
- Fix end location in anonyous function body [#1533](https://togithub.com/clj-kondo/clj-kondo/issues/1533)
- Bump datalog-parser to 0.1.9: allows symbol constants in datalog expression
### [`v2021.12.19`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20211219)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2021.12.16...v2021.12.19)
##### New
- Add linter `:reduce-without-init`: warn against two argument version of
reduce. Disabled by
default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#reduce-without-initial-value). [#1064](https://togithub.com/clj-kondo/clj-kondo/issues/1064) ([@mknoszlig](https://togithub.com/mknoszlig))
- Add linter `:quoted-case-test-constant`: warn on quoted test constants in case. [#1496](https://togithub.com/clj-kondo/clj-kondo/issues/1496) ([@mknoszlig](https://togithub.com/mknoszlig))
##### Enhanced
- Fix false positive unused binding in re-frame subscribe [#1504](https://togithub.com/clj-kondo/clj-kondo/issues/1504)
- Fix exclude-defmulti-args for CLJS [#1503](https://togithub.com/clj-kondo/clj-kondo/issues/1503)
- Fix warning location of namespaced map [#1475](https://togithub.com/clj-kondo/clj-kondo/issues/1475)
- False positive :docstring-no-summary on multiline docstrings [#1507](https://togithub.com/clj-kondo/clj-kondo/issues/1507)
### [`v2021.12.16`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20211216)
[Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2021.12.01...v2021.12.16)
##### New
- Automatically load configurations from `.clj-kondo/*/*/config.edn`. This can be disabled with `:auto-load-configs false`. [#1492](https://togithub.com/clj-kondo/clj-kondo/issues/1492)
- Add linter `:duplicate-case-test-constant`: detect duplicate case test constants. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#duplicate-case-test-constant). [#587](https://togithub.com/clj-kondo/clj-kondo/issues/587) ([@mknoszlig](https://togithub.com/mknoszlig))
- Add linter `:unexpected-recur`: warn on `recur` in unexpected (non-tail) position. [#1126](https://togithub.com/clj-kondo/clj-kondo/issues/1126)
- Add linter `:used-underscored-binding`: warn on used bindings that start with underscore. Disabled by default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#used-underscored-bindings). [#1149](https://togithub.com/clj-kondo/clj-kondo/issues/1149) ([@mknoszlig](https://togithub.com/mknoszlig))
- Add linter `:docstring-blank` for checking empty docstring. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#docstring-blank). [#805](https://togithub.com/clj-kondo/clj-kondo/issues/805) ([@joodie](https://togithub.com/joodie))
- Add linter `:docstring-leading-trailing-whitespace` for checking leading and trailing whitespace in docstring. Disabled by default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#docstring-leading-trailing-whitespace). [#805](https://togithub.com/clj-kondo/clj-kondo/issues/805) ([@joodie](https://togithub.com/joodie))
- Add linter `:docstring-no-summary` for checking the absence of summary of args in docstring. Disabled by default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#docstring-no-summary). [#805](https://togithub.com/clj-kondo/clj-kondo/issues/805) ([@joodie](https://togithub.com/joodie))
- Add `:exclude-defmulti-args` option for `:unused-bindings` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md). [#1188](https://togithub.com/clj-kondo/clj-kondo/issues/1188) ([@mknoszlig](https://togithub.com/mknoszlig))
- Support `:config-in-comment` [#1473](https://togithub.com/clj-kondo/clj-kondo/issues/1473). See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#override-config-in-comment-forms).
##### En
Configuration
📅 Schedule: Branch creation - "on sunday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
2021.02.13
->2024.05.24
Release Notes
clj-kondo/clj-kondo (cljkondo/clj-kondo)
### [`v2024.05.24`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240524) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.05.22...v2024.05.24) - Imports were copied to `.clj-kondo/imports` but weren't pick up correctly. Thanks [@frenchy64](https://togithub.com/frenchy64) for reporting the bug. - [#2333](https://togithub.com/clj-kondo/clj-kondo/issues/2333): Add location to invalid literal syntax errors ### [`v2024.05.22`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240522) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.03.13...v2024.05.22) - [#2323](https://togithub.com/clj-kondo/clj-kondo/issues/2323): New linter `:redundant-str-call` which detects unnecessary `str` calls. Off by default. - [#2302](https://togithub.com/clj-kondo/clj-kondo/issues/2302): New linter: `:equals-expected-position` to enforce expected value to be in first (or last) position. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md) - [#1035](https://togithub.com/clj-kondo/clj-kondo/issues/1035): Support SARIF output with `--config {:output {:format :sarif}}` - [#2307](https://togithub.com/clj-kondo/clj-kondo/issues/2307): import configs to intermediate dir - [#2309](https://togithub.com/clj-kondo/clj-kondo/issues/2309): Report unused `for` expression - [#2315](https://togithub.com/clj-kondo/clj-kondo/issues/2315): Fix regression with unused JavaScript namespace - [#2304](https://togithub.com/clj-kondo/clj-kondo/issues/2304): Report unused value in `defn` body - [#2227](https://togithub.com/clj-kondo/clj-kondo/issues/2227): Allow `:flds` to be used in keys destructuring for ClojureDart - [#2316](https://togithub.com/clj-kondo/clj-kondo/issues/2316): Handle ignore hint on protocol method - [#2322](https://togithub.com/clj-kondo/clj-kondo/issues/2322): Add location to warning about invalid unicode character - [#2319](https://togithub.com/clj-kondo/clj-kondo/issues/2319): Support `:discouraged-var` on global JS values, like `js/fetch` ### [`v2024.03.13`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240313) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.03.05...v2024.03.13) - Fix memory usage regression introduced in 2024.03.05 - [#2299](https://togithub.com/clj-kondo/clj-kondo/issues/2299): Add documentation for `:java-static-field-call`. ### [`v2024.03.05`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240305) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2024.02.12...v2024.03.05) - [#1732](https://togithub.com/clj-kondo/clj-kondo/issues/1732): new linter: `:shadowed-fn-param` which warns on using the same parameter name twice, as in `(fn [x x])` - [#2276](https://togithub.com/clj-kondo/clj-kondo/issues/2276): New Clojure 1.12 array notation (`String*`) may occur outside of metadata - [#2278](https://togithub.com/clj-kondo/clj-kondo/issues/2278): `bigint` in CLJS is a known symbol in `extend-type` - [#2288](https://togithub.com/clj-kondo/clj-kondo/issues/2288): fix static method analysis and suppressing `:java-static-field-call` locally - [#2293](https://togithub.com/clj-kondo/clj-kondo/issues/2293): fix false positive static field call for `(Thread/interrupted)` - [#2296](https://togithub.com/clj-kondo/clj-kondo/issues/2296): publish multi-arch Docker images (including linux aarch64) - [#2295](https://togithub.com/clj-kondo/clj-kondo/issues/2295): lint case test symbols in list ### [`v2024.02.12`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20240212) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.12.15...v2024.02.12) - [#2274](https://togithub.com/clj-kondo/clj-kondo/issues/2274): Support clojure 1.12 new type hint notations - [#2260](https://togithub.com/clj-kondo/clj-kondo/issues/2260): New linter `:java-static-field-call`: calling static *field* as function should warn, e.g. `(System/err)` - [#1917](https://togithub.com/clj-kondo/clj-kondo/issues/1917): detect string being called as function - [#1923](https://togithub.com/clj-kondo/clj-kondo/issues/1923): Lint invalid fn name - [#2256](https://togithub.com/clj-kondo/clj-kondo/issues/2256): enable `assert` in hooks - [#2253](https://togithub.com/clj-kondo/clj-kondo/issues/2253): add support for `datomic-type-extensions` to datalog syntax checking - [#2255](https://togithub.com/clj-kondo/clj-kondo/issues/2255): support `:exclude-files` in combination with linting from stdin + provided `--filename` argument - [#2246](https://togithub.com/clj-kondo/clj-kondo/issues/2246): preserve metadata on symbol when going through `:macroexpand` hook - [#2254](https://togithub.com/clj-kondo/clj-kondo/issues/2254): lint files in absence of config dir - [#2251](https://togithub.com/clj-kondo/clj-kondo/issues/2251): support suppressing `:unused-value` using `:config-in-call` - [#2266](https://togithub.com/clj-kondo/clj-kondo/issues/2266): suppress `:not-a-function` linter in reader tag - [#2259](https://togithub.com/clj-kondo/clj-kondo/issues/2259): `ns-map` unmaps var defined prior in namespace - [#2272](https://togithub.com/clj-kondo/clj-kondo/issues/2272): Report var usage in `if`/`when` condition as always truthy, e.g. `(when #'some-var 1)` ### [`v2023.12.15`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20231215) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.10.20...v2023.12.15) - [#1990](https://togithub.com/clj-kondo/clj-kondo/issues/1990): Specify `:min-clj-kondo-version` in config.edn and warn when current version is too low ([@snasphysicist](https://togithub.com/snasphysicist)) - [#1753](https://togithub.com/clj-kondo/clj-kondo/issues/1753): New linter `:underscore-in-namespace` ([@cosineblast](https://togithub.com/cosineblast)) - [#2207](https://togithub.com/clj-kondo/clj-kondo/issues/2207): New `:condition-always-true` linter, see [docs](doc/linters.md) - [#2235](https://togithub.com/clj-kondo/clj-kondo/issues/2235): New `:multiple-async-in-deftest` linter: warn on multiple async blocks in `cljs.test/deftest`, since only the first will run. - [#2013](https://togithub.com/clj-kondo/clj-kondo/issues/2013): Fix NPE and similar errors when linting an import with an illegal token ([@cosineblast](https://togithub.com/cosineblast)) - [#2215](https://togithub.com/clj-kondo/clj-kondo/issues/2215): Passthrough hook should not affect linting - [#2232](https://togithub.com/clj-kondo/clj-kondo/issues/2232): Bump analysis for clojure 1.12 (partitionv, etc) - [#2223](https://togithub.com/clj-kondo/clj-kondo/issues/2223): Do not consider classes created with `deftype` a var that is referred with `:refer :all` - [#2236](https://togithub.com/clj-kondo/clj-kondo/issues/2236): `:line-length` warnings cannot be `:clj-kondo/ignore`d - [#2224](https://togithub.com/clj-kondo/clj-kondo/issues/2224): Give `#'foo/foo` and `(var foo/foo)` the same treatment with respect to private calls - [#2239](https://togithub.com/clj-kondo/clj-kondo/issues/2239): Fix printing of unresolved var when going through `:macroexpand` hook ### [`v2023.10.20`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20231020) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.09.07...v2023.10.20) - [#1804](https://togithub.com/clj-kondo/clj-kondo/issues/1804): new linter `:self-requiring-namespace` - [#2065](https://togithub.com/clj-kondo/clj-kondo/issues/2065): new linter `:equals-false`, counterpart of `:equals-true` ([@svdo](https://togithub.com/svdo)) - [#2199](https://togithub.com/clj-kondo/clj-kondo/issues/2199): add `:syntax` check for var names starting or ending with dot (reserved by Clojure) - [#2179](https://togithub.com/clj-kondo/clj-kondo/issues/2179): consider alias-as-object usage in CLJS for :unused-alias linter - [#2183](https://togithub.com/clj-kondo/clj-kondo/issues/2183): respect `:level` in `:discouraged-var` config - [#2184](https://togithub.com/clj-kondo/clj-kondo/issues/2184): Add missing documentation for `:single-logical-operand` linter ([@wtfleming](https://togithub.com/wtfleming)) - [#2187](https://togithub.com/clj-kondo/clj-kondo/issues/2187): Fix type annotation of argument of `clojure.core/parse-uuid` from `nilable/string` to string ([@dbunin](https://togithub.com/dbunin)) - [#2192](https://togithub.com/clj-kondo/clj-kondo/issues/2192): Support `:end-row` and `:end-col` in `:pattern` output format ([@joshgelbard](https://togithub.com/joshgelbard)) - [#2182](https://togithub.com/clj-kondo/clj-kondo/issues/2182): Namespace local configuration does not silence `:missing-else-branch` - [#2186](https://togithub.com/clj-kondo/clj-kondo/issues/2186): Improve warning when `--copy-configs` is enabled but no config dir exists - [#2190](https://togithub.com/clj-kondo/clj-kondo/issues/2190): false positive with `:unused-alias` and namespaced map - [#2200](https://togithub.com/clj-kondo/clj-kondo/issues/2200): include optional `:callstack` in analysis ### [`v2023.09.07`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230907) - [#1332](https://togithub.com/clj-kondo/clj-kondo/issues/1332): New linter `:unused-alias`. See [docs](doc/linters.md). - [#2143](https://togithub.com/clj-kondo/clj-kondo/issues/2143): false positive type warning for `clojure.set/project` - [#2145](https://togithub.com/clj-kondo/clj-kondo/issues/2145): support ignore hint on multi-arity branch of function definition - [#2147](https://togithub.com/clj-kondo/clj-kondo/issues/2147): use alternative solution as workaround for [https://github.com/cognitect/transit-clj/issues/43](https://togithub.com/cognitect/transit-clj/issues/43) - [#2152](https://togithub.com/clj-kondo/clj-kondo/issues/2152): Fix false positive with used-underscored-binding with core.match - [#2150](https://togithub.com/clj-kondo/clj-kondo/issues/2150): allow command line options = as in --fail-level=error - [#2149](https://togithub.com/clj-kondo/clj-kondo/issues/2149): `:lint-as clojure.core/defmacro` should suppress `&env` as unresolved symbol - [#2161](https://togithub.com/clj-kondo/clj-kondo/issues/2161): Fix type annotation for `clojure.core/zero?` to number -> boolean - [#2165](https://togithub.com/clj-kondo/clj-kondo/issues/2165): Fix error when serializing type data to cache - [#2167](https://togithub.com/clj-kondo/clj-kondo/issues/2167): Don't crash when `:unresolved-symbol` linter config contains unqualified symbol - [#2170](https://togithub.com/clj-kondo/clj-kondo/issues/2170): `:keyword-binding` linter should ignore auto-resolved keywords - [#2172](https://togithub.com/clj-kondo/clj-kondo/issues/2172): detect invalid amount of args and invalid argument type for `throw` - [#2164](https://togithub.com/clj-kondo/clj-kondo/issues/2164): deftest inside let triggers :unused-value - [#2154](https://togithub.com/clj-kondo/clj-kondo/issues/2154): add `:exclude` option to `:deprecated-namespace` linter - [#2134](https://togithub.com/clj-kondo/clj-kondo/issues/2134): don't warn on usage of private var in `data_readers.clj(c)` - [#2148](https://togithub.com/clj-kondo/clj-kondo/issues/2148): warn on configuration error in `:unused-refeferred-var` linter - Expose more vars in `clj-kondo.hooks-api` interpreter namespace ### [`v2023.07.13`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230713) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.05.26...v2023.07.13) - [#2111](https://togithub.com/clj-kondo/clj-kondo/issues/2111): warn on symbol in case test using new opt-in linter `:case-symbol-test` - Rename `:quoted-case-test-constant` to `:case-quoted-test` - Rename `:duplicate-case-test-constant` to `:case-duplicate-test` - [#1230](https://togithub.com/clj-kondo/clj-kondo/issues/1199): new linter, `:unsorted imports` - [#1125](https://togithub.com/clj-kondo/clj-kondo/issues/1125): new `:deprecated-namespace` linter - [#2097](https://togithub.com/clj-kondo/clj-kondo/issues/2097): analyze and act on `defprotocol` metadata ([@lread](https://togithub.com/lread)) - [#2105](https://togithub.com/clj-kondo/clj-kondo/issues/2105): Consider `.cljd` files when linting ([@ericdallo](https://togithub.com/ericdallo)) - [#2101](https://togithub.com/clj-kondo/clj-kondo/issues/2101): false positive with `if-some` + `recur` - [#2109](https://togithub.com/clj-kondo/clj-kondo/issues/2109): `java.util.List` type hint corresponds to `:list` or nil - [#2096](https://togithub.com/clj-kondo/clj-kondo/issues/2096): apply `:arglists` metadata to `:arglist-strs` for analysis data ([@lread](https://togithub.com/lread)) - [#256](https://togithub.com/clj-kondo/clj-kondo/issues/256): warn on reader conditional usage in non-cljc files - [#2115](https://togithub.com/clj-kondo/clj-kondo/issues/2115): false positive `:redundant-fn-wrapper` in CLJS when passing keyword to JS - [#1082](https://togithub.com/clj-kondo/clj-kondo/issues/1082): protocol methods do not support varargs - [#2125](https://togithub.com/clj-kondo/clj-kondo/issues/2125): Setting `clj-kondo.hooks-api/*reload*` to true does not lint with the latest hook changes. - [#2135](https://togithub.com/clj-kondo/clj-kondo/issues/2135): private vars starting with `_` should not be reported as unused - [#1199](https://togithub.com/clj-kondo/clj-kondo/issues/1199): warn about reader conditional features that are not keywords, e.g. `#?(:clj 1 2)` (2 is not a keyword) - [#2132](https://togithub.com/clj-kondo/clj-kondo/issues/2132): false negative unused value in clojure.test - [#1294](https://togithub.com/clj-kondo/clj-kondo/issues/1294): redefined var comment edge case ### [`v2023.05.26`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230526) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.05.18...v2023.05.26) - [#2083](https://togithub.com/clj-kondo/clj-kondo/issues/2083): fix regression with `:missing-test-assertion` introduced in 2023.05.18 - [#2084](https://togithub.com/clj-kondo/clj-kondo/issues/2084): add `:refers` to `:refer-all` finding - [#2086](https://togithub.com/clj-kondo/clj-kondo/issues/2086): false positive missing test assertion with `swap!` - [#2087](https://togithub.com/clj-kondo/clj-kondo/issues/2087): honor :config-in-comment for :unused-referred-var ### [`v2023.05.18`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230518) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.04.14...v2023.05.18) - Linter `:uninitialized-var` moved from default `:level :off` to `:warning` - [#2065](https://togithub.com/clj-kondo/clj-kondo/issues/2065): new linter `:equals-true`: suggest using `(true? x)` over `(= true x)` (defaults to `:level :off`). - [#2066](https://togithub.com/clj-kondo/clj-kondo/issues/2066): new linters `:plus-one` and `:minus-one`: suggest using `(inc x)` over `(+ x 1)` (and similarly for `dec` and `-`, defaults to `:level :off`) - [#2051](https://togithub.com/clj-kondo/clj-kondo/issues/2051): consider `:unresolved-namespace :exclude` as already required namespaces - [#2056](https://togithub.com/clj-kondo/clj-kondo/issues/2056): validate collection nodes when constructing and `--debug` is true - [#2058](https://togithub.com/clj-kondo/clj-kondo/issues/2058): warn about `#()` and `#""` in `.edn` files - [#2064](https://togithub.com/clj-kondo/clj-kondo/issues/2064): False positive when using `:sha` instead of `:git/sha` in combination with git url in `deps.edn` - [#2063](https://togithub.com/clj-kondo/clj-kondo/issues/2063): introduce new `:defined-by->lint-as` key which contains the `:lint-as` value for "defining" var, whereas `:defined-as` now always contains the name of the original "defining var". This is a **BREAKING** change. - [#1983](https://togithub.com/clj-kondo/clj-kondo/issues/1983): produce java-member-definition analysis for `.java` files. - [#2068](https://togithub.com/clj-kondo/clj-kondo/issues/2068): include `:or` default in `:local-usages analysis` - [#2079](https://togithub.com/clj-kondo/clj-kondo/issues/2079): analysis for `data_readers.clj` - [#2067](https://togithub.com/clj-kondo/clj-kondo/issues/2067): support `:ns-groups` to be used with `:analyze-call` and `:macroexpand` hooks - [#1918](https://togithub.com/clj-kondo/clj-kondo/issues/1918): ignore keyword bindings with namespaced in `:keyword-binding` linter - [#2073](https://togithub.com/clj-kondo/clj-kondo/issues/2073): `:lint-as clj-kondo.lint-as/def-catch-all` should ignore unresolved namespaces - [#2078](https://togithub.com/clj-kondo/clj-kondo/issues/2078): detect more `:missing-test-assertion` cases, e.g. `(deftest foo (not (= 1 2)))` ### [`v2023.04.14`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230414) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.03.17...v2023.04.14) - [#1196](https://togithub.com/clj-kondo/clj-kondo/issues/1196): show language context in `.cljc` files with `:output {:langs true}`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#show-language-context-in-cljc-files). - [#2026](https://togithub.com/clj-kondo/clj-kondo/issues/2026): coercing string did not create StringNode, but TokenNode, lead to false positive `Too many arguments to def` - [#2030](https://togithub.com/clj-kondo/clj-kondo/issues/2030): Add a new `:discouraged-tag` linter for discouraged tag literals. See the [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#discouraged-tag). - Add `:gen` support on `clojure.spec.alpha/keys` - [#1647](https://togithub.com/clj-kondo/clj-kondo/issues/1647): support `:exclude-patterns` in `:unresolved-symbol` linter - [#2036](https://togithub.com/clj-kondo/clj-kondo/pull/2036): False positive `:def-fn` on `def` + `reify` - [#2024](https://togithub.com/clj-kondo/clj-kondo/issues/2024): CLJS allows interop in constructor position - [#2025](https://togithub.com/clj-kondo/clj-kondo/issues/2025): support namespace groups with `:unresolved-namespace` linter - [#2039](https://togithub.com/clj-kondo/clj-kondo/issues/2039): :analysis `:symbols` + `:aliased-namespace-symbol` linter gives false positive in quoted symbol - [#2043](https://togithub.com/clj-kondo/clj-kondo/issues/2043): support ignore annotation on private calls - Support `:exclude-pattern` in `:unused-binding` - [#2046](https://togithub.com/clj-kondo/clj-kondo/issues/2046): clj-kondo stuck in loop with multiple :or in destructuring - [#2048](https://togithub.com/clj-kondo/clj-kondo/issues/2048): better linting in `schema.core/defn` with invalid s-exprs ### [`v2023.03.17`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230317) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.02.17...v2023.03.17) - [#2010](https://togithub.com/clj-kondo/clj-kondo/issues/2010): Support inline macro configuration. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#inline-macro-configuration) - [#2010](https://togithub.com/clj-kondo/clj-kondo/issues/2010): Short syntax to disable linters: `{:ignore [:unresolved-symbol]}` or `{:ignore true}`, valid in ns-metadata, `:config-in-ns`, `:config-in-call` - [#2009](https://togithub.com/clj-kondo/clj-kondo/issues/2009): new `:var-same-name-except-case` linter: warn when vars have names that differ only in case (important for AOT compilation and case-insensitive filesystems) ([@emlyn](https://togithub.com/emlyn)). - [#1269](https://togithub.com/clj-kondo/clj-kondo/issues/1269): warn on `:jvm-opts` in top level of `deps.edn` - [#2003](https://togithub.com/clj-kondo/clj-kondo/issues/2003): detect invalid arity call for function passed to `update`, `update-in`, `swap!`, `swap-vals!`, `send`, `send-off`, and `send-via` ([@jakemcc](https://togithub.com/jakemcc)). - [#1983](https://togithub.com/clj-kondo/clj-kondo/issues/1983): add support for java member analysis, via new `java-member-definitions` bucket ([@ericdallo](https://togithub.com/ericdallo)). - [#1999](https://togithub.com/clj-kondo/clj-kondo/issues/1999): add `hooks-api/set-node` and `hooks-api/set-node?` ([@sritchie](https://togithub.com/sritchie)). - [#1997](https://togithub.com/clj-kondo/clj-kondo/issues/1997): False positive on `clojure.core/aget` with more than two args - [#2011](https://togithub.com/clj-kondo/clj-kondo/issues/2011): push images to GHCR ([@lispyclouds](https://togithub.com/lispyclouds)) - [#2001](https://togithub.com/clj-kondo/clj-kondo/issues/2001): false positive `:misplaced-docstring` in `clojure.test/deftest` ### [`v2023.02.17`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230217) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.01.20...v2023.02.17) - [#1976](https://togithub.com/clj-kondo/clj-kondo/issues/1976): warn about using multiple bindings after varargs (`&`) symbol in fn syntax - Add arity checks for core `def` - [#1954](https://togithub.com/clj-kondo/clj-kondo/issues/1954): new `:uninitialized-var` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#uninitialized-var). - [#1996](https://togithub.com/clj-kondo/clj-kondo/issues/1996): expose `hooks-api/resolve`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/hooks.md#api). - [#1971](https://togithub.com/clj-kondo/clj-kondo/issues/1971): false positive `:redundant-fn-wrapper` with syntax-quoted body - [#1984](https://togithub.com/clj-kondo/clj-kondo/issues/1984): lint java constructor calls as unresolved-symbol when using dot notation. - [#1970](https://togithub.com/clj-kondo/clj-kondo/issues/1970): `:dynamic-var-not-earmuffed` should be opt-in - [#1972](https://togithub.com/clj-kondo/clj-kondo/issues/1972): type hint aliases should not result in unresolved symbol - [#1951](https://togithub.com/clj-kondo/clj-kondo/issues/1951): include end locations in `:line-length` linter - [#1987](https://togithub.com/clj-kondo/clj-kondo/issues/1987): Fix escaping of regex literal string in `:macroexpand` - [#1980](https://togithub.com/clj-kondo/clj-kondo/issues/1980): make support for ignoring warnings in generated hooks explicit - [#1979](https://togithub.com/clj-kondo/clj-kondo/issues/1979): allow `:level :off` in `:discouraged-var` config on var level - [#1995](https://togithub.com/clj-kondo/clj-kondo/issues/1995): `clj-kondo.lint-as/def-catch-all` doesn't emit locations, fixes navigation for lsp - [#1978](https://togithub.com/clj-kondo/clj-kondo/issues/1978): false positive type error with symbol argument + varargs - [#1989](https://togithub.com/clj-kondo/clj-kondo/issues/1989): don't analyze location metadata coming from `:macroexpand hook` (performance optimization) ### [`v2023.01.20`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230120) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.01.16...v2023.01.20) - [#1956](https://togithub.com/clj-kondo/clj-kondo/issues/1956): enable printing to `*err*` in hooks - [#1943](https://togithub.com/clj-kondo/clj-kondo/issues/1943): allow `:discouraged-namespace` to be suppressed with `#_:clj-kondo/ignore` - [#1942](https://togithub.com/clj-kondo/clj-kondo/issues/1942): prioritize specific namespace over ns-groups for `:discouraged-namespace` linter - [#1959](https://togithub.com/clj-kondo/clj-kondo/issues/1959): analyze custom `defn` properly - [#1961](https://togithub.com/clj-kondo/clj-kondo/issues/1961): be lenient with unexpected type - [#1945](https://togithub.com/clj-kondo/clj-kondo/issues/1945): support merging of multiple ns-group configs - [#1962](https://togithub.com/clj-kondo/clj-kondo/issues/1962): don't emit warning for aliased namespace var usage in syntax-quote - [#1952](https://togithub.com/clj-kondo/clj-kondo/issues/1952): add `:exclude-urls` and `:exclude-pattern` ### [`v2023.01.16`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230116) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2023.01.12...v2023.01.16) - [#1920](https://togithub.com/clj-kondo/clj-kondo/issues/1920): new linter `:def-fn`: warn when using `fn` inside `def`, or `fn` inside `let` inside `def` ([@andreyorst](https://togithub.com/andreyorst)). - [#1949](https://togithub.com/clj-kondo/clj-kondo/issues/1949): `:aliased-namespace-var-usage` gives erroneous output for keywords - Add test for [#1944](https://togithub.com/clj-kondo/clj-kondo/issues/1944) (already worked) - Don't reload SCI namespace on every hook usage ### [`v2023.01.12`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20230112) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.12.10...v2023.01.12) - [#1742](https://togithub.com/clj-kondo/clj-kondo/issues/1742): new linter `:aliased-namespace-var-usage`: warn on var usage from namespaces that were used with `:as-alias`. See [demo](https://twitter.com/borkdude/status/1613524896625340417/photo/1). - [#1914](https://togithub.com/clj-kondo/clj-kondo/issues/1914): Don't warn about single arg use when there's a second arg in a reader conditional ([@mk](https://togithub.com/mk)) - [#1912](https://togithub.com/clj-kondo/clj-kondo/issues/1912): Allow forward references in `comment` forms ([@mk](https://togithub.com/mk)). See [demo](https://twitter.com/borkdude/status/1603028023565062145). - [#1926](https://togithub.com/clj-kondo/clj-kondo/issues/1926): Add keyword analysis for edn files. - [#1922](https://togithub.com/clj-kondo/clj-kondo/issues/1922): don't crash on invalid type specification - [#1902](https://togithub.com/clj-kondo/clj-kondo/issues/1902): provide `:symbols` analysis for navigation to symbols in quoted forms or EDN files. See [demo](https://twitter.com/borkdude/status/1612773780589355008). - [#1939](https://togithub.com/clj-kondo/clj-kondo/issues/1939): no longer warn on unused namespace that was only used with `:as-alias` - [#1911](https://togithub.com/clj-kondo/clj-kondo/issues/1911): missing test assertion linter doesn't work in CLJS - [#1891](https://togithub.com/clj-kondo/clj-kondo/issues/1891): support `CLJ_KONDO_EXTRA_CONFIG_DIR` environment variable to enable extra linters after project config ### [`v2022.12.10`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221210) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.12.08...v2022.12.10) - [#1909](https://togithub.com/clj-kondo/clj-kondo/issues/1909): lower requirement on `glibc` in dynamic linux binary to 2.31 by using fixed version of CircleCI image ### [`v2022.12.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221208) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.11.02...v2022.12.08) - [#609](https://togithub.com/clj-kondo/clj-kondo/issues/609): typecheck var usage, e.g. `(def x :foo) (inc x)` will now give a warning - [#1867](https://togithub.com/clj-kondo/clj-kondo/issues/1867): add name metadata to class usage - [#1875](https://togithub.com/clj-kondo/clj-kondo/issues/1875): add `:duplicate-field-name` linter for deftype and defrecord definitions. - [#1883](https://togithub.com/clj-kondo/clj-kondo/issues/1883): constructor usage should have name-col in analysis - [#1874](https://togithub.com/clj-kondo/clj-kondo/issues/1874): fix name of fully qualified class usage - [#1876](https://togithub.com/clj-kondo/clj-kondo/issues/1876): suppress . analysis from .. macroexpansion - [#1877](https://togithub.com/clj-kondo/clj-kondo/issues/1877): suppress `new` analysis from `(String. x)` expansion - [#1888](https://togithub.com/clj-kondo/clj-kondo/issues/1888): use `namespace-munge` for resolving hook files rather than `munge` - [#1896](https://togithub.com/clj-kondo/clj-kondo/issues/1896): don't consider `**`, `***` etc. to be a dynamic vars - [#1899](https://togithub.com/clj-kondo/clj-kondo/issues/1899): treat var or local reference as unused value when not in tail position - [#1903](https://togithub.com/clj-kondo/clj-kondo/issues/1903): int can be cast to double - [#1871](https://togithub.com/clj-kondo/clj-kondo/issues/1871): clj-kondo marks args in `definterface` as unused - [#1879](https://togithub.com/clj-kondo/clj-kondo/issues/1879): analyze `definterface` more similarly to `defprotocol` for lsp-navigation - [#1907](https://togithub.com/clj-kondo/clj-kondo/issues/1907): add `hooks-api/generated-node?` function to check if a node was generated - [#1887](https://togithub.com/clj-kondo/clj-kondo/issues/1887), use `re-find` for ns groups rather than re-matches ### [`v2022.11.02`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221102) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.10.14...v2022.11.02) - [#1846](https://togithub.com/clj-kondo/clj-kondo/issues/1846): new linters: `:earmuffed-var-not-dynamic` and `:dynamic-var-not-earmuffed`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#dynamic-vars). - [#1842](https://togithub.com/clj-kondo/clj-kondo/issues/1842): Add `:exclude` option to `:used-underscored-binding` ([@staifa](https://togithub.com/staifa)) - [#1840](https://togithub.com/clj-kondo/clj-kondo/issues/1840): Fix warning in `.cljs` and `.cljc` for `:aliased-namespace-symbol` in interop calls. ([@NoahTheDuke](https://togithub.com/NoahTheDuke)) - [#1845](https://togithub.com/clj-kondo/clj-kondo/issues/1845): add `:derived-location` to analysis when location is derived from parent node - [#1853](https://togithub.com/clj-kondo/clj-kondo/issues/1853): fix `:level :off` not being respected in `:discouraged-var` configs that are merged in. - [#1855](https://togithub.com/clj-kondo/clj-kondo/issues/1855): accept symbol in addition to keyword in `clojure.spec.alpha/def` name position - [#1844](https://togithub.com/clj-kondo/clj-kondo/issues/1844): support extra schema in `schema.core/defrecord` - [#1720](https://togithub.com/clj-kondo/clj-kondo/issues/1720): prevent parse error on defmulti without args - [#1863](https://togithub.com/clj-kondo/clj-kondo/issues/1863): Added `clj-kondo-docker` pre-commit hook. ### [`v2022.10.14`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221014) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.10.05...v2022.10.14) - [#1831](https://togithub.com/clj-kondo/clj-kondo/issues/1831): Add `:redundant-fn-wrapper` support for keyword and binding calls ([@NoahTheDuke](https://togithub.com/NoahTheDuke)) - [#1830](https://togithub.com/clj-kondo/clj-kondo/issues/1830): Fix warning on `:include-macros` in `.cljs` and `.cljc` for `:unknown-require-option` linter. ([@NoahTheDuke](https://togithub.com/NoahTheDuke)) - [#1238](https://togithub.com/clj-kondo/clj-kondo/issues/1238): Build a linux/aarch64 executable in CI ([cap10morgan](https://togithub.com/cap10morgan)) - Add `:exclude` option to `:unknown-require-option` - Enable `:unused-value` by default - Publish `.sha256` files along with released artifacts ### [`v2022.10.05`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20221005) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.09.08...v2022.10.05) - [#611](https://togithub.com/clj-kondo/clj-kondo/issues/611): New linter: `:unused-value` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#unused-value). Also see issue [#1258](https://togithub.com/clj-kondo/clj-kondo/issues/1258). - [#1794](https://togithub.com/clj-kondo/clj-kondo/issues/1794): New linter: `:line-length` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#line-length) ([@ourkwest](https://togithub.com/ourkwest)) - [#1460](https://togithub.com/clj-kondo/clj-kondo/issues/1460): New linter: `:unknown-require-option` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#unknown-require-option). ([@NoahTheDuke](https://togithub.com/NoahTheDuke)) - [#1800](https://togithub.com/clj-kondo/clj-kondo/issues/1800): New linter: `:aliased-namespace-symbol` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#aliased-namespace-symbol). ([@NoahTheDuke](https://togithub.com/NoahTheDuke)) - [#1758](https://togithub.com/clj-kondo/clj-kondo/issues/1758): Overrides don't get applied to var-definitions during analysis ([@sheluchin](https://togithub.com/sheluchin)) - [#1807](https://togithub.com/clj-kondo/clj-kondo/issues/1807): False positive with map transducer in cljs - [#1806](https://togithub.com/clj-kondo/clj-kondo/issues/1806): False positive recur mismatch with letfn - [#1810](https://togithub.com/clj-kondo/clj-kondo/issues/1810): Fix printing error map as additional error ([@NoahTheDuke](https://togithub.com/NoahTheDuke)) - [#1812](https://togithub.com/clj-kondo/clj-kondo/issues/1812): Inconsistent handling of location metadata sometimes produces `nil` values ([@sheluchin](https://togithub.com/sheluchin)) - [#1805](https://togithub.com/clj-kondo/clj-kondo/issues/1805): Ignore hints not being considered on protocol vars - [#1819](https://togithub.com/clj-kondo/clj-kondo/issues/1819): Fix "Too many open files" in java class definition analysis caused by files not being closed ([@rsauex](https://togithub.com/rsauex)) - [#1821](https://togithub.com/clj-kondo/clj-kondo/issues/1821): Include vectors in `:unused-binding` config `:exclude-destructured-as` flag. ([@NoahTheDuke](https://togithub.com/NoahTheDuke)) - [#1818](https://togithub.com/clj-kondo/clj-kondo/issues/1818): unresolved var when using interop on var in CLJS - [#1817](https://togithub.com/clj-kondo/clj-kondo/issues/1817): improve warning with invalid require libspec ([@benjamin-asdf](https://togithub.com/benjamin-asdf)) - [#1801](https://togithub.com/clj-kondo/clj-kondo/issues/1801): Missing docstring fix for `deftype` in CLJS - Bump GraalVM to 22.2.0 for native-image - Bump SCI to 0.4.33 ### [`v2022.09.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220908) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.08.03...v2022.09.08) - `:config-in-call` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#config-in-call) - [#1127](https://togithub.com/clj-kondo/clj-kondo/issues/1127): `:config-in-tag` - see [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#config-in-tag) - [#1791](https://togithub.com/clj-kondo/clj-kondo/issues/1791): Fix issue with namespace-name-mismatch on namespaces with + sign (and others) - [#1782](https://togithub.com/clj-kondo/clj-kondo/issues/1782): Fix issue with jar URI missreporting to `file-analyzed-fn`, bump babashka/fs to 0.1.11 - [#1780](https://togithub.com/clj-kondo/clj-kondo/issues/1780): Can not use NPM dependency namespaces beginning with "@" in consistent-linter alias - [#1771](https://togithub.com/clj-kondo/clj-kondo/issues/1771): don't crash on empty ns clauses: `(require '[])` and `(import '())` - [#1774](https://togithub.com/clj-kondo/clj-kondo/issues/1774): Add support for sourcehut inferred git dep urls for the Clojure CLI - [#1768](https://togithub.com/clj-kondo/clj-kondo/issues/1768): Expose a `tag` function in `clj-kondo.hooks-api` - [#1790](https://togithub.com/clj-kondo/clj-kondo/issues/1790): Add support for `:filename-pattern` in `:ns-group` - [#1773](https://togithub.com/clj-kondo/clj-kondo/issues/1773): false positive type mismatch warning with hook - [#1779](https://togithub.com/clj-kondo/clj-kondo/issues/1779): lazy-seq should be coerced a list node - [#1764](https://togithub.com/clj-kondo/clj-kondo/issues/1764): store overrides in cache and don't run them at runtime ### [`v2022.08.03`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220803) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.06.22...v2022.08.03) - [#1755](https://togithub.com/clj-kondo/clj-kondo/issues/1755): Fix false positive invalid-arity when using mapcat transducer in sequence with multiple collections - [#1749](https://togithub.com/clj-kondo/clj-kondo/issues/1749): expose `clojure.pprint/pprint` to the hooks API - [#698](https://togithub.com/clj-kondo/clj-kondo/issues/698): output rule name with new output option `:show-rule-name-in-message true`. See example in [config guide](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#show-rule-name-in-message). - [#1735](https://togithub.com/clj-kondo/clj-kondo/issues/1735) Add support for nilable map type specs - [#1744](https://togithub.com/clj-kondo/clj-kondo/issues/1744) Expose `:imported-ns` in analysis of vars imported by potemkin - [#1746](https://togithub.com/clj-kondo/clj-kondo/issues/1746) Printing deps.edn error to stdout - [#1716](https://togithub.com/clj-kondo/clj-kondo/issues/1716) Include dispatch-val in analysis of defmethod - [#1760](https://togithub.com/clj-kondo/clj-kondo/issues/1760) Add `:arglist-strs` support for functions defined with fn - [#1731](https://togithub.com/clj-kondo/clj-kondo/issues/1731): prioritize special form in name resolving - [#1739](https://togithub.com/clj-kondo/clj-kondo/issues/1739): Namespaced map type check fix - Fix [#1737](https://togithub.com/clj-kondo/clj-kondo/issues/1737): config-in-ns for specific namespace + ns-group override - Fix [#1741](https://togithub.com/clj-kondo/clj-kondo/issues/1741): Ignore redundant-call when single call is made in .cljc ### [`v2022.06.22`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220622) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.31...v2022.06.22) - [#1721](https://togithub.com/clj-kondo/clj-kondo/issues/1721): new `:discouraged-namespace` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#discouraged-namespace). - [#1728](https://togithub.com/clj-kondo/clj-kondo/issues/1728) New macOS aarch64 (M1-compatible) binary - [#1726](https://togithub.com/clj-kondo/clj-kondo/issues/1726): fix invalid arity warning for `sequence` with `map` multi-arity transducer - [#1715](https://togithub.com/clj-kondo/clj-kondo/issues/1715): fix false positive warning for `recur` not in tail position with `core.async alt!!` - [#1714](https://togithub.com/clj-kondo/clj-kondo/issues/1714): fix recur arity for `defrecord`, `deftype` and `definterface` - [#1718](https://togithub.com/clj-kondo/clj-kondo/issues/1718): make unsorted namespaces linter case-insensitive - [#1722](https://togithub.com/clj-kondo/clj-kondo/issues/1722): suppress redundant do in `.cljc` for just one language ### [`v2022.05.31`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220531) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.29...v2022.05.31) - Ensure every node has a location when returning from `:macroexpand` ### [`v2022.05.29`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220529) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.28...v2022.05.29) - Support `:instance-invocations` analysis bucket - Copy `.clj_kondo` files from configs ### [`v2022.05.28`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220528) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.05.27...v2022.05.28) - Fix false positive redundant do's from `:macroexpand` hooks (regression in 2022.05.27) ### [`v2022.05.27`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220527) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.04.25...v2022.05.27) - [#686](https://togithub.com/clj-kondo/clj-kondo/issues/686): new `:warn-on-reflection` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#warn-on-reflection). - [#1692](https://togithub.com/clj-kondo/clj-kondo/pull/1692): new linter `:redundant-call` - warns when a function or macro call with 1 given argument returns the argument. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#redundant-call). - All new JVM `clj-kondo.hooks-api` API ns for REPL usage. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/hooks.md#developing-hooks-in-the-repl). - [#1674](https://togithub.com/clj-kondo/clj-kondo/pull/1674): config options to limit analysis of var-usages and bodies of var-definitions. Can be used to get a quick overview of a project's namespaces and vars, without analyzing their details. - [#1676](https://togithub.com/clj-kondo/clj-kondo/pull/1676): Add support for custom function to be called for progress update, `:file-analyzed-fn`. - [#1697](https://togithub.com/clj-kondo/clj-kondo/issues/1697): update docs and messaging around importing configs ([@lread](https://togithub.com/lread)) - [#1700](https://togithub.com/clj-kondo/clj-kondo/issues/1700): allow discouraged var on non-analyzed (closed source) vars - [#1703](https://togithub.com/clj-kondo/clj-kondo/issues/1703): update built-in cache with newest CLJ (1.11.1) and CLJS (1.11.54) versions - [#1704](https://togithub.com/clj-kondo/clj-kondo/issues/1704): fix re-frame analysis bug - [#1705](https://togithub.com/clj-kondo/clj-kondo/issues/1705): add pre-commit utility support via `.pre-commit-hooks.yaml` - [#1701](https://togithub.com/clj-kondo/clj-kondo/issues/1701): preserve locations in seqs and symbols in `:macroexpand` hook - [#1685](https://togithub.com/clj-kondo/clj-kondo/issues/1685): Support `.clj_kondo` hook extension - [#1670](https://togithub.com/clj-kondo/clj-kondo/issues/1670): parse error on auto-resolved keyword for current ns - [#1672](https://togithub.com/clj-kondo/clj-kondo/issues/1672): support `clojure.test/deftest-` - [#1678](https://togithub.com/clj-kondo/clj-kondo/issues/1678): support `with-precision` ### [`v2022.04.25`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220425) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.04.23...v2022.04.25) - [#1669](https://togithub.com/clj-kondo/clj-kondo/issues/1669): fix re-frame analysis problem causing file to be not parsed ### [`v2022.04.23`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220423) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.04.08...v2022.04.23) - [#1653](https://togithub.com/clj-kondo/clj-kondo/issues/1653): new linter `:keyword-binding` - warns when a keyword is used in a `:keys` binding vector. This linter is `:off` by default. See [docs](doc/linters.md#keyword-in-binding-vector). - [#996](https://togithub.com/clj-kondo/clj-kondo/issues/996): new linter `:discouraged-var`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#discouraged-var). - [#1618](https://togithub.com/clj-kondo/clj-kondo/issues/1618): new `:config-in-ns` configuration option. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#config-in-ns). - Support `:ns-groups` configuration option. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#namespace-groups) - [#1657](https://togithub.com/clj-kondo/clj-kondo/issues/1657): support bindings with same name in `clojure.core.match` - [#1659](https://togithub.com/clj-kondo/clj-kondo/issues/1659): fix false positive unused import - [#1649](https://togithub.com/clj-kondo/clj-kondo/issues/1649): dot (`.`) should be unresolved when not in fn position ### [`v2022.04.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220408) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.03.09...v2022.04.08) - [#1331](https://togithub.com/clj-kondo/clj-kondo/issues/1331): new linter `:non-arg-vec-return-type-hint` that warns when a return type hint is not placed on the arg vector (CLJ only). See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#non-arg-vec-return-type-hint). - Enable `:namespace-name-mismatch` by default - [#1611](https://togithub.com/clj-kondo/clj-kondo/pull/1611): support `^:replace` override for nested config values - [#1625](https://togithub.com/clj-kondo/clj-kondo/issues/1625): Add option `--skip-lint`, to skip linting while still executing other tasks like copying configuration with `--copy-configs`. - [#1620](https://togithub.com/clj-kondo/clj-kondo/issues/1620): return type too narrow for `re-find` Analysis: - [#1623](https://togithub.com/clj-kondo/clj-kondo/issues/1623): Implement analysis for Java classes: `:java-class-definitions` and `:java-class-usages`. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/analysis/README.md). - [#1635](https://togithub.com/clj-kondo/clj-kondo/pull/1635): add `:end-row` and `end-col` to analyze data for `:namespace-definitions` - [#1651](https://togithub.com/clj-kondo/clj-kondo/issues/1651): Improvements for `:protocol-impls` - [#1612](https://togithub.com/clj-kondo/clj-kondo/issues/1612): Improve analysis for `deftype` - [#1613](https://togithub.com/clj-kondo/clj-kondo/issues/1613): Improve analysis for `reify` - [#1609](https://togithub.com/clj-kondo/clj-kondo/issues/1609): keyword analysis for `ns` + `require` ### [`v2022.03.09`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220309) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.03.08...v2022.03.09) - [#1607](https://togithub.com/clj-kondo/clj-kondo/issues/1607): disable `:namespace-name-mismatch` until further notice due to problems on Windows - [#1570](https://togithub.com/clj-kondo/clj-kondo/issues/1570): add `:defmethod true` to defmethod `var-usages` analysis. ### [`v2022.03.08`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220308) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.03.04...v2022.03.08) ##### New - [#1602](https://togithub.com/clj-kondo/clj-kondo/issues/1602): analysis data now includes `:protocol-ns` and `:protocol-name` on protocol methods ([@lread](https://togithub.com/lread)) ##### Fixed - [#1605](https://togithub.com/clj-kondo/clj-kondo/issues/1605): error while determining namespace mismatch on Windows ### [`v2022.03.04`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220304) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.02.09...v2022.03.04) ##### New - [#1240](https://togithub.com/clj-kondo/clj-kondo/issues/1240): Add linter `:namespace-name-mismatch` to detect when namespace name does not match file name. ([@svdo](https://togithub.com/svdo)) ##### Fixed - [#1598](https://togithub.com/clj-kondo/clj-kondo/issues/1598): `:scope-end-row` is missing on multi-arity fn args ([@mainej](https://togithub.com/mainej)) - [#1588](https://togithub.com/clj-kondo/clj-kondo/issues/1588): analyze type hint in reified method - [#1581](https://togithub.com/clj-kondo/clj-kondo/issues/1581): redundant fn wrapper false positive when using pre-post-map - [#1582](https://togithub.com/clj-kondo/clj-kondo/issues/1582): False positive Insufficient input when using symbol call - [#1579](https://togithub.com/clj-kondo/clj-kondo/issues/1579): relax linting in tagged literal forms - [#1578](https://togithub.com/clj-kondo/clj-kondo/issues/1578): allow `:deprecated-var` config in ns form metadata - [#892](https://togithub.com/clj-kondo/clj-kondo/issues/892): suppress unresolved namespaces in data readers config - [#1594](https://togithub.com/clj-kondo/clj-kondo/issues/1594): lint clojure.test.check.properties/for-all as let ### [`v2022.02.09`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220209) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.01.15...v2022.02.09) ##### New - [#1549](https://togithub.com/clj-kondo/clj-kondo/issues/1549): detect and warn on cyclic task dependencies in `bb.edn` ([@mknoszlig](https://togithub.com/mknoszlig)) - [#1547](https://togithub.com/clj-kondo/clj-kondo/issues/1547): catch undefined tasks present in `:depends`. ([@mknoszlig](https://togithub.com/mknoszlig)) - [#783](https://togithub.com/clj-kondo/clj-kondo/issues/783): `:keys` can be used in `:ret` position, also fixes types return map call as input for another typed map function. ([@pfeodrippe](https://togithub.com/pfeodrippe)) - [#1526](https://togithub.com/clj-kondo/clj-kondo/issues/1526): detect redundant fn wrappers, like `#(inc %)`. See [docs](doc/linters.md#redundant-fn-wrapper). This linter of `:off` by default but may be enabled by default in future versions after more testing. - [#1560](https://togithub.com/clj-kondo/clj-kondo/issues/1560): lint task definition keys in `bb.edn` ([@mknoszlig](https://togithub.com/mknoszlig)) - [#1484](https://togithub.com/clj-kondo/clj-kondo/issues/1484): Add analysis information about protocol implementations. ([@ericdallo](https://togithub.com/ericdallo)) ##### Fixed - [#1563](https://togithub.com/clj-kondo/clj-kondo/issues/1563): vector inside list should not be linted as function call when inside tagged literal. - [#1540](https://togithub.com/clj-kondo/clj-kondo/issues/1540): imported class flagged as unused when it only appears in annotation metadata. - [#1571](https://togithub.com/clj-kondo/clj-kondo/issues/1571): ignore spliced reader conditionals wrt. namespace sorting. - [#1574](https://togithub.com/clj-kondo/clj-kondo/issues/1574): def usage context contains reference of the re-frame reg-sub it is used in. ([@benedekfazekas](https://togithub.com/benedekfazekas)) ### [`v2022.01.15`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220115) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2022.01.13...v2022.01.15) - Fix [#1537](https://togithub.com/clj-kondo/clj-kondo/issues/1537): stackoverflow with potemkin import vars with cyclic references - Fix [#1545](https://togithub.com/clj-kondo/clj-kondo/issues/1545): `recur` in `cond->` gives warning about `recur` not in tail position. - Fix [#1535](https://togithub.com/clj-kondo/clj-kondo/issues/1535): support CLJS vars / protocols references via dot rather than slash. ### [`v2022.01.13`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20220113) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2021.12.19...v2022.01.13) - Add linter `:conflicting-fn-arity`: warn when an arity occurs more than once in a function that overloads on arity. [#1136](https://togithub.com/clj-kondo/clj-kondo/issues/1136) ([@mknoszlig](https://togithub.com/mknoszlig)) - Add linter `:clj-kondo-config` which provides linting for `.clj-kondo/config.edn`. [#1527](https://togithub.com/clj-kondo/clj-kondo/issues/1527) - Relax `:reduce-without-init` for functions known to be safe [#1519](https://togithub.com/clj-kondo/clj-kondo/issues/1519) - Symbol arg to `fdef` can be arbitrary namespace [#1532](https://togithub.com/clj-kondo/clj-kondo/issues/1532) - Improve potemkin generated var-definition analysis [#1521](https://togithub.com/clj-kondo/clj-kondo/issues/1521) ([@ericdallo](https://togithub.com/ericdallo)) - Stabilize cache version independent from kondo version [#1520](https://togithub.com/clj-kondo/clj-kondo/issues/1520). This allows you to re-use the cache over multiple kondo versions. - `:output {:progress true}` should print to stderr [#1523](https://togithub.com/clj-kondo/clj-kondo/issues/1523) - Only print informative messages when `--debug` is enabled. [#1514](https://togithub.com/clj-kondo/clj-kondo/issues/1514) - Add Sublime Text instructions [#827](https://togithub.com/clj-kondo/clj-kondo/issues/827) ([@KyleErhabor](https://togithub.com/KyleErhabor)) - Fix end location in anonyous function body [#1533](https://togithub.com/clj-kondo/clj-kondo/issues/1533) - Bump datalog-parser to 0.1.9: allows symbol constants in datalog expression ### [`v2021.12.19`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20211219) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2021.12.16...v2021.12.19) ##### New - Add linter `:reduce-without-init`: warn against two argument version of reduce. Disabled by default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#reduce-without-initial-value). [#1064](https://togithub.com/clj-kondo/clj-kondo/issues/1064) ([@mknoszlig](https://togithub.com/mknoszlig)) - Add linter `:quoted-case-test-constant`: warn on quoted test constants in case. [#1496](https://togithub.com/clj-kondo/clj-kondo/issues/1496) ([@mknoszlig](https://togithub.com/mknoszlig)) ##### Enhanced - Fix false positive unused binding in re-frame subscribe [#1504](https://togithub.com/clj-kondo/clj-kondo/issues/1504) - Fix exclude-defmulti-args for CLJS [#1503](https://togithub.com/clj-kondo/clj-kondo/issues/1503) - Fix warning location of namespaced map [#1475](https://togithub.com/clj-kondo/clj-kondo/issues/1475) - False positive :docstring-no-summary on multiline docstrings [#1507](https://togithub.com/clj-kondo/clj-kondo/issues/1507) ### [`v2021.12.16`](https://togithub.com/clj-kondo/clj-kondo/blob/HEAD/CHANGELOG.md#20211216) [Compare Source](https://togithub.com/clj-kondo/clj-kondo/compare/v2021.12.01...v2021.12.16) ##### New - Automatically load configurations from `.clj-kondo/*/*/config.edn`. This can be disabled with `:auto-load-configs false`. [#1492](https://togithub.com/clj-kondo/clj-kondo/issues/1492) - Add linter `:duplicate-case-test-constant`: detect duplicate case test constants. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#duplicate-case-test-constant). [#587](https://togithub.com/clj-kondo/clj-kondo/issues/587) ([@mknoszlig](https://togithub.com/mknoszlig)) - Add linter `:unexpected-recur`: warn on `recur` in unexpected (non-tail) position. [#1126](https://togithub.com/clj-kondo/clj-kondo/issues/1126) - Add linter `:used-underscored-binding`: warn on used bindings that start with underscore. Disabled by default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#used-underscored-bindings). [#1149](https://togithub.com/clj-kondo/clj-kondo/issues/1149) ([@mknoszlig](https://togithub.com/mknoszlig)) - Add linter `:docstring-blank` for checking empty docstring. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#docstring-blank). [#805](https://togithub.com/clj-kondo/clj-kondo/issues/805) ([@joodie](https://togithub.com/joodie)) - Add linter `:docstring-leading-trailing-whitespace` for checking leading and trailing whitespace in docstring. Disabled by default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#docstring-leading-trailing-whitespace). [#805](https://togithub.com/clj-kondo/clj-kondo/issues/805) ([@joodie](https://togithub.com/joodie)) - Add linter `:docstring-no-summary` for checking the absence of summary of args in docstring. Disabled by default. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#docstring-no-summary). [#805](https://togithub.com/clj-kondo/clj-kondo/issues/805) ([@joodie](https://togithub.com/joodie)) - Add `:exclude-defmulti-args` option for `:unused-bindings` linter. See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/linters.md). [#1188](https://togithub.com/clj-kondo/clj-kondo/issues/1188) ([@mknoszlig](https://togithub.com/mknoszlig)) - Support `:config-in-comment` [#1473](https://togithub.com/clj-kondo/clj-kondo/issues/1473). See [docs](https://togithub.com/clj-kondo/clj-kondo/blob/master/doc/config.md#override-config-in-comment-forms). ##### EnConfiguration
📅 Schedule: Branch creation - "on sunday" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.