SwiftLint 0.24.0版autocorrect命令无法修改文件问题咨询
我之前也碰到过类似的SwiftLint autocorrect失效的情况,结合你描述的场景——不管有没有配置文件、针对单个可修复规则(比如colon)也无效,给你几个实用的排查和解决方向:
优先升级SwiftLint版本
0.24.0是一个非常老旧的版本,这个版本确实存在不少autocorrect相关的已知bug,后续的版本已经修复了很多这类问题。如果你是用Homebrew安装的,可以直接执行:brew upgrade swiftlint要是手动下载的二进制包,建议替换为最新的稳定版本,之后再测试autocorrect功能。
检查文件权限
有时候终端显示“已修正文件”,但实际因为文件权限不足(比如只读)导致SwiftLint无法写入修改。你可以在终端里查看文件权限:ls -l Player.swift Prize.swift如果文件是只读状态,用下面的命令添加写入权限:
chmod +w Player.swift Prize.swift之后再重新执行autocorrect命令试试。
验证autocorrect的实际修改情况
执行autocorrect后,不要只看终端提示,手动打开Player.swift或Prize.swift,检查colon规则对应的违规点(比如冒号前后的空格格式)有没有真的被修正。如果文件完全没变化,那基本可以确定是老版本的bug,升级是最有效的解决办法。针对单个规则执行autocorrect
试试明确指定只修复colon规则,排除其他规则的干扰:swiftlint autocorrect --only colon如果这样还是无法修复,进一步说明是版本本身的问题,而非配置冲突。
清理SwiftLint缓存
老旧版本可能存在缓存异常的情况,你可以清理缓存后再尝试:rm -rf ~/Library/Caches/com.realm.swiftlint/清理完成后重新运行lint和autocorrect命令。
总的来说,最大概率的原因是你使用的SwiftLint版本太老,存在autocorrect的功能缺陷,升级到最新稳定版本应该能解决这个问题。
内容的提问来源于stack exchange,提问作者Max MacLeod

