Файловый менеджер - Редактировать - /var/www/iplanru/data/www/intesco.ru/d59ed/coverager.tar
Назад
common.php 0000666 00000000152 15077521005 0006551 0 ustar 00 <?php require_once "../common/common.php"; include get_language_file("./lang"); $module = "coverager"; index.php 0000666 00000017417 15077521005 0006404 0 ustar 00 <?php include "./common.php"; class XcacheCoverageViewer { var $syntax_higlight = true; var $use_cache = false; var $include_paths = array(); var $exclude_paths = array(); var $charset = 'UTF-8'; var $lang = 'en-us'; var $datadir = null; var $datadir_len = null; var $path = null; var $outpath = null; function XcacheCoverageViewer() { $this->datadir = ini_get('xcache.coveragedump_directory'); global $config; foreach (array('charset', 'include_paths', 'exclude_paths', 'syntax_higlight', 'use_cache', 'datadir', 'lang') as $k) { if (isset($config[$k])) { $this->{$k} = $config[$k]; } } $this->datadir = preg_replace('!/$!', '', $this->datadir); $this->datadir_len = strlen($this->datadir); $this->path = isset($_GET['path']) ? $_GET['path'] : ''; $this->path = preg_replace('!\.{2,}!', '.', $this->path); $qsep = preg_quote(DIRECTORY_SEPARATOR, '!'); $this->path = preg_replace("![\\\\$qsep]{2,}!", DIRECTORY_SEPARATOR, $this->path); $this->path = preg_replace("!$qsep$!", '', $this->path); if ($this->path == '/') { $this->path = ''; } $this->outpath = $this->datadir . $this->path; } function main() { $path = $this->path; if (is_dir($this->outpath)) { $action = 'dir'; $prefix_len = strlen($path) + 1; $dirinfo = $this->loadDir($this->outpath); if (!$this->use_cache) { ksort($dirinfo['subdirs']); ksort($dirinfo['files']); } } else if (is_file($this->outpath . ".pcov")) { $action = 'file'; $dir = dirname($path); $filename = basename($path); $fileinfo = $this->loadCov($this->outpath . ".pcov"); $lines = file($path); // fix the tabs not in the middle foreach ($lines as $l => $line) { if (preg_match('!^(\\t*)([^\\t]+\\t.*)$!s', $line, $m)) { $lines[$l] = $m[1]; $chunks = explode("\t", $m[2]); for ($i = 0, $c = count($chunks) - 1; $i < $c; $i ++) { $lines[$l] .= $chunks[$i] . str_repeat(" ", 4 - (strlen($chunks[$i]) % 4)); } $lines[$l] .= $chunks[$c]; } } if ($this->syntax_higlight) { $source = implode('', $lines); ob_start(); highlight_string($source); $lines = str_replace("\n", "", ob_get_clean()); $lines = str_replace('<code>', '', $lines); $lines = str_replace('</code>', '', $lines); $lines = preg_replace('(^<span[^>]*>|</span>$)', '', $lines); $lines = explode('<br />', $lines); $last = array_pop($lines); $lines[count($lines) - 1] .= $last; $filecov = sprint_cov($fileinfo['cov'], $lines, false); unset($source); } else { $filecov = sprint_cov($fileinfo['cov'], $lines); } list($tplfile, $tpllines, $tplcov) = $this->loadTplCov($fileinfo['cov'], substr($this->outpath, $this->datadir_len)); if ($tplfile) { $tplcov = sprint_cov($tplcov, $tpllines); unset($tpllines); } } else if (!$this->datadir) { $action = 'error'; $error = 'require `xcache.coveragedump_directory` in ini or `$datadir` in config to be set'; } else { $action = 'error'; $error = "no data"; } global $config; include "coverager.tpl.php"; } function loadDir($outdir, $addtodo = null) { if ($this->use_cache) { $cachefile = $outdir . "/.pcovcache"; if (file_exists($cachefile)) { return unserialize(file_get_contents($cachefile)); } } $srcdir = substr($outdir, $this->datadir_len); $total = $hits = $todos = 0; $files = array(); $subdirs = array(); if (!isset($addtodo)) { if ($this->include_paths) { foreach ($this->include_paths as $p) { if (strncmp($p, $srcdir, strlen($p)) == 0) { $addtodo = true; break; } } } } if ($addtodo) { if ($this->exclude_paths) { foreach ($this->exclude_paths as $p) { if (strncmp($p, $srcdir, strlen($p)) == 0) { $addtodo = false; break; } } } } foreach (glob($outdir . "/*") as $outfile) { if (is_dir($outfile)) { $info = $this->loadDir($outfile, $addtodo); $srcfile = substr($outfile, $this->datadir_len); $subdirs += $info['subdirs']; $total += $info['total']; $hits += $info['hits']; if ($addtodo === true) { $todos += $info['todos']; } unset($info['subdirs']); $subdirs[$srcfile] = $info; } else if (substr($outfile, -5) == ".pcov") { // pass $info = $this->loadFile($outfile); $total += $info['total']; $hits += $info['hits']; $srcfile = substr($outfile, $this->datadir_len, -5); $files[$srcfile] = $info; } else { continue; } } if ($addtodo === true) { foreach (glob($srcdir . "/*") as $srcfile) { if (!isset($files[$srcfile]) && is_file($srcfile)) { $files[$srcfile] = array('total' => 0, 'hits' => 0); $todos ++; } else if (!isset($subdirs[$srcfile]) && is_dir($srcfile)) { $subdirs[$srcfile] = array('total' => 0, 'hits' => 0, 'todos' => 1, 'files' => 0, 'subdirs' => array()); $todos ++; } } } if ($this->use_cache) { ksort($subdirs); ksort($files); } $info = array( 'total' => $total, 'hits' => $hits, 'todos' => $todos, 'files' => $files, 'subdirs' => $subdirs, ); if ($this->use_cache) { $fp = fopen($cachefile, "wb"); fwrite($fp, serialize($info)); fclose($fp); } return $info; } function loadFile($file) { if ($this->use_cache) { $cachefile = $file . "cache"; if (file_exists($cachefile)) { return unserialize(file_get_contents($cachefile)); } } $info = $this->loadCov($file); //, $lines); unset($info['cov']); if ($this->use_cache) { $fp = fopen($cachefile, "wb"); fwrite($fp, serialize($info)); fclose($fp); } return $info; } function loadCov($file)//, $lines) { $total = $hits = 0; $cov = xcache_coverager_decode(file_get_contents($file)); return array('total' => count($cov) - 1, 'hits' => $cov[0], 'cov' => $cov); } function loadTplCov($cov, $ctpl) { $tplinfofile = $ctpl . '.phpinfo'; if (!file_exists($tplinfofile)) { return; } $tplinfo = unserialize(file_get_contents($tplinfofile)); if (!isset($tplinfo['sourceFile'])) { return; } $tplfile = $tplinfo['sourceFile']; if (!isset($tplinfo['lineMap']) || !count($tplinfo['lineMap'])) { return; } $tpllines = file($tplfile); $dline = 0; $sline = 0; $tplcov = array(); foreach ($cov as $line => $times) { // find nearest line while ($dline < $line) { if ((list($dline, $sline) = each($tplinfo['lineMap'])) === false) { break 2; } } $tplcov[$sline] = $times; } return array($tplfile, $tpllines, $tplcov); } } function sprint_cov($cov, $lines, $encode = true) { $lastattr = null; foreach ($lines as $l => $line) { $offs = $l + 1; if ($encode) { $line = str_replace("\n", "", htmlspecialchars($line)); } else if ($line !== "") { if (substr($line, 0, 7) == '</span>') { $lastattr = null; $line = substr($line, 7); } else if (isset($lastattr)) { $line = $lastattr . $line; } if (preg_match('!(<span[^>]+>|</span>)[^<>]*$!', $line, $m)) { if ($m[1] == '</span>') { $lastattr = null; } else { $line .= '</span>'; $lastattr = $m[1]; } } } if (isset($cov[$offs])) { $lines[$l] = sprintf("<li class=\"line%sCov\"><pre class=\"code\"> %s\t%s\n</pre></li>" , $cov[$offs] ? '' : 'No' , $cov[$offs] , $line); } else { $lines[$l] = "<li><pre class=\"code\">\t$line\n</pre></li>"; } } return implode('', $lines); } if (!function_exists('xcache_coverager_decode')) { function xcache_coverager_decode($bytes) { $bytes = unpack('l*', $bytes); $i = 1; if ($bytes[$i ++] != 0x564f4350) { return null; } $end = count($bytes); $cov = array(); for (/* empty*/; $i <= $end; $i += 2) { $hits = $bytes[$i + 1]; $cov[$bytes[$i]] = $hits <= 0 ? 0 : $hits; } return $cov; } } $app = new XcacheCoverageViewer(); $app->main(); ?> coverager.tpl.php 0000666 00000011336 15077521005 0010042 0 ustar 00 <?php include "../common/header.tpl.php"; ?> <?php function calc_percent($info, &$percent, &$class) { if (!$info['total']) { $percent = 0; } else { $percent = (int) ($info['hits'] / $info['total'] * 100); } if ($percent < 15) { $class = "Lo"; } else if ($percent < 50) { $class = "Med"; } else { $class = "Hi"; } } function bar($percent, $class) { return <<<EOS <div class="coverBarOutline"> <div class="coverBar{$class}" style="width:{$percent}%"></div> <div class="coverPer{$class}">{$percent}</div> </div> EOS; } function dir_head() { global $cycle; $cycle = new Cycle('class="col1"', 'class="col2"'); $l_dir = _T("Directory"); $l_per = _T("Percent"); $l_hit = _T("Hits"); $l_lns = _T("Lines"); $l_tds = _T("TODO"); return <<<EOS <table cellpadding="2" cellspacing="0" border="0" class="cycles"> <tr> <th>{$l_dir}</th><th>{$l_per}</th><th>{$l_hit}</th><th>{$l_lns}</th><th>{$l_tds}</th> </tr> EOS; } function dir_row($info, $srcdir) { global $cycle; if ($info['files'] || $info['todos']) { $srcdir .= DIRECTORY_SEPARATOR; $c = $cycle->next(); $srcdir_html = htmlspecialchars($srcdir); $todos = number_format($info['todos']); if ($info['total']) { $srcdir_url = urlencode($srcdir); $hits = number_format($info['hits']); $total = number_format($info['total']); calc_percent($info, $percent, $class); $bar = bar($percent, $class); return <<<EOS <tr $c> <td class="coverFile"><a href="?path={$srcdir_url}">{$srcdir_html}</a></td> <td class="coverBar">$bar</td> <td class="coverNum{$class}">{$hits}</td> <td class="coverNum{$class}">{$total}</td> <td class="coverNum{$class}">{$todos}</td> </tr> EOS; } else { return <<<EOS <tr $c> <td class="coverFile">{$srcdir_html}</td> <td class="coverBar"></td> <td class="coverNumLo"></td> <td class="coverNumLo"></td> <td class="coverNumLo">{$todos}</td> </tr> EOS; } } } function dir_foot() { return <<<EOS </table> EOS; } function file_head() { global $cycle; $cycle = new Cycle('class="col1"', 'class="col2"'); $l_fil = _T("File"); $l_per = _T("Percent"); $l_hit = _T("Hits"); $l_lns = _T("Lines"); return <<<EOS <table cellpadding="2" cellspacing="0" border="0" class="cycles"> <tr> <th>{$l_fil}</th><th>{$l_per}</th><th>{$l_hit}</th><th>{$l_lns}</th> </tr> EOS; } function file_row($info, $srcfile) { global $cycle; $c = $cycle->next(); $srcfile_html = htmlspecialchars($srcfile); $total = number_format($info['total']); if ($info['total']) { $hits = number_format($info['hits']); $srcfile_url = urlencode($srcfile); calc_percent($info, $percent, $class); $bar = bar($percent, $class); return <<<EOS <tr $c> <td class="coverFile"><a href="?path={$srcfile_url}">{$srcfile_html}</a></td> <td class="coverBar">$bar</td> <td class="coverNum{$class}">{$hits}</td> <td class="coverNum{$class}">{$total}</td> </tr> EOS; } else { return <<<EOS <tr $c> <td class="coverFile">{$srcfile_html}</a></td> <td class="coverBar"></td> <td class="coverNumLo"></td> <td class="coverNumLo">{$total}</td> </tr> EOS; } } function file_foot() { return <<<EOS </table> EOS; } $l_root = _T("root"); if ($action == 'dir') { if (function_exists('ob_filter_path_nicer')) { ob_start('ob_filter_path_nicer'); } $path_html = htmlspecialchars($path); echo <<<EOS <div> <a href="?">$l_root</a> $path<br /> </div> EOS; echo dir_head($dirinfo); echo dir_row($dirinfo, $path); echo dir_foot($dirinfo); if ($dirinfo['subdirs']) { echo dir_head(); foreach ($dirinfo['subdirs'] as $srcdir => $info) { echo dir_row($info, $srcdir); } echo dir_foot(); } if ($dirinfo['files']) { echo file_head(); foreach ($dirinfo['files'] as $srcfile => $info) { echo file_row($info, $srcfile); } echo file_foot(); } } else if ($action == 'file') { if (function_exists('ob_filter_path_nicer')) { ob_start('ob_filter_path_nicer'); } $dir_url = urlencode($dir); $dir_html = htmlspecialchars($dir); echo <<<EOS <div> <a href="?">$l_root</a> <a href="?path={$dir_url}">{$dir_html}</a>/<strong>{$filename}</strong><br /> </div> EOS; echo file_head(); echo file_row($fileinfo, $path); echo file_foot(); if ($tplfile) { $tplfile_html = htmlspecialchars($tplfile); echo <<<EOS <div> <a href="#tpl">{$tplfile_html}</a><br /> </div> EOS; } if (function_exists('ob_filter_path_nicer')) { ob_end_flush(); } echo <<<EOS <div class="code"> <ol>{$filecov}</ol> </div> EOS; if ($tplfile) { echo <<<EOS <a name="tpl">{$tplfile}</a> <div class="code"> <ol>{$tplcov}</ol> </div> EOS; } } else { $error_html = htmlspecialchars($error); echo <<<EOS <span class="error">{$error_html}</span> EOS; } ?> <?php include "../common/footer.tpl.php"; ?> config.default.php 0000666 00000000553 15077521005 0010156 0 ustar 00 <?php // [default config] // DO NOT rename/delete/modify this file which will be overwritten when upgrade // See config.example.php instead // $config['include_paths'] = array(); // $config['exclude_paths'] = array(); $config['syntax_higlight'] = true; $config['use_cache'] = false; // $config['datadir'] is default to ini_get("xcache.coveragedump_directory") config.example.php 0000666 00000001221 15077521005 0010156 0 ustar 00 <?php // DO NOT rename/delete/modify example file which will be overwritten when upgrade // How To Custom Config: // 1. copy config.example.php config.php; edit config.php // 2. upgrading your config.php when config.example.php were upgraded // XCache will load // 1. ../config.default.php // 2. ./config.default.php // 3. ../config.php // 4. ./config.php // $config['include_paths'] = array("/www/my-php-project/"); // $config['exclude_paths'] = array("/www/my-php-project/tmp/"); $config['syntax_higlight'] = true; $config['use_cache'] = false; //// $config['datadir'] is default to ini_get("xcache.coveragedump_directory") // $config['datadir'] = ''; lang/en.php 0000666 00000000100 15077521005 0006575 0 ustar 00 <?php // auto generated, do not modify $strings += array( ); lang/en.po 0000666 00000001156 15077521005 0006440 0 ustar 00 msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-07-08 14:41+0800\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: coverager.tpl.php:37 msgid "Directory" msgstr "" #: coverager.tpl.php:38 coverager.tpl.php:100 msgid "Percent" msgstr "" #: coverager.tpl.php:39 coverager.tpl.php:101 msgid "Hits" msgstr "" #: coverager.tpl.php:40 coverager.tpl.php:102 msgid "Lines" msgstr "" #: coverager.tpl.php:41 msgid "TODO" msgstr "" #: coverager.tpl.php:99 msgid "File" msgstr "" #: coverager.tpl.php:151 msgid "root" msgstr "" lang/zh-simplified.po 0000666 00000001241 15077521005 0010575 0 ustar 00 msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-07-08 14:41+0800\n" "Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: coverager.tpl.php:37 msgid "Directory" msgstr "目录" #: coverager.tpl.php:38 coverager.tpl.php:100 msgid "Percent" msgstr "覆盖率" #: coverager.tpl.php:39 coverager.tpl.php:101 msgid "Hits" msgstr "命中" #: coverager.tpl.php:40 coverager.tpl.php:102 msgid "Lines" msgstr "行数" #: coverager.tpl.php:41 msgid "TODO" msgstr "闲置文件" #: coverager.tpl.php:99 msgid "File" msgstr "文件" #: coverager.tpl.php:151 msgid "root" msgstr "开始" lang/zh-traditional.po 0000666 00000001161 15077521005 0010763 0 ustar 00 msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-07-08 14:41+0800\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: coverager.tpl.php:37 msgid "Directory" msgstr "" #: coverager.tpl.php:38 coverager.tpl.php:100 msgid "Percent" msgstr "" #: coverager.tpl.php:39 coverager.tpl.php:101 msgid "Hits" msgstr "" #: coverager.tpl.php:40 coverager.tpl.php:102 msgid "Lines" msgstr "" #: coverager.tpl.php:41 msgid "TODO" msgstr "" #: coverager.tpl.php:99 msgid "File" msgstr "" #: coverager.tpl.php:151 msgid "root" msgstr "" lang/zh-simplified.php 0000666 00000000372 15077521005 0010752 0 ustar 00 <?php // auto generated, do not modify $strings += array( "Directory" => "目录", "Percent" => "覆盖率", "Hits" => "命中", "Lines" => "行数", "TODO" => "闲置文件", "File" => "文件", "root" => "开始", ); lang/zh-traditional.php 0000666 00000000100 15077521005 0011124 0 ustar 00 <?php // auto generated, do not modify $strings += array( ); coverager.css 0000666 00000002327 15077521005 0007245 0 ustar 00 .coverFile { text-align: left; color: gray; padding-left: 10px; padding-right: 10px; } .coverBar { padding-left: 10px; padding-right: 10px; } .coverBarOutline { border: 1px solid black; background-color: #ffffff; width: 100px; font-size: 11px; line-height: 11px; font-family: tahoma; position: relative; } .coverPerHi, .coverPerMed, .coverPerLo { text-align: center; font-weight: bold; left: 0px; top: 2px; position: absolute; width: 100%; } .coverBarHi, .coverBarMed, .coverBarLo { left: 1px; top: 1px; height: 14px; } .coverBarHi { background-color: #A7FC9D; } .coverBarMed { background-color: #FFEA20; } .coverBarLo { background-color: #FF0000; } .coverNumHi, .coverNumMed, .coverNumLo { text-align: right; padding-left: 10px; padding-right: 10px; } .coverNumHi { /*background-color: #A7FC9D;*/ } .coverNumMed { /*background-color: #FFEA20;*/ } .coverNumLo { background-color: #FF0000; } .lineCov { background-color: #F0F0F0; } .lineNoCov { background-color: #ffe0e0; } div.code { border: 1px solid gray; font-size: 12px; } pre.code { font-family: monospace; font-size: 12px; white-space: pre; padding: 0; margin: 0; } .error { color: red; }
| ver. 1.4 |
Github
|
.
| PHP 5.4.45-1~dotdeb+6.1 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка