Periphery Versions Save

A tool to identify unused code in Swift projects.

2.12.2

1 year ago
Breaking
  • None.
Enhancements
  • Significantly improve the performance of index and report filtering.
  • Moderate improvements to indexing and analysis performance.
Bug Fixes
  • COMPILER_INDEX_STORE_ENABLE is now forcefully enabled as it's required for indexing.
  • Fix false positive where a typealias is extended but otherwise unused.
  • Fix redundant accessibility analysis for function metatype arguments.
  • Fix redundant accessibility analysis for property types inferred from a function call initializer.

2.12.1

1 year ago
Breaking
  • None.
Enhancements
  • None.
Bug Fixes
  • Fix JSON deserialization crash caused by unrelated warnings in the output from xcodebuild -list -json.
  • Retain all @MainActor annotated types and their constructors to workaround a bug in Swift 5.7.
  • Retain all constructors on types instantiated via Self(...) to workaround false positives caused by a bug in Swift.
  • Set<AnyCancellable> and NSKeyValueObservation are now included in the default values for --retain-assign-only-property-types.
  • Improve accuracy of guard-let shorthand workaround.
  • Fix unused parameter false positive result for parameter used within a nested computed variable.

2.12.0

1 year ago
Breaking
  • None.
Enhancements
  • Add CodeClimate output formatter available via the --format codeclimate option.
  • Add support for third-party build systems, such as Bazel.
Bug Fixes
  • Enums that conform to SwiftUI special Provider protocols are now retained, as was already the case for structs and classes.

2.11.0

1 year ago
Breaking
  • None.
Enhancements
  • Add clear-cache command.
  • Add support for analyzing local SwiftPM packages in Xcode projects.
Bug Fixes
  • AnyCancellable properties are now excluded from assign-only property analysis.

2.10.3

1 year ago
Breaking
  • None.
Enhancements
  • None.
Bug Fixes
  • Fix retaining CodingKeys enum in a struct whose Codable conformance is declared in an extension.
  • Used tagged dependencies to prevent "unsafe build flags" error from SwiftPM.
  • Fix old index store use by including Xcode version hash in DerivedData directory name.

2.10.2

1 year ago
Breaking
  • None.
Enhancements
  • None.
Bug Fixes
  • Fix guard-let shorthand syntax.
  • Fix accuracy of unused parameter analysis for overridden and protocol conforming functions.
  • Fix retaining buildFinalResult(_:) and buildLimitedAvailability(_:) result builder methods.

2.10.1

1 year ago
Breaking
  • None.
Enhancements
  • None.
Bug Fixes
  • Fix error building with SwiftPM and Swift 5.7: the target 'PeripheryKit' in product 'periphery' contains unsafe build flags
  • Fix unused parameter analysis for shorthand if-let syntax.
  • Workaround Swift shorthand if-let syntax bug (https://github.com/apple/swift/issues/61509). Global properties are not handled by this workaround.
  • Fix retaining inferred associated types.
  • Fix redundant public accessibility analysis for types used in closure signatures.
  • Conflicting index store units are now detected and result in an error.

2.10.0

1 year ago
Breaking
  • Swift 5.6 or later is now required.
Enhancements
  • Add --report-include option to filter reported violations with an allowlist.
  • Support for reading Xcode 14 generated index stores.
Bug Fixes
  • None.

2.9.0

1 year ago
Breaking
  • Swift 5.5 or later is now required.
Enhancements
  • Add support for Swift 5.6.
  • Output is now line buffered when writing to a fifo/pipe.
Bug Fixes
  • IBSegueAction annotated functions are now retained.

2.8.6

2 years ago
Breaking
  • None.
Enhancements
  • None.
Bug Fixes
  • Fix another crash while indexing.