A static code analyzer for Clojure that suggests more idiomatic functions and macros using pattern matching.
Kibit is a static code analyzer for Clojure that identifies code patterns and suggests more idiomatic functions or macros. It helps developers write cleaner, more conventional Clojure by automatically recommending simplifications, such as replacing `(if test action nil)` with `(when test action)`.
Clojure and ClojureScript developers looking to improve code quality and adhere to idiomatic patterns, particularly those working on projects where consistent coding standards are important.
Kibit provides automated, pattern-based suggestions for idiomatic Clojure code, reducing manual code review effort and helping teams maintain consistent coding practices. Its integration with build tools and editors makes it easy to incorporate into existing workflows.
There's a function for that!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses core.logic to match code patterns and suggest idiomatic Clojure functions or macros, such as replacing (if test action nil) with (when test action), promoting cleaner code.
Includes --replace and --interactive command-line options to automatically apply suggestions, making code cleanup straightforward without manual editing.
Exits with a non-zero code when suggestions are found, enabling easy integration into build pipelines for automated quality checks, as highlighted in the exit codes section.
Offers plugins for Emacs (kibit-helper) and Vim (kibit-vim, vim-kibit) for real-time analysis within editors, enhancing developer workflow.
Relies on core.logic which is computationally intensive, making analysis slow, especially for larger codebases, as acknowledged in the maintenance status.
The codebase is tightly coupled with core.logic; moving away from it would require a full rewrite, limiting future improvements and extensibility, as noted in the README.
Does not perform macro expansion or resolve symbols beyond clojure.core, leading to incorrect suggestions in cases involving macros or custom functions, per the known limitations.