clj-kondo

vemv 2025-09-22T08:23:22.048689Z

Looks like we'd need this released as it breaks some repls https://github.com/clj-kondo/clj-kondo/commit/fff2bcac424c7e5fe314fc1fb8a4997f552f08d8

imre 2025-09-23T09:05:28.435319Z

I noticed there is no tag in github for yesterday's release, is that intended?

borkdude 2025-09-23T09:06:26.787879Z

it's a JVM only release that fixed data_readers.clj

borkdude 2025-09-23T09:06:36.820989Z

if nobody else complains I'll leave it like this until the next ;)

borkdude 2025-09-23T09:10:14.321749Z

I guess not

borkdude 2025-09-23T09:10:22.343419Z

then it's a JVM + Docker release ;)

borkdude 2025-09-23T09:11:00.357439Z

are you experiencing any troubles? I can make this a full release, but it's a bit time consuming to do this, so I thought it'd be ok this way

imre 2025-09-23T09:14:17.061959Z

No issues. I just thought I'd bump the versions we/I reference in a few places, including a hook dev alias https://github.com/ekataglobal/expect-call/blob/2d60aefd30cc40921ce09ebda9cc6778f276dd9d/deps.edn#L8 and was surprised to not find the tag. No biggie, I can just reference the sha.

borkdude 2025-09-23T09:15:23.059559Z

ok, let me just make a full release since I can see how this would confuse other people too

imre 2025-09-23T09:17:05.018099Z

sorry, didn't want to put more work on you

borkdude 2025-09-23T09:17:51.380939Z

no worries. it's a bit sloppy to half-ass a release anyway. github release is now available.

โค๏ธ 1
borkdude 2025-09-23T09:21:58.255999Z

all done now

imre 2025-09-23T09:22:20.256559Z

Much appreciated!

borkdude 2025-09-22T08:23:55.653349Z

yes sorry about that :) I'll make a new release

1
borkdude 2025-09-22T08:26:46.871649Z

this is the result of me trying to use the CIDER debugger (after so many years again rediscovered it) and then running tests on the command line...

๐ŸŒ€ 1
vemv 2025-09-22T09:00:36.405249Z

Thanks for the release!

borkdude 2025-09-22T09:01:37.908829Z

ah yes, the JVM release is already up

borkdude 2025-09-22T15:01:51.443239Z

Is there any interest in clj-kondo "automagically" linting your project dependencies, when you use it on the command line, in CI or otherwise? I've been thinking this for a while. Right now you have to call something like clj-kondo --lint "$(clojure -Spath)" --dependencies --copy-configs --parallel yourself if you want to set up your project. This could be a setting in .clj-kondo/config.edn about what your project paths are, how to calculate your project classpath. Or maybe you have multiple project definitions (for clojure, clojurescript, babashka) and you want to lint them separately or all together? The complexity of the latter is kind of why I didn't spend a lot of time on this yet and since with the command line you can do whatever you want yourself. Feedback in ๐Ÿงต

imre 2025-09-23T08:53:38.906149Z

Thanks! Nesting seems to be a bit off in the suggested config in the op there

imre 2025-09-23T08:53:52.611169Z

I'll try to make a few screenshots re: Cursive now

borkdude 2025-09-23T08:56:03.283709Z

thanks, fixed the nesting

imre 2025-09-23T12:28:24.138239Z

@borkdude I made some quick Cursive+aliases docs at https://gist.github.com/imrekoszo/9b879a4bd9c2042dbd56c2657f650cce

borkdude 2025-09-23T12:29:50.127139Z

thanks!

imre 2025-09-23T12:33:08.475769Z

nw, feel free to ask if need more info I'm secretly hoping that what's being cooked in the current thread, plus my docs might help https://clojurians.slack.com/archives/C02RPGUCQNB/p1753753932993599 when using both tools plus advanced clj classpath setups

2025-09-22T15:10:09.841959Z

i prefer when tools do that (as seen by how i've built splint)

borkdude 2025-09-22T15:10:52.196169Z

what exactly do you mean?

2025-09-22T15:11:23.234379Z

sorry, i mean that i think your proposal of linting dependencies by scanning project.clj or deps.edn or whatever to be a good one.

2025-09-22T15:12:05.902809Z

splint either lints the files you tell it to lint, or it looks for a deps.edn/project.clj and finds the paths to lint from it

borkdude 2025-09-22T15:14:11.602459Z

k. it's not just about paths, but also deps which may involve aliases, etc

2025-09-22T15:33:08.504419Z

sure. when i run tsc it picks up all of the type definitions in my dependencies as well (including dev dependencies)

imre 2025-09-22T15:55:53.995599Z

With clj being as powerful as it is, I would like to be able to use clj-kondo to lint various classpaths in the same project actually. Effectively with clj you can have multiple completely different applications in the same project, using a single deps.edn. A non-contrived example of this is one where you have: 1. Your actual app (with top-level deps and paths) a. an optional extension of this where you also use your :test and/or :dev aliases together with the top-level 2. Your build scripts which normally live under some alias like :build , and use :(replace-)deps and/or :(replace-)paths, isolating it from the main app 3. clj-kondo hooks In the above situation I would ideally like to be able to lint: 1. just the production code for my app (so no dev/test deps accidentally override anything and hide an error I might have) 2. the production code with test code (I also like to have my tests in a good shape) 3. the build system 4. the hooks clj is flexible enough to allow me to create a classpath for any of the above, and still have some caching under .cpcache. I feel like anything less would make me prefer managing my own classpath. It would however be extremely nice for all of the above work without having to manually manage that classpath.

borkdude 2025-09-22T16:12:19.603109Z

my initial idea would be to let you define multiple projects like this:

{:projects {:main {:deps true :aliases [:foo :bar :baz]}}
            :bb {:classpath-cmd ["bb" "print-deps"] :source-paths ["bb"]}}
and then you can lint multiple projects at once from the command line with:
clj-kondo --lint :main:bb 
or so

๐Ÿ‘ 1
borkdude 2025-09-22T16:12:49.599699Z

when you combine multiple projects, it would just smash the classpaths together and also the project paths to report about

borkdude 2025-09-22T16:16:36.489789Z

(maybe add a caching which md5 hashes the stuff or so for caching for project.clj)

imre 2025-09-22T16:17:06.995459Z

I don't have anything better to suggest atm. How would copy-configs and caching work with these? If I maintain multiple apps, those will have different deps, different dep-exported configs/hooks etc. Would you consider making caching/imports multi-tenant?

borkdude 2025-09-22T16:17:49.628389Z

it would work exactly the same as currently called from the command line

borkdude 2025-09-22T16:18:15.955869Z

but sure, we could do a per-project cache perhaps, if that's useful, not sure

borkdude 2025-09-22T16:18:36.729079Z

that likely wouldn't work well with editor stuff though, clojure-lsp etc

borkdude 2025-09-22T16:19:07.002669Z

so initially, that's out of scope but something to consider maybe later

imre 2025-09-22T16:55:03.665699Z

Maybe I'm too used to Cursive but there you select the aliases you want to work with. That drives a lot of things actually

borkdude 2025-09-22T17:44:22.098209Z

can you make a screenshot or are there docs about it? one question I have about this is that some aliases exclude other aliases if they use :deps or :replace-deps instead of :extra-deps

borkdude 2025-09-22T17:44:36.113929Z

I guess in that case you would maybe just define an extra project

imre 2025-09-22T17:48:20.260419Z

Will do tomorrow if that's okay. @cfleming might have something at hand

imre 2025-09-22T17:55:02.124729Z

https://cursive-ide.com/userguide/deps.html#working-with-aliases and the following section give some info but there are lots of nuances. I'm not sure if it's documented what things it affects

imre 2025-09-22T17:57:40.698009Z

IJ has its own framework for static analysis and Cursive integrates with it. Aliases selected in the deps tool window affect what Cursive tells IJ about project paths and deps etc. Selecting a :deps alias (which Colin calls tool aliases) can have pretty drastic effects actually

borkdude 2025-09-22T18:20:59.106139Z

drastic as in?

borkdude 2025-09-22T20:53:24.709349Z

Made an issue: https://github.com/clj-kondo/clj-kondo/issues/2632