2015-05-26 33 views
1

我正试图改进我们的代码质量警告。我们希望的一个警告是确保我们不使用NSLog(),而是使用GPLog()代码匹配规则的正则表达式前向引用

我有一个规则来捕获这些:

warning_regex 'Use GPLog() instead of NSLog()', /.*NSLog.*(?!GPLog).*/i 

这确实赶上NSLog()所有使用常规代码。

但是,有一个地方NSLog()被允许...在我们的GPLog.swift来源中,我们将原始电话打包为NSLog()。该代码看起来是这样的:

NSLog("%@:%d [%@]: \(message())", file.lastPathComponent, line, function) // GPLog wrapper 

正如你可能已经注意到我们在规则的否定态度参考,并在上面的代码行我已经添加// GPLog wrapper结束。我认为,结果将是“与NSLog匹配,除非它跟着GPLog”。但它不起作用。上面的行仍然匹配并生成警告。

我错过了有关负向前馈的内容?谢谢。指针非常感谢!

回答

2

棘手的问题之一:问题是你的第二个“。*”可以匹配任何东西,包括“GPLog”。所以负面预测没有效果。

下面是正则表达式的修复:

/.*NSLog(?!.*GPLog).*/ 
+0

谢谢!完美的作品。 – Zac