Svn提交代码,通过PHP_CodeSniffer检测代码规范时,往往由于被检测文件过大,而导致请求过大,svn网络超时而断开。
原因是PHP_CodeSniffer会检索扫描整个文件,找出文件的错误以及警告,这里面就会涉及到循环检测文件的每一行代码,所以当文件超大时,就会导致网络超时断开。
解决方法就是,在循环检测时,加一个计数器,超过计数器则停止继续扫描检测。
具体修改代码如下:
编辑PHP_CodeSniffer目录下的 /CodeSniffer/Reporting.php 文件中的 prepareFileReport 方法,找到foreach循环:
//初始计数器
$limit_search = 0;
// Merge errors and warnings. foreach ($phpcsFile->getErrors() as $line => $lineErrors) { if (is_array($lineErrors) === false) { continue;
} foreach ($lineErrors as $column => $colErrors) {
$newErrors = array(); foreach ($colErrors as $data) {
$newErrors[] = array(
'message' => $data['message'],
'source' => $data['source'],
'severity' => $data['severity'],
'fixable' => $data['fixable'],
'type' => 'ERROR',
);
}//end foreach
$errors[$line][$column] = $newErrors;
}//end foreach ksort($errors[$line]);
//计数器开始
$limit_search ++; if($limit_search >30){
$limit_search = 0; break;
}
//计数器结束
}//end foreach原文地址:http://www.aabiji.com/notes/notes/id/21.html
关键字词:

