Breaking
- 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.
Enhancements
- 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.
Bug Fixes
- 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.