在我的项目中,我使用SwiftLint分析器,为了删除所有未使用的导入,我使用以下行
xcodebuild -workspace lintanalize.xcworkspace -scheme MY_SCHEME -configuration Debug > xcodebuild.log
swiftlint analyze --fix --compiler-log-path xcodebuild.log它确实有效,分析器知道如何删除未使用的导入,但是问题是,它错误地删除了那些只有静态调用的导入,例如:
import PhotosUI
class PermissionPhotos {
func request(_ callback: @escaping (PermissionStatus) -> Void) {
PHPhotoLibrary.requestAuthorization(for: .readWrite) { ... }
}
}在本例中,我使用PHPhotoLibrary静态方法调用requestAuthorization,因此分析器将删除import PhotosUI,因为它认为静态调用没有使用此导入。
有办法解决吗?
UPD
我还注意到,同样的行为与params有关,例如
import PhotosUI
class PermissionPhotos {
func request(myvalue: PHPhotoLibrary) { ... }
}在本例中,PHPhotoLibrary将使用param,因此分析器将忽略这一点,并将删除import PhotosUI,看起来分析器只看到以下对象的实际定义
let myobj = PHPhotoLibrary()发布于 2022-07-20 01:49:21
您的swiftlint.yml文件可用于进行一些规则弯曲修改/自定义。有关未使用的导入- https://realm.github.io/SwiftLint/unused_import.html的规则,请参阅此页面,并检查Default configuration部分。
我最好的选择是你应该打开require_explicit_imports。
https://stackoverflow.com/questions/72934586
复制相似问题