在 SwiftLint 路径中找不到 lintable 文件

问题描述 投票:0回答:10

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

"${PODS_ROOT}/SwiftLint/swiftlint" 

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

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

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

    ./swiftlint lint --config .swiftlint.yml       

我收到错误:

 No lintable files found at paths : ''

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

swift xcode swiftlint
10个回答
13
投票

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

 included: # paths to include during linting
    - My_App_Directory

3
投票

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

需要注意的事项。

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

在你的脚本中。

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

“${PODS_ROOT}/SwiftLint/swiftlint”--path“${SRCROOT}/Classes”--config“您的配置目录”

--path 参数应该是你自己的

--path "${SRCROOT}/Classes"

最后在 yml 文件中。

确保您包含和排除的文件规范正确,请参阅下面我的操作方法。

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

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


3
投票

对于那些之前使用过 0.42.0 并更新到 0.43.0(或更高版本?)的人。 他们进行了更改,现在将

included
excluded
解释为相对路径。

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

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


2
投票

首先,如果

--config
文件位于运行目录(运行命令的位置)并且名称为
yml
,则无需显式添加
.swiftlint.yml
文件。

其次,您需要使用

--path
指定源路径。以下命令适合您的情况,

swiftlint lint --path SourcePath

2
投票
  • 如果您将 swiftLint 与 CocoaPods 一起使用:请在项目构建阶段的 SwiftLint 运行脚本中尝试

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

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

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

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

  • 不要转义配置文件中的目录路径 不要这样做:

     - some\ Directory
    但是在没有转义字符的情况下执行
     - some Directory


1
投票

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

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

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


1
投票

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

0
投票

对于 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

-2
投票
If you using pod file then follow this steps:

Run Script: "${PODS_ROOT}/SwiftLint/swiftlint"


-2
投票

这对我有用

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
© www.soinside.com 2019 - 2024. All rights reserved.