我在我的iOS项目中使用过"swiftlint",我也知道在终端的项目根路径中输入"swiftlint autocorrect"来更正一些警告和错误。
当我在Xcode中Run
项目时,有没有办法运行"swiftlint autocorrect"?
编辑
swiftlint
不建议使用这种方式执行命令"swiftlint autocorrect"。
我发现使用"swiftlint autocorrect"的方法是在终端中键入它。
在Xcode中"运行"时使用"swiftlint自动更正"是否是一个好的做法?
4条答案
按热度按时间uelo1irk1#
自动更正不再可用。如果您从终端运行自动更正,您应该看到以下消息
swiftlint autocorrect
命令不再可用。请改用swiftlint --fix
。因此,如果您已经通过CocoaPods安装了swiftlint,则脚本应如下所示
6uxekuva2#
swiftlint
project说明您可以通过以下步骤来完成此操作:将SwiftLint集成到Xcode项目中,以在问题导航器中显示警告和错误。
要执行此操作,请单击文件导航器中的项目,然后单击主要应用目标,并转到构建阶段。单击+并选择"新建运行脚本阶段"。插入以下内容作为脚本:
您可能希望将SwiftLint阶段直接移到"编译源代码"步骤之前,以便在编译之前快速检测错误。但是,SwiftLint设计为在干净地完成编译器解析阶段的有效Swift代码上运行。因此,在"编译源代码"之前运行SwiftLint可能会产生一些不正确的结果。
如果你也想自动修正违规,你的脚本可以运行
swiftlint autocorrect && swiftlint
而不是swiftlint
。这意味着所有可修正的违规都被修正了,同时确保在你的项目中对剩余的违规显示警告。如果您已经通过CocoaPods安装了SwiftLint,则脚本应如下所示:
我认为推荐这样使用
swiftlint
,唯一的警告是您可能希望将SwiftLint阶段直接移到"编译源代码"步骤之前,以便在编译之前快速检测错误。但是,SwiftLint设计为在干净地完成编译器解析阶段的有效Swift代码上运行。因此,在"编译源代码"之前运行SwiftLint可能会产生一些不正确的结果。
这是关于脚本的 * 放置 * 而不是脚本本身。这意味着
swiftlint
只保证在有效的源代码上正确执行,所以只有当您将脚本放在"编译源代码"阶段 * 之后 * 时,swiftlint
才能正确工作,这样swiftlint
只在编译器验证了您的代码后运行。但是,在我的个人设置中,我在保存文件时使用
vim
来运行swiftlint
(通常处于不可编译状态),其在编译之前运行,当我还没有关闭我打开的所有{
时,除了偶尔奇怪的格式之外,我没有遇到任何问题。我不认为在"编译源代码"之前运行swiftlint
会有任何问题阶段。注意:页面上的其他警告
⚠️This plugin will not work with Xcode 8 or later without disabling SIP. This is not recommended.
不是关于"运行脚本阶段"的。这是指Xcode插件,它将在保存时运行
swiftlint
,就像vim
一样。要在最新版本的Xcode上使用此插件,您需要禁用安全功能SIP,这是不推荐的。但同样,这与"运行脚本阶段"解决方案无关。bqujaahr3#
只是稍微扩展一下@deaton.dg的答案(我发现它非常有用)。
我替换的前一个脚本(在Xcode Build Phases 中)包含在引号
"
中,但是使用引号中的新脚本会导致构建错误。花了一点时间才发现似乎是引号引起了问题。
因此,如果您已经通过 CocoaPods 安装了 SwiftLint,并且希望在构建时执行swiftlint autocorrect,我发现您需要确保脚本不包含引号(即,完全按照@deaton.dg的后续注解):
aemubtdh4#
是,请在
Compile Resources
之前将以下脚本添加到Build Phases