Che*_*wra 10 ios swift3 swiftlint xcode8
我在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会产生一个称为圈复杂度的警告.为什么会出现此警告警告以及如何解决此问题?
Jak*_*lář 26
该方法过于复杂.但是,不是重写代码,而是可以switches从cyclomatic_complexity计算中排除(因为它们是完全可读的),如下所示:
cyclomatic_complexity:
ignores_case_statements: true
Run Code Online (Sandbox Code Playgroud)
dea*_*rne 13
您可以在代码中禁用 swiftlint 警告,如下所示:
// swiftlint:disable cyclomatic_complexity
func selectedMenuInLoggedOutState(sender: UIButton) {
...
}
// swiftlint:enable cyclomatic_complexity
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想明确禁用下一个 swiftlint 警告:
// swiftlint:disable:next cyclomatic_complexity
func selectedMenuInLoggedOutState(sender: UIButton) {
Run Code Online (Sandbox Code Playgroud)
Dan*_* T. 11
出现警告是因为您的功能过于复杂,因为度量标准定义了从根本上计算需要做出的决策数量.
在这种特殊情况下避免它的一种简单方法是使用一些简单的数学:
func selectedMenuInLoggedOutState(sender: UIButton) {
guard let menu = LeftGuestMenu(rawValue: sender.tag - 1) else { return }
self.changeGuestViewController(menu)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8361 次 |
| 最近记录: |