如何找到一个项目中的所有地方,其中覆盖~=使用?


extension String {
static func ~= (lhs: String, rhs: String) -> Bool {
guard let regex = try? NSRegularExpression(pattern: rhs) else { return false }
let range = NSRange(location: 0, length: lhs.utf16.count)
return regex.firstMatch(in: lhs, options: [], range: range) != nil
}
}

我想不出一种方法来找到一个项目中所有的地方,在那里这个被覆盖的函数被使用。
由于某些原因,Cmd+Ctrl+Shift+H在这种情况下不起作用。

你可以说:"只要在代码库中搜索~=符号"。
但是~=也是隐式用于switch-case运算符的求值。

用例:
假设我想更改~=函数的逻辑(我确实这样做了)。我可以肯定的是,我还必须在使用这个函数的地方修改代码。所以我需要找到所有的switch-cases在哪里使用。否则这些switch-cases将变得工作不正确(编译器不会显示任何警告)。

p。S.
作为一个解决方案的例子:在代码库中搜索所有switch的外观,其中只查找switch String/case String。这正是我所需要的。
这种方法唯一的问题是:它将花费我几个小时(如果不是几天)🤣

如果要弃用重写呢?然后你只需要查看编译器的警告。

extension String {
@available(*, deprecated, message: "Found it")
static func ~= (lhs: String, rhs: String) -> Bool {
guard let regex = try? NSRegularExpression(pattern: rhs) else { return false }
let range = NSRange(location: 0, length: lhs.utf16.count)
return regex.firstMatch(in: lhs, options: [], range: range) != nil
}
}

最新更新