主页 > 运维运营 > PHPCodeSniffer >
发布时间:2017-03-16 作者:网络 阅读:361次

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

关键字词: