2012-05-11 149 views
0

有一個開源的php項目,我想通過減少一些編碼指導違規做出貢獻。因爲對於特定的嗅探大約有5000次違規行爲,我猜想使用一些正則表達式是適當的。正則表達式在逗號前加逗號前的參數(符合編碼準則)

編碼指導規則稱爲「FunctionCallArgumentSpacingNoSpaceAfterComma」。這意味着所有的參數都應該用逗號和空格隔開。

這些示例代碼片段違反此規則:

$this->message('About', 'Warning, very important!', $this->securityRisk().$this->alterPasswordForm(),2); 
$sFiles = t3lib_div::getFilesInDir(PATH_typo3conf,'sql',1,1); 
if (!strstr(implode(',',$sFiles).',', '/database.sql,')) { 

任何人可以幫助創建一個有用的正則表達式來修復這些編碼理念爲指導違規?我嘗試了幾個小時,但不幸的是我無法自己解決這個問題。

+0

你是否想過,如果可以用一個簡單的正則表達式來做到這一點,有人會這樣做? – geekosaur

+0

有沒有一個PHP IDE可以做到這一點? – jahroy

+0

netbeans可以通過自動配置來實現這一點,但據我所知,它不能僅僅做這個特定的自動配置。所以我會搞砸一些其他的東西。 – mostwanted

回答

0

我想嘗試的第一件事是這樣的:

sed 's/,\([^ ]\)/, \1/g' someFile.php 

替換逗號後跟非空格用逗號,空格和字符WAS逗號後。

經過一秒鐘的思考之後,這可能會有點奏效。

但是,必須有許多東西我沒有想到的......

+0

查看第三個例子。 「''''''char'文字會發生什麼? – geekosaur

+0

...有一個! – jahroy

+0

Mabye上面的正則表達式加上一些更多的工作可能最終會完成工作。例如,你可以找到所有的字符文字,並將逗號改變爲暫時的東西......只是一個想法。 – jahroy

0

你不能安全/可靠地與正則表達式做到這一點。甚至不能可靠地跳過某些語言中的過去的字符串文字(考慮Perl的q語法;特別是它如何與它認爲是「包圍」字符的工作)。即使忽略這些,如果在代碼庫中有多種語言(比如PHP,Java和Perl中的字符串/字符文字之間存在細微的差異),就會遇到麻煩。