在路径SwiftLint上找不到可定位文件

时间:2019-04-17 16:49:20

标签: swift xcode swiftlint

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

"${PODS_ROOT}/SwiftLint/swiftlint" 

SwiftLint已正确安装,并且在项目中出现很多错误和警告。

然后,我创建了swiftLint.yml文件,在其中我修改了一些规则,但这些规则并未纳入考虑范围,并且Xcode项目中仍存在相同数量的错误和警告。

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

    ./swiftlint lint --config .swiftlint.yml       

我收到错误消息:

 No lintable files found at paths : ''

请问如何解决此问题?

5 个答案:

答案 0 :(得分:2)

  • 如果您将swiftLint与CocoaPods结合使用,请在项目构建阶段在SwiftLint运行脚本中尝试"${PODS_ROOT}/SwiftLint/swiftlint" --config .swiflint.yml

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

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

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

  • 不要在配置文件中转义目录路径 不要做 - some\ Directory,但要做 - some Directory,不要使用转义符。

答案 1 :(得分:1)

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

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

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

Build Phase Entry for swiftlint via cocoapods

答案 2 :(得分:1)

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

需要注意的事项。

  • 确保您的 swiftlint.yml 文件有效。
  • 确保 swiftlint.yml 与您的 .xcodeproj 处于同一级别
  • 不要指定 --path 并在包含的条目下添加一个条目:在您的 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"

enter image description here

最后在 yml 文件中。

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

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

需要注意的一件重要事情是,如果您在包含的目录下添加目录:--path 参数将被忽略,如果目录错误,您可能会收到“未找到 lintable 文件”错误。

答案 3 :(得分:1)

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

 included: # paths to include during linting
    - My_App_Directory

答案 4 :(得分:0)

首先,如果--config文件位于运行目录中(运行命令的位置)并且名称为{{1},则无需显式添加yml文件}。

第二,您需要使用.swiftlint.yml指定源的路径。下面的命令在您的情况下可以正常使用

--path