Splint v1.16.0
The --only cli flag is one I've been meaning to implement for a while but just hadn't gotten around to. It's really only helpful when you're zeroing in on a problem rule, but there will always be uses.
The rule lint/duplicate-case-test is already checked by case's expansion, but I think it's good for static analysis tools to verify that stuff too. And lint/locking-object should help uncover subtle bugs, especially in concurrent situations.
Honestly, having been fired, I just don't have the strong drive to work on this like I did. I no longer have a 140k sloc project to test against, so there's less for me to look at and find inspiration from. I'm trying to keep up with it tho, it's helpful to not get rusty.
Full changelog under the cut
New rules
lint/redundant-call-str: Don't callstron input that's guaranteed to be a string: Prefer"foo"to(str "foo"),(str "foo" bar)to(str (str "foo" bar)), and(format "foo%s" bar)to(str (format "foo%s" bar)). (See clj-kondo#2323 for inspiration.)lint/duplicate-case-test: Don't use the same case test constant more than once.lint/locking-object: Prefer to lock on a symbol bound to(Object.).
Added
--only RULEcli flag to run only specified rules or genres. Can be used multiple times. (#13)
Changed
- Switched from
clojure.pprintto fipp for pretty-printing code. Fast and easy to extend. - Use org.flatland/ordered (when run in Clojure) to keep parsed maps and sets in their read order.
- Add exceptions to diagnostics and print stack traces in all errors. Should fix bugs where all that's printed is
Splint encountered an error: ""which is unhelpful and shameful. - External links in
default.ednare now:links, a vector of strings. This allows for listing multiple references. - Switch all tests to Lazytest to do some dogfooding.
- Enforce that
??only 1 or 2 arguments, and if provided, that the predicate is a symbol. - Updated all dependencies.
Fixed
- Outputs
jsonandjson-prettynow work with Babashka, by relying on Babashka's built-inchehire.coreinstead ofclojure.data.json. This shouldn't result in any observable differences. I'd usecheshire.corefor both, butcheshire.coreis much bigger and more complicated thanclojure.data.json, and it's a pain in the ass imo.
⁂
Liked the post? Hated the post? Felt nothing whatsoever about the post?
Email me, and let me know!