11

我尝试使用 CocoaPods 安装 SwiftLint,并在构建阶段添加以下脚本:

"${PODS_ROOT}/SwiftLint/swiftlint" 

SwiftLint 安装正确,我在项目中收到许多错误和警告。

然后,我创建了 swiftLint.yml 文件,在该文件中我修改了一些规则,但它们没有被考虑在内,并且相同数量的错误和警告在 Xcode 项目中持续存在。

当我运行此命令以确认规则的应用时:

    ./swiftlint lint --config .swiftlint.yml       

我得到错误:

 No lintable files found at paths : ''

请问我该如何解决这个问题?

4

6 回答 6

3

如果您重命名应用程序的目录,也会发生这种情况,请确保在第一行也报告 .swiftlint.yml 中的更改:

 included: # paths to include during linting
    - My_App_Directory
于 2021-01-18T13:13:15.197 回答
2
  • 如果您将 swiftLint 与 CocoaPods 一起使用:"${PODS_ROOT}/SwiftLint/swiftlint" --config .swiflint.yml在项目构建阶段尝试使用 SwiftLint 运行脚本。

  • 确保您的 .swiflint.yml 配置文件位于项目目录的根目录中(在 .xcodeproj 文件旁边)。

  • 确保 .swiflint.yml 中包含的路径(包含:和排除:部分)是有效路径

  • 确保您的 .swiflint.yml 文件是有效的 yaml

  • 不要转义配置文件中的目录路径 不要: - some\ Directory但不要 - some Directory转义字符。

于 2020-07-07T10:31:30.540 回答
1

如果您使用 Cocoapods 安装它,这可以帮助您。我只会改进上述答案,以明确如何解决 SwiftLint 找不到路径的问题。

需要注意的事项。

  • 确保您的 swiftlint.yml 文件有效。
  • 确保 swiftlint.yml 与您的 .xcodeproj 处于同一级别
  • 不要指定 --path 并在 include 下添加一个条目:在您的 yml 文件中,选择一个,指定 --path 或添加一个条目 不要同时使用两者,否则 SwiftLint 将忽略 --path 参数,如果里面指定的条目包括:是错误的,你会得到“找不到 lintable 文件”错误

在你的脚本中。

  • SwiftLint 的 gihub 页面建议只使用 "${PODS_ROOT}/SwiftLint/swiftlint" 但这对我不起作用,我必须指定 --path 参见下面的完整脚本。

"${PODS_ROOT}/SwiftLint/swiftlint" --path "${SRCROOT}/Classes" --config "directory-of-your-config"

--path 参数应该是你自己的--path "${SRCROOT}/Classes"

在此处输入图像描述

最后在 yml 文件中。

确保您包含和排除的文件规范是正确的,请参阅下面我是如何做的。

included:
  - Your-Project-Name
  
excluded:
  - Pods

需要注意的重要一点是,如果您在 include 下添加目录: --path 参数将被忽略,如果目录错误,您可能会收到“no lintable files found”错误。

于 2021-01-07T13:22:32.887 回答
1

对于 0.41 版的 swiftlint,以下代码在构建阶段为我工作(具有多个项目的工作区。根据项目配置,可能必须从路径信息中删除“../”):

cd ${PROJECT_DIR}/../
"${PODS_ROOT}/SwiftLint/swiftlint" --config "${PROJECT_DIR}/../.swiftlint.yml"

这是构建阶段条目的屏幕截图:

通过 cocoapods 为 swiftlint 构建阶段入口

于 2020-12-22T09:25:51.627 回答
1

对于那些之前使用 0.42.0 并更新到 0.43.0(或更高版本?)的人。他们进行了更改,现在将included和解释excluded为相对路径。

配置文件现在始终将其包含/排除的相对文件路径应用到相对于它们在文件系统中的位置。以前根配置文件将这些相对于当前工作目录应用,但嵌套配置将这些应用到它们在文件系统中的位置。

来自0.43.0 的发行说明: 晾衣绳接口

于 2021-10-22T13:08:03.300 回答
1

首先,--config如果yml文件位于运行目录中(从您运行命令的位置)并且名称为.swiftlint.yml.

其次,您需要使用--path. 以下命令在您的情况下可以正常工作,

swiftlint lint --path SourcePath
于 2019-11-14T07:42:31.260 回答