标签: swiftlint

Swiftlint 中的“Type Body Length”究竟是什么意思?

我们刚刚将 Swiftlint 添加到我们的项目中,我们希望遵循所有规则,但我不确定“type_body_length”警告是什么意思。我不是以英语为母语的人,所以我觉得这有点令人困惑。

文件长度也有规则,那么它们有何不同?什么属于这个定义?

在此处输入图片说明

swift swiftlint

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

周期性复杂性违规:函数应该具有10或更低的复杂度:当前复杂度等于13(cyclomatic_complexity)

我在swift3中有以下代码,我使用swift lint来代码.代码如下:

    func selectedMenuInLoggedOutState(sender: UIButton) {
    switch sender.tag {
    case 1:
      if let menu = LeftGuestMenu(rawValue: 0) {
        self.changeGuestViewController(menu)
      }
    case 2:
      if let menu = LeftGuestMenu(rawValue: 1) {
        self.changeGuestViewController(menu)
      }
    case 3:
      if let menu = LeftGuestMenu(rawValue: 2) {
        self.changeGuestViewController(menu)
      }
    case 4:
      if let menu = LeftGuestMenu(rawValue: 3) {
        self.changeGuestViewController(menu)
      }
    case 5:
      if let menu = LeftGuestMenu(rawValue: 4) {
        self.changeGuestViewController(menu)
      }
    case 6:
      if let menu = LeftGuestMenu(rawValue: 5) {
        self.changeGuestViewController(menu)
      }
    default:
      break
    }
  }
Run Code Online (Sandbox Code Playgroud)

swiftlint会产生一个称为圈复杂度的警告.为什么会出现此警告警告以及如何解决此问题?

在此输入图像描述

ios swift3 swiftlint xcode8

10
推荐指数
3
解决办法
8361
查看次数

在路径 SwiftLint 中未找到 lintable 文件

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

"${PODS_ROOT}/SwiftLint/swiftlint" 
Run Code Online (Sandbox Code Playgroud)

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

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

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

    ./swiftlint lint --config .swiftlint.yml       
Run Code Online (Sandbox Code Playgroud)

我收到错误:

 No lintable files found at paths : ''
Run Code Online (Sandbox Code Playgroud)

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

xcode swift swiftlint

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

在 Apple Silicon xcode 上找不到 Swiftlint

使用自制软件安装swiftlint 时,一切都正确安装,但是当我打开 xcode 时,我看到未安装 swiftlint 的消息。我读过这个问题,它说自制软件现在安装在这条路径下/opt/homebrew,苹果硅和 xcode 会在 swiftlint 中查找/usr/local?我怎样才能让 xcode 重新确认我实际上已经安装了 swiftlint。Swiftlint 肯定已安装,我可以从终端输入 swiftlint 并查看所有命令。

xcode swiftlint apple-silicon

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

冒号违规:在指定类型时,冒号应位于标识符旁边,并且在字典文字中键旁边.(结肠)

我目前正在使用SwiftLint来完成我项目中的完美编码标准.安装后,我收到了很多警告,常见的是:

"冒号违规:在指定类型时,冒号应位于标识符的旁边,并且在字典文字中的键旁边.(冒号)".

在此输入图像描述

var indexPath:IndexPath!
static let collapsedHeigth : CGFloat = 80
static let expandedHeigth : CGFloat = 210
Run Code Online (Sandbox Code Playgroud)

它意味着什么以及如何改进它?

swift swiftlint

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

遗留构造函数违规:Swift构造函数优于传统的便捷函数.(legacy_constructor)

我在这一行收到了一个SwiftLint警告:

return UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset)
Run Code Online (Sandbox Code Playgroud)

这是警告:

遗留构造函数违规:Swift构造函数优于传统的便捷函数.(legacy_constructor)

我也在这条线路上收到警告:

return CGRectInset(bounds, insetX, insetY)
Run Code Online (Sandbox Code Playgroud)

遗留的CGGeometry函数违规:结构扩展属性和方法优于遗留函数(legacy_cggeometry_functions)

什么是斯威夫特版本UIEdgeInsetsMakeCGRectInset

xcode swift swiftlint

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

如何安装特定版本的swiftlint?

我正在尝试修复此错误:

Error: swiftlint does not have a version "0.11.1" in the Cellar.
Run Code Online (Sandbox Code Playgroud)

通过运行:

brew install swiftlint-0.11.1
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用,然后我尝试了" brew search swiftlint",但没有出现.

有人能指出我使用特定版本安装swiftlint的正确方法吗?

homebrew swiftlint

8
推荐指数
3
解决办法
8019
查看次数

Swift中的嵌套类型 - 什么是好的做法?

我有一个swiftlint困扰我的警告.

warning: Nesting Violation: Types should be nested at most 1 level deep (nesting)

然而,结构的嵌套是既定的编程技术,以及相当一些人在坚持它.

编辑:确实@vadian指出了Swift语言指南的规则:要在另一种类型中嵌套类型,请在其支持的类型的外括号内写入其定义.类型可以嵌套到所需的级别.

我知道它与泛型的使用冲突,并且Xcode可能变得难以忍受地缓慢.它实际上是(通过测量最慢的编译点)我开始查看这个嵌套规则的原因.

皮棉规则的原因是什么,在这方面的良好做法是什么?请指出技术原因,而不是纯粹基于意见的建议.

Microsoft实际上有一个关于嵌套类型页面,以及它们何时适用.虽然它不是针对Swift的,但它确实有一些有趣的跨语言思想.

swift swiftlint

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

NSMakeRange: Legacy Constructor Violation: Swift 构造函数比遗留的便利函数更受欢迎。

我使用以下代码提供 UILabel 文本之间的行距。

let daysAttrString = NSMutableAttributedString(string: allDays)
  let paragraphStyle = NSMutableParagraphStyle()
  paragraphStyle.lineSpacing = 7
  paragraphStyle.minimumLineHeight = 7
  daysAttrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, daysAttrString.length))
  cell.operationalDays.attributedText = daysAttrString
Run Code Online (Sandbox Code Playgroud)

但是我在使用 SwiftLint 时收到以下警告,如下所示:

遗留构造函数

为什么显示它以及如何解决这个问题?

nsrange swift swiftlint

8
推荐指数
0
解决办法
2266
查看次数

Swiftlint 覆盖与 SPM 相关的项目设置

我遇到了 swiftlint 自动更正的奇怪行为。我的项目使用通过 SPM 导入的库。但是当我运行 linter 时,它会更改如下设置

B4621A7323D0A90F00545ADE /* LibraryName in Frameworks */ = {isa = PBXBuildFile; productRef = B4621A7223D0A90F00545ADE /* LibraryName */; };

files = (
    B4621A7323D0A90F00545ADE /* LibraryName in Frameworks */,

packageProductDependencies = (
    B4621A7223D0A90F00545ADE /* LibraryName */,

packageReferences = (
    B4621A7123D0A90F00545ADE /* XCRemoteSwiftPackageReference "library-name" */,
Run Code Online (Sandbox Code Playgroud)

像这样的事情

B4621A7323D0A90F00545ADE /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = B4621A7223D0A90F00545ADE /* SwiftPackageProductDependency */; };

files = (
    B4621A7323D0A90F00545ADE /* BuildFile in Frameworks */,

packageProductDependencies = (
    B4621A7223D0A90F00545ADE /* …
Run Code Online (Sandbox Code Playgroud)

xcode swift swift-package-manager swiftlint

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