Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Clojure
  3. kibit

kibit

Clojure0.1.11

A static code analyzer for Clojure that suggests more idiomatic functions and macros using pattern matching.

GitHubGitHub
1.8k stars128 forks0 contributors

What is kibit?

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)`.

Target Audience

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.

Value Proposition

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.

Overview

There's a function for that!

Use Cases

Best For

  • Identifying and fixing non-idiomatic Clojure code patterns
  • Automating code quality checks in CI/CD pipelines for Clojure projects
  • Refactoring legacy Clojure codebases to follow modern best practices
  • Teaching idiomatic Clojure to new developers through automated feedback
  • Enforcing consistent coding standards across team projects
  • Integrating static analysis into Emacs or Vim workflows for real-time suggestions

Not Ideal For

  • Projects requiring fast static analysis in CI/CD pipelines, as Kibit's core.logic-based approach is slow
  • Teams needing highly customizable or extensible linter rules, since Kibit's architecture is tied to core.logic and not designed for easy rule additions
  • Codebases that heavily use macros or custom namespaces, where Kibit's inability to handle macro expansion leads to frequent false positives
  • Developers seeking actively developed tools with new features, as Kibit is in maintenance mode with no planned major updates

Pros & Cons

Pros

Idiomatic Pattern Matching

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.

Automated Refactoring Tools

Includes --replace and --interactive command-line options to automatically apply suggestions, making code cleanup straightforward without manual editing.

CI/CD Integration

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.

Editor Support

Offers plugins for Emacs (kibit-helper) and Vim (kibit-vim, vim-kibit) for real-time analysis within editors, enhancing developer workflow.

Cons

Slow Performance

Relies on core.logic which is computationally intensive, making analysis slow, especially for larger codebases, as acknowledged in the maintenance status.

Architectural Limitations

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.

Prone to False Positives

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.

Frequently Asked Questions

Quick Stats

Stars1,754
Forks128
Contributors0
Open Issues54
Last commit2 years ago
CreatedSince 2012

Tags

#clojurescript#code-linter#automated-refactoring#clojure#refactoring#static-analysis#build-tool

Built With

C
Clojure

Included in

Clojure2.8kClojureScript1.1k
Auto-fetched 14 hours ago

Related Projects

clj-kondoclj-kondo

Static analyzer and linter for Clojure code that sparks joy

Stars1,848
Forks305
Last commit21 hours ago
eastwoodeastwood

Clojure lint tool

Stars1,083
Forks64
Last commit2 years ago
spectrumspectrum

Spectrum is a library for performing static analysis on Clojure code, leveraging clojure.spec annotations to detect type-like errors during compilation. It provides an optional, pragmatic layer of compile-time checking on top of spec, aiming to catch common bugs without requiring full spec coverage. ## Key Features - **Static Analysis** — Analyzes Clojure code at compile time to identify potential spec conform errors. - **Spec-Driven** — Uses existing clojure.spec annotations as a foundation for type-like checking. - **Pragmatic Design** — Prioritizes usability and speed over perfect correctness, aiming for low false positives. - **Incremental Checking** — Supports checking individual vars or forms, enabling flexible integration into workflows. - **Configurable Strictness** — Allows tuning of analysis strictness levels to balance thoroughness and performance. ## Philosophy Spectrum embraces a pragmatic approach, valuing a tool that catches 80% of bugs and is used daily over a theoretically perfect but impractical solution. It converges toward correctness while accepting limitations during development.

Stars605
Forks18
Last commit5 years ago
cloveragecloverage

Clojure test coverage tool

Stars525
Forks102
Last commit3 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub