A Clojure tool that automatically reconstructs incomplete namespace forms by analyzing code dependencies.
Slamhound is a Clojure development tool that automatically reconstructs incomplete namespace forms by analyzing code dependencies. It reads Clojure source files, detects missing `:require` and `:import` clauses, and adds them based on actual usage within the code, eliminating manual namespace maintenance.
Clojure developers working on projects with multiple namespaces who want to automate namespace management and reduce manual import/require maintenance.
Developers choose Slamhound because it automates the tedious task of maintaining namespace forms, reduces errors from missing imports, and integrates seamlessly with existing Clojure workflows through multiple interfaces including command line, REPL, and popular editors.
Slamhound rips your namespace form apart and reconstructs it.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Analyzes Clojure source files to automatically add missing :require and :import clauses based on actual code usage, saving developers from manual namespace maintenance.
Supports command line, REPL, Emacs, Vim, and Light Table, allowing seamless use across various development environments as detailed in the README.
Can process entire directories of .clj files at once, making it ideal for refactoring large projects with many namespaces.
Enables reconstruction from within a REPL to avoid JVM startup overhead, improving performance for iterative use.
No longer under active development, so bugs and compatibility issues with newer Clojure versions are unlikely to be fixed.
Fails to detect references in syntax-quoted macros without manual metadata workarounds, as admitted in the README's shortcomings section.
Aggressively creates and destroys namespaces, potentially causing PermGen exhaustion in large projects, requiring JVM flags like -XX:+CMSClassUnloadingEnabled to mitigate.
Cannot find fully qualified or dynamically resolved vars, relying on compilation failures, which limits its accuracy in complex code.