2015-05-26 30 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