我尝试使用 CocoaPods 安装 SwiftLint,并在构建阶段添加以下脚本:
"${PODS_ROOT}/SwiftLint/swiftlint"
SwiftLint 已正确安装,我在项目中收到许多错误和警告。
然后,我创建 swiftLint.yml 文件,在其中修改一些规则,但它们没有被考虑在内,并且 Xcode 项目中仍然存在相同数量的错误和警告。
当我运行此命令来确认规则的应用时:
./swiftlint lint --config .swiftlint.yml
我收到错误:
No lintable files found at paths : ''
请问我该如何解决这个问题?
如果您重命名应用程序的目录,也会发生这种情况,请确保也在 .swiftlint.yml 的第一行报告更改:
included: # paths to include during linting
- My_App_Directory
如果您使用 Cocoapods 安装它,这可以帮助您。 我只会改进上述答案,以明确如何解决 SwiftLint 找不到路径的问题。
需要注意的事项。
在你的脚本中。
“${PODS_ROOT}/SwiftLint/swiftlint”--path“${SRCROOT}/Classes”--config“您的配置目录”
--path 参数应该是你自己的
--path "${SRCROOT}/Classes"
最后在 yml 文件中。
确保您包含和排除的文件规范正确,请参阅下面我的操作方法。
included:
- Your-Project-Name
excluded:
- Pods
需要注意的一个重要事项是,如果您在include下添加目录:--path参数将被忽略,如果目录错误,您可能会收到“找不到lintable文件”错误。
对于那些之前使用过 0.42.0 并更新到 0.43.0(或更高版本?)的人。 他们进行了更改,现在将
included
和 excluded
解释为相对路径。
配置文件现在始终包含/排除 相对于文件中的位置应用的相对文件路径 系统。以前根配置文件应用了这些相对的 到当前工作目录,但应用了嵌套配置 这些到它们在文件系统中的位置。
首先,如果
--config
文件位于运行目录(运行命令的位置)并且名称为 yml
,则无需显式添加 .swiftlint.yml
文件。
其次,您需要使用
--path
指定源路径。以下命令适合您的情况,
swiftlint lint --path SourcePath
如果您将 swiftLint 与 CocoaPods 一起使用:请在项目构建阶段的 SwiftLint 运行脚本中尝试
"${PODS_ROOT}/SwiftLint/swiftlint" --config .swiflint.yml
。
确保您的 .swiflint.yml 配置文件位于项目目录的根目录中(位于 .xcodeproj 文件旁边)。
确保 .swiflint.yml 中包含的路径(包含:和排除:部分)是有效路径
确保您的 .swiflint.yml 文件是有效的 yaml
不要转义配置文件中的目录路径 不要这样做:
- some\ Directory
但是在没有转义字符的情况下执行 - some Directory
。
将
autocorrect
替换为 --fix
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
对于 M1,不要通过 PODS 进行快速 lint 安装,而是使用 Brew。 要安装,请在终端中运行以下命令
brew install swiftlint
并将以下脚本添加到 RunScript 中,进入目标的构建阶段。
export PATH="$PATH:/opt/homebrew/bin"
if which swiftlint > /dev/null; then
swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
这对我有用
if which "${PODS_ROOT}/SwiftLint/swiftlint" >/dev/null; then
${PODS_ROOT}/SwiftLint/swiftlint --fix && ${PODS_ROOT}/SwiftLint/swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi