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
关键字词: