标签: swiftlint

SwiftLint 安装步骤在 GitHub Actions 上失败

最近 GitHub Actions 发生了一些变化,我们不确定发生了什么或如何解决它。我们正在测试和构建 iOS 应用程序,并使用 SwiftLint 进行自动 PR 检查。

几个月来,我们的工作配置一直运转良好,但大约 1.5 周前,事情开始变得不稳定。有时它贯穿,有时则不贯穿。

我们的文件中曾经有这样的内容run-tests.yml

  - name: Install SwiftLint
    run: brew install swiftlint
Run Code Online (Sandbox Code Playgroud)

9 天前,测试在这一步突然开始失败。以下是来自 GitHub Actions 的日志:

==> 浇注 swiftlint-0.42.0.catalina.bottle.tar.gz

错误:该brew link步骤未成功完成 已构建公式,但未符号链接到 /usr/local 无法符号链接 bin/swiftlint 目标 /usr/local/bin/swiftlint 已存在。您可能想删除它: rm '/usr/local/bin/swiftlint'

要强制链接并覆盖所有冲突的文件:brew link --overwrite swiftlint

列出要删除的所有文件:brew link --overwrite --dry-run swiftlint

可能的冲突文件是:/usr/local/bin/swiftlint

==> 摘要 /usr/local/Cellar/swiftlint/0.42.0:6 个文件,12.2MB 错误:进程已完成,退出代码为 1。

经过一些研究,查看错误消息并看到其他作业成功运行(意味着 SwiftLint 可以正确安装),我们决定设置一个故障保护:尝试链接现有的 SwiftLint,如果失败,只需安装它:

  - name: Link SwiftLint or install it
    run: brew link --overwrite swiftlint || brew install …
Run Code Online (Sandbox Code Playgroud)

continuous-integration homebrew swift swiftlint github-actions

3
推荐指数
1
解决办法
1167
查看次数

如何修复'行长度违规:行应该是120个字符或更少' - SwiftLint

如何修复线路长度违规?

由于线路长度违规而不允许的警报消息的相关部分: message: NSLocalizedString("\nYou will be requested to Use %@ to Sign In. %@ doesn't share any information about you. The permission is required to post your Live Video.", ⚠行应为120个字符或更少:当前208个字符(line_length)

swift swiftlint

2
推荐指数
2
解决办法
9700
查看次数

Xcode 10、sourcery 和 swiftlint 构建阶段顺序

更新到 Xcode 10 后,初始项目配置存在一些问题。步骤如下所示:

  1. 使用Sourcery生成一些文件
  2. 使用SwiftLint进行 Linting
  3. 建造

配置的工作方式如下:

在此输入图像描述

这在 Xcode 9 中工作正常,但显然,它在 Xcode 10 构建系统下不起作用。问题是我是否下载存储库(.generated文件不是存储库的一部分)。点击build它会显示如下结果:

...使用“.sourcery.yml”处的配置文件扫描源...发现 239 种类型。正在加载模板...已加载 9 个模板。生成代码...完成。处理时间0.491948962211609秒...

所以 sourcery 工作正常,然后进行 linting:

Linting 'FromResponse. generated.swift' (1/186)

工作正常以及过程,但最终构建将失败:

错误:找不到构建输入文件:'/path/Generate/FromResponse. generated.swift',...

所以这很奇怪,因为文件实际上是存在的,并且根据构建设置文件应该在生成它们之后进行编译。那么我应该如何在构建过程中处理源代码呢?

xcode swiftlint sourcery xcode10

2
推荐指数
1
解决办法
2650
查看次数

如何禁用 swiftlint 配置文件中的字符限制

我正在开发一个项目,我需要如何禁用 swiftlint 配置文件中的字符限制,那么如何禁用字符限制?

这是 swiftlint 文件

disabled_rules:
  - force_cast
  - force_try
  - variable_name
  - type_name
  - file_length
  - type_body_length
  - cyclomatic_complexity
  - function_body_length
  - valid_docs
  - trailing_whitespace

opt_in_rules:
  - empty_string

excluded:
  - Carthage
  - Pods
  - SwiftLint/Common/3rdPartyLib

line_length:
    warning: 150
    error: 200
    ignores_function_declarations: true
    ignores_comments: true
    ignores_urls: true

custom_rules:
  smiley_face:
    name: "Smiley Face"
    regex: '( :\))'
    match_kinds:
      - comment
      - string
    message: "A closing parenthesis smiley :) creates a half-hearted smile, and thus is not preferred. Use :]"
severity: warning
Run Code Online (Sandbox Code Playgroud)

ios swift swiftlint

2
推荐指数
1
解决办法
6658
查看次数

如何仅为 git diff 文件运行 swiftlint

我正在研究一个 iOS Swift 项目。Git 被用于版本控制。我只想swiftlint为新更改的文件运行工具。换句话说,我只想检查上次提交之前已编辑的文件的静态问题。如果可能,我会将脚本添加到 中Build phase -> Run script,以便每个开发人员只能找到他们正在处理的文件的静态问题。是否可以?

git version-control swift swiftlint

2
推荐指数
1
解决办法
1215
查看次数

SwiftLint - 禁用特定文件中的行长规则

当前 SwiftLint 规则:

file_length:
  warning: 800
  error: 1500
Run Code Online (Sandbox Code Playgroud)

错误

在此处输入图片说明

我遵循了这个答案,但错误并没有消失

// swiftlint:disable force_cast

import UIKit

class MyClass: UIViewController {

}

// swiftlint:enable force_cast
Run Code Online (Sandbox Code Playgroud)

如何忽略某些文件中的 SwiftLint 规则?

ios swift swiftlint

2
推荐指数
1
解决办法
2850
查看次数

SwiftLint 更改规则 Cocoapods

我最近刚刚使用 CocoaPods 安装了 SwiftLint。我想更改 SwiftLint 的规则,但是当我进入 pod -> SwiftLint 时,我找不到名为“rules”的文件,通过该文件我可以编辑我的规则。请让我知道我该如何做同样的事情!多谢!对此,我真的非常感激!

cocoapods swift swiftlint

2
推荐指数
1
解决办法
1432
查看次数

Git 相对路径问题 - 在路径中找不到 lintable 文件

我在 git 版本控制系统下有一个 iOS/Swift 项目。层次结构如下,

home/user/git_root/docs
home/user/git_root/project
home/user/git_root/project/project.xcodeproj
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的git_root目录包含文件夹中的一些其他文档docs以及实际的项目目录。

我已经使用自制软件安装swiftlint在我的Mac上,

brew install swiftlint
Run Code Online (Sandbox Code Playgroud)

swiftlint 当前安装的位置是,

which swiftlint
/usr/local/bin/swiftlint
Run Code Online (Sandbox Code Playgroud)

当我运行下面添加的脚本时Build phase -> Run scripts,发生了奇怪的事情,

脚本:

if which swiftlint >/dev/null; then
    echo "swiftlint already installed in machine";
    git diff --cached --name-only | grep "\.swift" | while read filename; do
        echo "swiftlinting file $filename";
        swiftlint lint --path "$filename";
    done
fi
Run Code Online (Sandbox Code Playgroud)

问题:

一些 swift 文件通过 echo 打印,但swiftlint找不到文件并产生以下错误,

在路径中找不到 lintable 文件:''

例如,下面是构建日志的输出,

swiftlinting 文件项目/a.swift

在路径中找不到 …

bash xcode git-diff ios swiftlint

1
推荐指数
1
解决办法
2208
查看次数

有没有办法修复 SwiftLint 的尾随空格冲突?

我有一个在第 20 行有一个右括号的方法,我希望我的下一个方法从第 23 行开始,因为我希望第 22 行有一个注释。这将使第 21 行在这两种方法之间留有一个空格,但由于第 22 行是注释,SwiftLint 将抛出“尾随空白违规”。有没有什么办法解决这一问题?空白违规代码

xcode whitespace swift swiftlint

1
推荐指数
1
解决办法
864
查看次数

CGFloat的遗留常量违规(M_PI)*2

对于以下内容:

struct Constants {
    static let m2Pi = CGFloat(M_PI) * 2
}
Run Code Online (Sandbox Code Playgroud)

SwiftLint 0.16.1警告我:

警告:传统常量违例:结构范围的常量优先于传统的全局常量.(legacy_constant)

请注意,我需要此值UIBezierPath.init(arcCenter center: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool)来获得闭合弧.

cgfloat swift swiftlint

0
推荐指数
1
解决办法
329
查看次数

Alamofire.upload SwiftLint 违规

使用 Alamofire 上传图像的代码会触发 SwiftLint 违规。如何解决?

Alamofire.upload(multipartFormData: { (multipartFormData) in

                multipartFormData.append(imageData, withName: "profileImage", fileName: "image.png", mimeType: "image/jpg")
            }, usingThreshold: UInt64.init(), to: requestURL, method: .post, headers: headers) { (result) in
                switch result {
                case .success(let upload, _, _):
                    upload.responseJSON { response in
                        if let error = response.error {
                            completionBlock(.failure(error as NSError))
                            return
                        }
                        completionBlock(.success(response))
                    }
                case .failure(let error):
                    completionBlock(.failure(error as NSError))
                }
            }
Run Code Online (Sandbox Code Playgroud)

带有尾随闭包违规的多个闭包:传递多个闭包参数时不应使用尾随闭包语法。(multiple_closures_with_trailing_closure)

swift alamofire swiftlint

0
推荐指数
1
解决办法
1195
查看次数

SwiftLint 导致构建失败

我在构建阶段使用 swiftlint - 运行脚本。由于 swiftlint 错误,构建失败。如何继续成功构建但仍想在我的项目中生成 swiftlint 注释(即错误、警告)?

在此处输入图片说明

swift swiftlint

0
推荐指数
1
解决办法
1722
查看次数