Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

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

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Clojure
  3. eastwood

eastwood

Clojure

A Clojure linter that uses tools.analyzer for accurate bug detection, focusing on CI environments.

GitHubGitHub
1.1k stars64 forks0 contributors

What is eastwood?

Eastwood is a Clojure lint tool that analyzes namespaces to identify potential bugs and issues in code. It uses tools.analyzer.jvm to achieve compiler-level accuracy, focusing on detecting real problems like wrong function arity, constant tests, and deprecated APIs. It is designed to integrate into CI pipelines where thorough analysis across multiple environments is valuable.

Target Audience

Clojure developers and teams who need reliable static analysis for bug detection, particularly those using CI/CD pipelines to ensure code quality across different JDK and Clojure versions.

Value Proposition

Developers choose Eastwood for its high accuracy in bug detection, thanks to its use of tools.analyzer.jvm, which minimizes false positives. It excels in CI environments where comprehensive linting is more important than real-time speed.

Overview

Clojure lint tool

Use Cases

Best For

  • Detecting wrong arity in function calls
  • Identifying constant test expressions in conditionals
  • Finding deprecated Clojure vars and Java methods
  • Checking for unused return values of pure functions
  • Validating namespace and file name consistency
  • Spotting suspicious test expressions in clojure.test

Not Ideal For

  • Real-time editor integration or development workflows requiring instant lint feedback
  • Projects using ClojureScript or Clojure/CLR without JVM components
  • Codebases with frequent syntax errors or incomplete compilation
  • Teams seeking primarily stylistic or formatting linting over bug detection

Pros & Cons

Pros

Compiler-Level Accuracy

Uses tools.analyzer.jvm for analysis as accurate as the Clojure compiler, minimizing false positives by preferring evaluation and macroexpansion.

Bug-Centric Linting

Focuses on detecting real bugs like wrong arity and constant tests, with over 20 configurable linters targeting issues such as deprecations and unused return values.

CI Environment Suitability

Designed for CI pipelines where accuracy across JDK and Clojure versions is prioritized over speed, as stated in the README's philosophy.

Configurable Warning Suppression

Supports config files to selectively disable warnings per-macro or per-symbol, allowing fine-grained control over lint output.

Cons

Performance Overhead

The accurate analysis is slow due to deep evaluation and macroexpansion, making it impractical for real-time use or editor integration.

JVM-Only Limitation

Only supports JVM Clojure (>=1.7.0) and not ClojureScript or Clojure/CLR, requiring workarounds like .cljc files for cross-platform projects.

Potential Side Effects

Evaluates code during analysis, which can cause unintended side effects in untrusted environments, necessitating sandboxing or careful setup.

Frequently Asked Questions

Quick Stats

Stars1,083
Forks64
Contributors0
Open Issues37
Last commit1 year ago
CreatedSince 2012

Tags

#linter#bug-detection#leiningen-plugin#ci-cd#clojure#jvm#static-analysis

Built With

C
Clojure
t
tools.analyzer.jvm
L
Leiningen

Included in

Clojure2.8k
Auto-fetched 21 hours ago

Related Projects

clj-kondoclj-kondo

Static analyzer and linter for Clojure code that sparks joy

Stars1,833
Forks301
Last commit2 days ago
kibitkibit

There's a function for that!

Stars1,759
Forks128
Last commit1 year 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