Save coverage to temporary file
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@927 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
parent
988a29fca1
commit
be9c98afc2
|
@ -1,23 +1,16 @@
|
||||||
<?php
|
<?php
|
||||||
// coverage is used in tests and removed in compilation
|
// coverage is used in tests and removed in compilation
|
||||||
if (extension_loaded("xdebug") && function_exists('mysql_query') && mysql_query('SELECT 1 FROM adminer_test.coverage LIMIT 0')) {
|
if (extension_loaded("xdebug") && file_exists(sys_get_temp_dir() . "/adminer_coverage.ser")) {
|
||||||
function save_coverage() {
|
function save_coverage() {
|
||||||
$coverage = array();
|
$coverage_filename = sys_get_temp_dir() . "/adminer_coverage.ser";
|
||||||
$result = mysql_query("SELECT filename, coverage_serialize FROM adminer_test.coverage");
|
$coverage = unserialize(file_get_contents($coverage_filename));
|
||||||
while ($row = mysql_fetch_assoc($result)) {
|
|
||||||
$coverage[$row["filename"]] = unserialize($row["coverage_serialize"]);
|
|
||||||
}
|
|
||||||
mysql_free_result($result);
|
|
||||||
foreach (xdebug_get_code_coverage() as $filename => $lines) {
|
foreach (xdebug_get_code_coverage() as $filename => $lines) {
|
||||||
foreach ($lines as $l => $val) {
|
foreach ($lines as $l => $val) {
|
||||||
if (!$coverage[$filename][$l] || $val > 0) {
|
if (!$coverage[$filename][$l] || $val > 0) {
|
||||||
$coverage[$filename][$l] = $val;
|
$coverage[$filename][$l] = $val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mysql_query("
|
file_put_contents($coverage_filename, serialize($coverage));
|
||||||
REPLACE adminer_test.coverage (filename, coverage_serialize)
|
|
||||||
VALUES ('" . mysql_real_escape_string($filename) . "', '" . mysql_real_escape_string(serialize($coverage[$filename])) . "')
|
|
||||||
");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
|
xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
|
||||||
|
|
26
coverage.php
26
coverage.php
|
@ -22,28 +22,23 @@ function xhtml_open_tags($s) {
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$coverage_filename = sys_get_temp_dir() . "/adminer_coverage.ser";
|
||||||
if (!extension_loaded("xdebug")) {
|
if (!extension_loaded("xdebug")) {
|
||||||
echo "<p class='error'>Xdebug has to be enabled.</p>\n";
|
echo "<p class='error'>Xdebug has to be enabled.</p>\n";
|
||||||
} elseif ($_GET["coverage"] === "0") {
|
} elseif ($_GET["coverage"] === "0") {
|
||||||
mysql_query("DROP TABLE IF EXISTS adminer_test.coverage");
|
file_put_contents($coverage_filename, serialize(array()));
|
||||||
mysql_query("CREATE TABLE adminer_test.coverage (
|
|
||||||
filename varchar(100) NOT NULL,
|
|
||||||
coverage_serialize mediumtext NOT NULL,
|
|
||||||
PRIMARY KEY (filename)
|
|
||||||
)");
|
|
||||||
echo "<p class='message'>Coverage started.</p>\n";
|
echo "<p class='message'>Coverage started.</p>\n";
|
||||||
} elseif (preg_match('~^(adminer|editor)/(include/)?[-_.a-z0-9]+$~i', $_GET["coverage"])) {
|
} elseif (preg_match('~^(adminer|editor)/(include/)?[-_.a-z0-9]+$~i', $_GET["coverage"])) {
|
||||||
// highlight single file
|
// highlight single file
|
||||||
$filename = $_GET["coverage"];
|
$filename = $_GET["coverage"];
|
||||||
$row = mysql_fetch_row(mysql_query("SELECT coverage_serialize FROM adminer_test.coverage WHERE filename = '" . mysql_real_escape_string(realpath($filename)) . "'"));
|
$coverage = (file_exists($coverage_filename) ? unserialize(file_get_contents($coverage_filename)) : array());
|
||||||
$cov = ($row ? unserialize($row[0]) : array());
|
|
||||||
$file = explode("<br />", highlight_file($filename, true));
|
$file = explode("<br />", highlight_file($filename, true));
|
||||||
unset($prev_color);
|
unset($prev_color);
|
||||||
$s = "";
|
$s = "";
|
||||||
for ($l=0; $l <= count($file); $l++) {
|
for ($l=0; $l <= count($file); $l++) {
|
||||||
$line = $file[$l];
|
$line = $file[$l];
|
||||||
$color = "#C0FFC0"; // tested
|
$color = "#C0FFC0"; // tested
|
||||||
switch ($cov[$l+1]) {
|
switch ($coverage[realpath($filename)][$l+1]) {
|
||||||
case -1: $color = "#FFC0C0"; break; // untested
|
case -1: $color = "#FFC0C0"; break; // untested
|
||||||
case -2: $color = "Silver"; break; // dead code
|
case -2: $color = "Silver"; break; // dead code
|
||||||
case null: $color = ""; break; // not executable
|
case null: $color = ""; break; // not executable
|
||||||
|
@ -64,21 +59,16 @@ if (!extension_loaded("xdebug")) {
|
||||||
$s .= "$line<br />\n";
|
$s .= "$line<br />\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// display list of files
|
if (file_exists($coverage_filename)) {
|
||||||
$result = mysql_query("SELECT filename, coverage_serialize FROM adminer_test.coverage");
|
// display list of files
|
||||||
if ($result) {
|
$coverage = unserialize(file_get_contents($coverage_filename));
|
||||||
echo "<table border='1' cellspacing='0'>\n";
|
echo "<table border='1' cellspacing='0'>\n";
|
||||||
$coverage = array();
|
|
||||||
while ($row = mysql_fetch_assoc($result)) {
|
|
||||||
$coverage[$row["filename"]] = unserialize($row["coverage_serialize"]);
|
|
||||||
}
|
|
||||||
mysql_free_result($result);
|
|
||||||
foreach (array_merge(glob("adminer/*.php"), glob("adminer/include/*.php"), glob("editor/*.php"), glob("editor/include/*.php")) as $filename) {
|
foreach (array_merge(glob("adminer/*.php"), glob("adminer/include/*.php"), glob("editor/*.php"), glob("editor/include/*.php")) as $filename) {
|
||||||
$cov = $coverage[realpath($filename)];
|
$cov = $coverage[realpath($filename)];
|
||||||
$ratio = 0;
|
$ratio = 0;
|
||||||
if (is_array($cov)) {
|
if (is_array($cov)) {
|
||||||
$values = array_count_values($cov);
|
$values = array_count_values($cov);
|
||||||
$ratio = round(100 - 100 * $values[-1] / count($cov));
|
$ratio = round(100 - 100 * $values[-1] / (count($cov) - $values[-2]));
|
||||||
}
|
}
|
||||||
echo "<tr><td align='right' style='background-color: " . ($ratio < 50 ? "Red" : ($ratio < 75 ? "#FFEA20" : "#A7FC9D")) . ";'>$ratio%</td><td><a href='coverage.php?coverage=$filename'>$filename</a></td></tr>\n";
|
echo "<tr><td align='right' style='background-color: " . ($ratio < 50 ? "Red" : ($ratio < 75 ? "#FFEA20" : "#A7FC9D")) . ";'>$ratio%</td><td><a href='coverage.php?coverage=$filename'>$filename</a></td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr><td rowspan="1" colspan="3">Create database</td></tr>
|
<tr><td rowspan="1" colspan="3">Create database</td></tr>
|
||||||
</thead><tbody>
|
</thead><tbody>
|
||||||
|
<tr>
|
||||||
|
<td>open</td>
|
||||||
|
<td>/adminer/coverage.php?coverage=0</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>open</td>
|
<td>open</td>
|
||||||
<td>/adminer/adminer/?lang=en&username=</td>
|
<td>/adminer/adminer/?lang=en&username=</td>
|
||||||
|
|
|
@ -41,11 +41,6 @@
|
||||||
<td>Database has been created.</td>
|
<td>Database has been created.</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td>open</td>
|
|
||||||
<td>/adminer/coverage.php?coverage=0</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</tbody></table>
|
</tbody></table>
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Reference in a new issue