当我在 Xcode 中"运行"项目时,有没有办法运行"swiftlint autocorrect"?



我使用了"swiftlint";在我的iOS项目中。我也知道要键入";swiftlint自动校正";在终端中的项目根路径上更正一些警告和errros。

有没有办法运行";swiftlint自动校正";当我在Xcode中Run项目时?

编辑

命令";swiftlint自动校正";swiftlint不建议使用这种方式。

我找到了使用";swiftlint自动校正";是在终端中键入它。

使用";swiftlint自动校正";当";运行";在Xcode中是不是一个好的做法?

自动更正不再可用。如果您从终端运行自动更正,您应该看到以下消息

swiftlint autocorrect命令不再可用。请使用CCD_ 4。

因此,如果您通过CocoaPods安装了swiftlint,脚本应该看起来像

${PODS_ROOT}/SwiftLint/swiftlint --fix && ${PODS_ROOT}/SwiftLint/swiftlint

只是稍微扩展一下@deaton.dg的答案(我觉得这很有用(。

我要替换的上一个脚本(在XcodeBuild Phases中(包含在引号"中,但是在引号中使用新脚本会导致生成错误。

花了一点时间才发现似乎是引号引起了问题。

因此,如果您已经通过CocoaPods安装了SwiftLint,并且您希望在构建时执行SwiftLint自动更正,我发现您需要确保脚本不包含引号(即完全符合@deaton.dg的后续评论(:

${PODS_ROOT}/SwiftLint/swiftlint autocorrect && ${PODS_ROOT}/SwiftLint/swiftlint

swiftlint项目说,您可以通过以下步骤做到这一点:

Xcode

将SwiftLint集成到您的Xcode项目中,以在问题导航器中显示警告和错误。

要执行此操作,请单击文件导航器中的项目,然后单击主要应用程序目标,然后转到构建阶段。单击+并选择";新运行脚本阶段";。插入以下内容作为脚本:

if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

您可能希望将SwiftLint阶段直接移到"编译源代码"步骤之前,以便在编译之前快速检测错误。然而,SwiftLint被设计为在有效的Swift代码上运行,该代码干净地完成了编译器的解析阶段。因此,在"编译源代码"之前运行SwiftLint可能会产生一些不正确的结果。

如果您也希望自动更正冲突,您的脚本可以运行swiftlint autocorrect && swiftlint,而不仅仅是swiftlint。这意味着所有可纠正的违规行为都已修复,同时确保在项目中显示剩余违规行为的警告。

如果你已经通过CocoaPods安装了SwiftLint,脚本应该是这样的:

"${PODS_ROOT}/SwiftLint/swiftlint"

我认为建议使用这样的swiftlint。唯一的警告是

您可能希望将SwiftLint阶段直接移到"编译源代码"步骤之前,以便在编译之前快速检测错误。然而,SwiftLint被设计为在有效的Swift代码上运行,该代码干净地完成了编译器的解析阶段。因此,在"编译源代码"之前运行SwiftLint可能会产生一些不正确的结果。

这是关于脚本的放置,而不是脚本本身。这意味着swiftlint只能保证在有效的源代码上正确执行,因此只有在"编译源代码"阶段之后放置脚本,才能保证swiftlint正常工作,这样swiftlint只有在编译器验证了您的代码后才能运行。

然而,在我的个人设置中,当我保存编译前运行的文件(通常处于不可编译状态(时,我使用vim来运行swiftlint,并且当我还没有关闭所有打开的{时,除了偶尔出现的奇怪格式外,我没有遇到任何问题。我认为在"编译源代码"阶段之前运行swiftlint不会有任何问题。

注意:页面上的其他警告

⚠️如果不禁用SIP,此插件将无法与Xcode 8或更高版本一起使用。不建议这样做。

是关于"运行脚本阶段"的而非。这是指一个Xcode插件,它将在保存时运行swiftlint,就像vim一样。要在最新版本的Xcode上使用此插件,您需要禁用安全功能SIP,这是不推荐的。但同样,这与"运行脚本阶段"解决方案无关。

是,请在Compile Resources之前将以下脚本添加到Build Phases

export PATH="$PATH:/opt/homebrew/bin"
if which swiftlint > /dev/null; then
swiftlint --fix && swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

相关内容

最新更新