我正在编写自定义代码静态分析规则。
我想找到这样的覆盖功能,不要具有超级函数调用。
例如,regexp应该找到这个:
override func testFunc(num: Int) {
print()
}
但是,不找到这个:
override func testFunc(num: Int) {
print()
super.testFunc(num: num)
print()
}
我们应该记住,函数内部可以包含额外的块。所以,我们还找不到这个:
override func testFunc(num: Int) {
print()
super.testFunc(num: num)
let block = {
print("inside block")
}
print()
}
我们不应该对块内的超级函数调用感兴趣。只在该功能内部。
我写了这个:override func\s(\w*)\(.*?\{.*?super\.\1.*?\}
但它不考虑块,它找到 超级函数调用的函数。而且我不知道如何反转这一点。