Repository navigation
v1.3.0 — Filtered clone reporting, test coverage improvements, and maintenance
UX improvement for filtered clone visibility, test hardening, and housekeeping.
What's new
Reporting
- TextReporter and HtmlReporter now show how many clones were filtered by configuration when the final result is empty — e.g.
No clones detected in 1 files (0.30s) (231 clone(s) filtered by configuration) - New
filteredCloneCountfield added toAnalysisResult, tracking the difference between detected and reported clones - Prevents user confusion when
ignoreSameFileorignoreStructuralsilently remove all detected clones
Bug fix
- Integration test
noPathsno longer depends on the project's.swift-cpd.yml— runs in an isolated temp directory
Test coverage
UnifiedTokenMapper: new tests fortryFunctionCalltoken kind/location,tryPropertyAccesswith non-paren follower, and method-call-vs-property-access disambiguationCTokenizerScanner: new test for the unrecognized character fallback path (advance and retry)BehaviorSignatureExtractor:defineOnlyassertion strengthened fromcontainsto exact match
Chore
- swift-mutation-testing cache directory added to
.gitignore - Unused file removed
Requirements
- macOS 15+
- Swift 6.2+
Installation
See the [Installation Guide](https://github.com/ericodx/swift-cpd/blob/main/Docs/INSTALLATION.md) for Homebrew, pre-built binary, SPM plugin, and git hook setup.
What's Changed
- Update project name and description by @ericodx in #17
- feat: show filtered clone count in reports and improve test coverage by @ericodx in #18
- test: strengthen mutation testing coverage across all modules by @ericodx in #19
Full Changelog: v1.1.2...v1.3.0