2012-05-11 152 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中的字符串/字符文字之间存在细微的差异),就会遇到麻烦。