我在swift3中有下面的代码,并且我正在使用快速链接来分析代码。守则如下:
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
}
}迅速的林特产生了一个“圈复杂度违规”警告。为什么会出现此警告,以及如何解决?

发布于 2017-08-25 23:48:12
出现此警告是因为指标定义的函数过于复杂,它本质上计算了需要作出的决策的数量。
在这种特殊情况下,避免这种情况的一个简单方法是使用一些简单的数学:
func selectedMenuInLoggedOutState(sender: UIButton) {
guard let menu = LeftGuestMenu(rawValue: sender.tag - 1) else { return }
self.changeGuestViewController(menu)
}发布于 2018-07-07 09:56:23
该方法是太复杂的。但是,您可以将switches排除在cyclomatic_complexity计算之外(因为它们完全可读),而不是重写代码,如下所示:
cyclomatic_complexity:
ignores_case_statements: true发布于 2019-05-01 09:48:11
您可以在这样的代码中禁用swiftlint警告:
// swiftlint:disable cyclomatic_complexity
func selectedMenuInLoggedOutState(sender: UIButton) {
...
}
// swiftlint:enable cyclomatic_complexity或者,如果您想要显式地禁用下一个迅捷警告:
// swiftlint:disable:next cyclomatic_complexity
func selectedMenuInLoggedOutState(sender: UIButton) {https://stackoverflow.com/questions/45890629
复制相似问题