Modules
Code duplication detector for Elixir, powered by native AST analysis.
Pre-processes the AST to handle annotations like @no_clone true.
Computes the anti-unification (most specific generalization) of two ASTs.
Groups consecutive function clauses with the same name/arity into synthetic compound nodes so the fingerprinter can detect duplicated multi-clause functions.
Computes structural similarity between two ASTs using a simplified tree edit distance.
Computes structural fingerprints (hashes) for AST subtrees.
Normalizes Elixir AST for structural comparison.
Normalizes pipe operators to nested function calls.
Persistent cache for fingerprinted AST fragments.
A Mix.Task.Compiler that runs clone detection incrementally.
Configuration for ExDNA.
Represents a detected code clone — a group of structurally identical fragments.
Orchestrates the clone detection pipeline.
Prunes overlapping and nested clones.
Type-III (near-miss) clone detection.
Groups clones by the directories they span so reporters can produce higher-level summaries.
Locality-Sensitive Hashing for fast approximate nearest-neighbor search on sub-hash sets.
Language Server Protocol server for ExDNA.
Detects clone groups where the same function is implemented identically across multiple modules, suggesting a behaviour extraction.
Detects clone groups that should be refactored into macros rather than functions.
Generates refactoring suggestions from detected clones.
Analysis results: detected clones and summary statistics.
Behaviour for ExDNA output reporters.
Pretty-prints clone detection results to the terminal.
Generates a self-contained HTML report file for clone detection results.
Outputs clone detection results as JSON to stdout.
Outputs clone detection results in SARIF 2.1.0 format.
Mix Tasks
Scans your project for duplicated code blocks using AST analysis.
Deep-dive into a specific clone, showing the anti-unification result, the common structure, the divergence points (holes), and the suggested refactoring.
Starts the ExDNA Language Server Protocol server over stdio.