到目前为止,我找到的是这篇博客文章:It's time to use Swift Package Manager,建议将SwiftLint和其他工具与Package.swift
集成。
我能够向包文件添加依赖项,成功地构建和测试,但SwiftLint从未警告我语法违规。
在Xcode项目中使用此构建阶段步骤之前:
if which swiftlint >/dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
这篇文章建议采用Komondor,没有PackageConfigs它就没用了。这个想法是在提交期间运行SwiftLint命令。我试着添加这两个项目,但无法在合理的时间内让它工作。在提交期间,我看到如下警告:
非法指令:4 $komondor运行预提交
这仍然是早期的Swift软件包管理器和几乎没有任何信息在互联网上。
理想情况下,我希望有任何解决方案,使我们的团队自动化SwiftLint,理想情况下,这将不需要添加22个依赖项,配置文件,并需要动态库。
3条答案
按热度按时间jdzmm42g1#
从版本0.47.1开始,可以将SwiftLint附加到Swift包。您可以使用
.artifactbundle.zip
工件:在Package.swift
中:接下来你需要设置一个插件配置,在你的"Plugins/SwiftLintPlugin"目录中创建一个"plugin. swift"文件:
就是这样。
如果你需要更多的上下文如何做到这一点,你也可以看看我的存储库在这里:https://github.com/Filozoff/Kukulka
ig9co6j12#
Swift中一个名为Package Manager Extensible Build Tools(SE-0303)的提议已经实现,并于2021年10月在Swift 5.6(not yet released)中提供。
一个新的目标类型,
plugin
(与executable
和library
一起)将可用于在构建期间配置命令。这意味着SwiftLint要成为Swift包插件还需要做一些工作。SwiftLint作者可以 * 实现一个包插件,在构建之前创建一个命令来运行Swiftlint。*我将在此建议实现时以及SwiftLint支持可扩展构建工具时进行更新
dzhpxtsq3#
现在你可以通过Swift Package Manager插件正式使用SwiftLint了,要做到这一点,请添加包依赖项,然后在
Package.swift
中指定要lint的目标插件:截至2023-01-13,我发现在包依赖中指定最新版本(
0.50.3
)的exact
版本会导致SPM解析依赖失败,使用branch
设置为main
(如上所述)或特定的revision
似乎都有效。然后,在
.swiftlint.yml
中,您可以指定要lint的目录: