Skip to content

v1.3.0 — Filtered clone reporting, test coverage improvements, and maintenance

Choose a tag to compare

@ericodx ericodx released this 06 Apr 17:47
· 155 commits to main since this release
b03b0fa

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 filteredCloneCount field added to AnalysisResult, tracking the difference between detected and reported clones
  • Prevents user confusion when ignoreSameFile or ignoreStructural silently remove all detected clones

Bug fix

  • Integration test noPaths no longer depends on the project's .swift-cpd.yml — runs in an isolated temp directory

Test coverage

  • UnifiedTokenMapper: new tests for tryFunctionCall token kind/location, tryPropertyAccess with non-paren follower, and method-call-vs-property-access disambiguation
  • CTokenizerScanner: new test for the unrecognized character fallback path (advance and retry)
  • BehaviorSignatureExtractor: defineOnly assertion strengthened from contains to 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