- None.
- Output is now line buffered when writing to a fifo/pipe.
- None.
- None.
- None.
- Fix another crash while indexing.
- None.
- None.
- Fix a crash while indexing.
- None.
- None.
- Fix false positive when protocols requirements are satisfied in another file from the one that declares the conformance.
- Fix redundant public accessibility analysis of enum associated value types.
- Fix redundant public accessibility analysis of aliased types.
- Comment commands can now retain redundant protocols.
- Fix excluding paths that contain relative components, e.g
--report-exclude "../file.swift"
.
- None.
- None.
- Fix false positive when a class inherits a class with the same name from another module.
- Retain parameters on protocol function members implemented by an external type.
- Unused function parameters on unimplemented protocol function members are now retained, as the function may still be referenced from an existential type.
- Fix incorrect redundant public accessibility on a public superclass when a subclass is used in another module.
- Result Builder static methods are now retained.
- Assign-only properties that are assigned multiple times in the same method are now correctly identified as assign-only.
- Fix issue where properties with identical names at different scopes could cause inconsistent results from assign-only property analysis.
- None.
- None.
- The
DEVELOPER_DIR
environment variable is now respected. - Updated
XcodeProj
dependency resolves building with Xcode 13.
- None.
- None.
- Fix comment ignore command for properties with multiple bindings.
--index-exclude
and--report-exclude
options now accept Bash version 4 glob syntax. Therefore, recursive globs "**" are now supported.
- SwiftUI @(UI/NS)ApplicationDelegateAdaptor wrapped properties and now retained.
- All file types can now be excluded from indexing.
- None.
- None.
- None.
- Fix crash caused by cyclic inherited type references.
- None.
NSEntityMigrationPolicy
subclasses referenced by.xcmappingmodel
are now retained.ValueTransformer
subclasses referenced by.xcdatamodeld
are now retained.- Properties of types directly or indirectly conforming to
Encodable
are now automatically retained. The--external-encodable-protocols
option has been added to instruct Periphery that the specified external protocols also inheritEncodable
.
- Fix
--index-exclude
resulting in an error about unindexed files. - Fix an error during guided setup when
xcodebuild
is not setup for command line use. CodingKey
enums ofEncodable
conforming types are now also retained likeDecodable
types.- Fix detection of assign-only properties when the getter is shadowed by a parameter with the same name.
- Removed support for Swift <= 5.2.
- Using an index store that does not contain complete data for the requested targets now results in an error.
- The
--index-store-path
option now implies--skip-build
. - Guided setup now omits the
--targets
option from the generated command when 'all' targets are selected for SwiftPM projects. - Add option to guided setup to save the configuration to '.periphery.yml'.
- Fix parsing
INFOPLIST_FILE
references containing$(SRCROOT)
.
- None.
- None.
- Fix erroneous results for explicit 'getter' accessors.
- None.
- None.
- Fix an issue where scans with many schemes could breaking loading of the index store.
- None.
- Add redundant public accessibility analysis.
- Add arm64 support.
- Add
--retain-assign-only-property-types
option to retain assign-only properties based on their type. - Declarations in an entry point file (e.g main.swift) are no longer blindly retained, even if unused.
- Additional arguments passed to xcodebuild can now override the default set of environment based arguments.
- Fix issue where protocol property references could be incorrectly associated with the getter/setter rather than the property itself, leading to erroneous results.
- Fix unused parameter false positive result for identical function signatures at the same location in different files.
- None.
- None.
- Retain constructors of generic structs that cannot be identified as used due to Swift bug SR-7093.
- None.
- None.
- In Swift 5.3 and lower, all optional protocol members are now retained in order to workaround a Swift bug. This bug is resolved in Swift 5.4.
- Cases of public enums are now also retained when using
--retain-public
. - Open method parameters are now also retained when using
--retain-public
. - Empty public protocols that have an implementation in extensions are no longer identified as redundant.
- Foreign protocol method parameters are no longer identified as unused.
- None.
- None.
- Fix ignore comments on protocol declarations.
- The
--xcargs
option has been removed, and superseded by passing arguments following the--
terminator. E.gperiphery scan --xcargs --foo
is nowperiphery scan -- --foo
. This feature can also be used to pass arguments toswift build
for SwiftPM projects.
- None.
- None.
- None.
- None.
- Improve unused parameter location identification.
- None.
- None.
- Fix indexing failure on unhandled declaration kinds, such as 'commentTag'.
--retain-objc-accessible
also retains private declarations explicitly attributed with@objc
.
- None.
- None.
- Fix crash during indexing phase.
- JSON and CSV output formats have changed to reflect the fact that declarations can have multiple IDs if they're members of multiple build targets.
- Declarations accessible by the Objective-C runtime are no longer retained by default. The
--no-retain-objc-annotated
option has been removed, and--retain-objc-accessible
added.
- Protocols that are never used as an existential type are now explicitly identified as redundant rather than simply unused, which could be confusing.
- Add
--clean-build
flag to clean build artifacts before the build step. - Add support for files that are members of multiple build targets. Such files no longer produce erroneous results.
- Protocol members whose implementation is provided by an external type, yet aren't referenced via a value type are now identified as unused.
- @IBInspectable properties are now retained.
- Declarations ignored with a '// periphery:ignore' comment now also retain their references to other declarations.
- Fix running Periphery from within Xcode where Xcode's environment variables could cause build failures or incorrect results.
- Fix an issue where a protocol could incorrectly retain references to methods in an unused conforming declaration.
- None.
- None.
- Extension classes referenced in Info.plist as NSExtensionPrincipalClass are now retained.
- None.
- None.
- Fix unused parameter identification when surrounded with backquotes.
- None.
- Add support for SwiftPM & Xcode mixed projects.
- None.
- None.
- None.
- IBOutlets and IBActions that reside in a base class that are referenced only via a subclass are now retained.
- None.
- Added a Checkstyle output formatter.
- Fix Swift 5.2 support.
- Updated Yams dependency to fix building with Swift for Tensorflow.
- Fix possible concurrent mutation crash.
- Classes & structs that conform to SwiftUI's LibraryContentProvider are now retained.
- None.
- None.
- Fix version number.
- SourceKit based indexing has been removed, the IndexStore indexer is now the sole indexer. Therefore, the following scan options have been removed:
--use-index-store
,--use-build-log
,--save-build-log
. - The
scan-syntax
command has been removed.
- Support for code comments to ignore unused declarations.
- Support for analyzing Swift Package Manager projects.
- Linux support for Swift Package Manager projects.
- Assign-only property detection is back and enabled by default. Disable it with
--retain-assign-only-properties
. - Added
--skip-build
option to skip the build phase.
- UISceneDelegateClassName & UISceneClassName referenced in Info.plist are now retained.
- Ignore parameters from functions annotated with @IBAction.
- Classes & structs that conform to SwiftUI's PreviewProvider are now retained.
- Support @main entry points.
- Fix unused recursive function detection when using the index store.
- Properties named in struct implicit constructors are now retained.
- Implicit declarations such as struct constructors are now retained.
- A
typealias
that defines anassociatedtype
in an external protocol is now retained. - All custom
appendInterpolation
methods are now retained, as they cannot be identified as unused due to https://bugs.swift.org/browse/SR-13792. - Fixed path resolution for nested projects in Xcode workspaces.
wrappedValue
andprojectedValue
properties in property wrappers are now retained.XCTestManifests.swift
is now treated as an entry point file likeLinuxMain.swift
.- Updated
XcodeProj
dependency to resolve some Xcode project parsing issues.
- Aggressive Mode has been removed as it provided little value.
- Removed undocumented diagnosis console feature.
- Add Xcode 12 support.
- Fixed an issue where implicit declarations inserted by SourceKit could cause incorrect results.
- None.
- None.
- Fix --exclude option for scan-syntax.
- Bundle lib_InternalSwiftSyntaxParser.dylib in the release archive.
- None.
- Support for Xcode 11.4, Swift 5.2.
- Experimental IndexStore based indexer.
- Fix shell escaping issues.
- None.
- Add support for Xcode 11.3.
- None.
- None.
- None.
- Fix CocoaPod.
- None.
- None.
- Xcode 10.2 compatibly.
- None.
-
New
strict
option to exit with non-zero status if any unused code is found. Cihat Gündüz #22 #23 -
Add official Homebrew support. Ian Leitch #24
- Fix parsing of projects using Siri message intents. Ian Leitch #25 #26
- First open-source release.
- None.
- None.
- None.
- None.
- Don't attempt to syntax scan directories ending with .swift.
- Detect invalid xcodeproj references.
- None.
- None.
- Fix infinate loop from parsing projects with cyclic references.
- None.
- Improve performance of scan-syntax command.
- Fix parsing of #warning and #error directives.
- None.
- Unused function prameter analysis.
- Terminate all child processes on SIGINT.
- Exclude pod schemes from guided setup.
- Remove retain ObjC question from guided setup.
- Avoid passing 'CURRENT_ARCH' and 'arch' environment variables to xcodebuild when their value is 'undefined_arch'.
- None.
- None.
- Improved target module name identification.
- None.
- None.
- Fix crash when inspecting project configuration for nested .xcodeproj.
- Detect .xcodeproj referenced from within groups in an .xcworkspace.
- None.
- None.
- Projects nested within other projects are now identified.
- None.
- Label results identified by aggressive mode.
- Add compiler flags to speed up build phase.
- Schemes are built in the order they're given.
- Add error hint for CocoaPods bug #8000.
- Add support for YAML configuration.
- Retain XCTestCase classes that do not directly inherit XCTestCase.
- None.
- No more trial mode - 100% of results are now free. Advanced features require a Pro license.
- Fixed issue with poor performance resulting in a segmentation fault.
- None.
- None.
- Ensures Xcode is configured for command-line use.
- None.
- None.
- Built with a static Swift stdlib.
- Ignore xcworkspace generated by Swift Package Manager inside the xcodeproj.
- None.
- Support for saving, and using build logs in order to skip the build phase.
- All output format types are now available in trial mode.
- Unused code with cyclic dependencies is now detected.
- Protocol declarations implemented in a subclass of the conforming class are now identified as used.
- Protocols that inherit a foreign protocol (e.g from Foundation) are now treated differently than other protocols, as Periphery cannot detect declarations that are used internally by the foreign module. For example, if your class conforms to Comparable and implements <(lhs:rhs:), the behavior of sort() may be altered, yet Periphery does not have visibility of any directs call to <(lhs:rhs:).
- None.
- --report-exclude and --index-exclude options now expect a pipe character to delimit multiple globs.
- None.
- None.
- Identify LinuxMain.swift as an entry point.
- Fix regression of handling schemes and targets containing spaces.
- None.
- Added tips for eliminating false positives in trial mode.
- Added check-update command.
- Added ability to exclude files either from indexing or final report.
- None.
- None.
- Added support for Xcode 10.
- Warn about source files that are members of multiple targets.
- Diagnosis console now lists active references as their source location.
- Fixed issue where error messages would not be printed before Periphery exits.
- None.
- Added guided setup flow.
- None.
- None.
- None.
- Handle explicitly defined PRODUCT_MODULE_NAME.
- None.
- Added support for Xcode's new build system.
- Added support for analyzing XCTest targets.
- Added interactive diagnosis console, enabled with the --diagnose option.
- Licenses can now be activated using --email and --key options instead of entering them interactively.
- Improve parsing of xcodebuild -list output.
- Type aliases that define an associated type are now identified as used.
- None.
- None.
- Workaround issue with xcodebuild using non-UTF8 encoding.
- None.
- Enable analysis of CocoaPod targets.
- None.
- None.
- None.
- Improve scheme identification for older workspaces.
- Fix handling of source files containing single quotes.
- Fix handling of paths to swiftc that contain hyphens e.g Xcode-9.3.app.
- None.
- Disabled code signing as it's not necessary and can cause build failures.
- Schemes are no longer required to be marked as shared in order to be discovered.
- Fixed discovery of xibs/storyboards that reside within a Base.jproj.
- Fix retention of protocol declarations with a default implementation within an extension.
- None.
- None.
- Correctly handle projects containing spaces their PRODUCT_NAME.
- Add support for missing declaration kinds.
- None.
- None.
- Improve xcodebuild swiftc argument parsing such that CoreData generated model file arguments are retained.
- Improved invalid scheme error message.
- None.
- Added trial mode.
- None.
- The --retain-all-enum-cases option has been removed. Unused cases of enums that are not raw representable are always identified. Unused cases of raw representable enums are now implicitly used since their use may be completely dynamic. --aggressive analysis disables this implicit behavior.
- The --retain-objc-annotated option is now enabled by default.
- Xcode format output is colored to improve readability.
- CodingKey enums are now correctly identified as used if the enclosing class or struct conforms to Decodable.
- None.
- None.
- Fix retention of declarations marked @IBOutlet or @IBAction.
- None.
- None.
- Fix issue parsing Xcode projects that contained groups without an associated physical directory.
- None.
- None.
- Added --project option for use with projects that do not have an .xcworkspace.
- Initial release.