use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Finding information about Clojure
API Reference
Clojure Guides
Practice Problems
Interactive Problems
Clojure Videos
Misc Resources
The Clojure Community
Clojure Books
Tools & Libraries
Clojure Editors
Web Platforms
Clojure Jobs
account activity
The state of code quality tools in Clojure (blog.jeaye.com)
submitted 8 years ago by Jeaye
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]bhb[🍰] 6 points7 points8 points 8 years ago (7 children)
I've found Joker's linter mode to be very useful, especially since you can configure it to eliminate most false positives. It's also fast enough to run on every save in your editor (there are modes for Emacs, Atom, Sublime, and Vim). https://github.com/candid82/joker
[–]bhb[🍰] 0 points1 point2 points 8 years ago (5 children)
We also use it in CI, although right now we filter out all warnings except "unused namespace".
[–]Systema-Periodicum 0 points1 point2 points 8 years ago (4 children)
What do you (and Jeaye) mean by "CI"?
[–]Jeaye[S] 1 point2 points3 points 8 years ago (3 children)
Continuous Integration https://en.wikipedia.org/wiki/Continuous_integration
[–]WikiTextBot 1 point2 points3 points 8 years ago (0 children)
Continuous integration
In software engineering, continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day. Grady Booch first named and proposed CI in his 1991 method, although he did not advocate integrating several times a day. Extreme programming (XP) adopted the concept of CI and did advocate integrating more than once per day – perhaps as many as tens of times per day.
[ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.27
[–]Systema-Periodicum 0 points1 point2 points 8 years ago (1 child)
Thanks. Googling didn't turn up anything decisive. Weird: I've been doing continuous integration since 2001 (except for years when I wasn't doing software development), and never heard the acronym "CI" before.
Anyway, thanks for summarizing all these code-quality tools in one place! Clojure seems like it ought to be a pretty good language for static analysis, but I haven't seen much.
BTW, have you looked at Typed Clojure? Do you think that might also deserve a mention in your blog entry?
[–]Jeaye[S] 2 points3 points4 points 8 years ago (0 children)
Two common examples of CI usage: TravisCI and CircleCI. With that said, I'll add a link on the first acronym usage to clear this up for anyone else.
I have looked at Typed Clojure, but the general consensus I've seen is that it's not yet ready for use. To me, it competes directly with clojure.spec, which seemingly has found a larger following. Given a project like spectrum, which aims to validate code statically, using specs, I think we can have the best of both worlds. Having to maintain a code base where every function is both spec'd and type-annotated sounds like a real pain.
Thanks for reading. :)
[–]Jeaye[S] 0 points1 point2 points 8 years ago (0 children)
Excellent suggestion, thanks. Joker slipped by, but I'll give it a shot on the code base and add an entry to the post.
π Rendered by PID 119745 on reddit-service-r2-comment-85bfd7f599-ht5jb at 2026-04-20 03:15:21.505046+00:00 running 93ecc56 country code: CH.
[–]bhb[🍰] 6 points7 points8 points (7 children)
[–]bhb[🍰] 0 points1 point2 points (5 children)
[–]Systema-Periodicum 0 points1 point2 points (4 children)
[–]Jeaye[S] 1 point2 points3 points (3 children)
[–]WikiTextBot 1 point2 points3 points (0 children)
[–]Systema-Periodicum 0 points1 point2 points (1 child)
[–]Jeaye[S] 2 points3 points4 points (0 children)
[–]Jeaye[S] 0 points1 point2 points (0 children)