Swift – 函数体长度违规或行长度违规

Spa*_*Dog 10 swift swift5

我在 Xcode (swift) 上有一个函数,它返回一个非常长的数组,即每行一个单词。喜欢

static func en() -> [String] {
    [
        "a",
        "about",
        "above",
        "after",
        "again",
        "against",
        "all",
        "am",
        ...
Run Code Online (Sandbox Code Playgroud)

当我尝试编译这个时,我得到:

Function Body Length Violation: Function body should span 40 lines or less excluding comments and whitespace: currently spans 175 lines (function_body_length)
Run Code Online (Sandbox Code Playgroud)

如果我尝试删除换行符并添加空格,我会得到这个

Line Length Violation: Line should be 120 characters or less: currently 1492 characters (line_length)
Run Code Online (Sandbox Code Playgroud)

我认为问题出在 SwiftLint 上。

我该如何解决这个问题?如何禁用此错误。

小智 10

在函数定义之前添加此内容以忽略 swiftlint 函数体长度规则。

// swiftlint:disable function_body_length
Run Code Online (Sandbox Code Playgroud)


Chr*_*phe 6

选项 1:调整您的布局或设计

您的问题似乎是由源代码中的一长串英文单词引起的。

在每行一个项目和一行包含所有项目之间的一种简单方法是将这些数据分布在几行上

1492 个字符分为 120 行,共 13 行。如果您考虑到平均英语单词长度为 4.7(在您的情况下,平均不可分割的标记长度为 6.7,并带有引号,您可能需要在额外的行上移动一些单词。计算一下,平均而言,额外的行必须包含额外的 88 个字符 (6.7*13),因此是第 14 行。鉴于 175 行限制,您仍然有足够的余量;-)

更好的方法是将数据存储在文件中并在运行时动态地将数据加载到数组中。您不仅不会增加源代码的重量,而且还可以方便地维护新单词列表以及国际化。

选项 2:配置 linter

相对较小的行长度和主体长度限制与语法或编译器限制无关。它的静态分析规则旨在挑战您编写更具可读性的代码。

您可以禁用规则

  • 在项目级别,在文件中 .swiftlint.yml
  • 在源代码中,带有注释// swiftlint:disable <rule1> [<rule2> <rule3>...]

line_length你可以在这个SO问题中找到实际的例子