Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit e74dc90
Showing
52 changed files
with
8,893 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
/vendor | ||
artifact.zip | ||
test.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Washing machine | ||
|
||
**Work in progress** | ||
|
||
The *washing machine* is a tool that helps you writing cleaner code by integrating PHPUnit with Gitlab CI. | ||
|
||
As a result, when you perform a merge request in Gitlab, the washing machine will add meaningful information about your code quality. | ||
|
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,298 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<title>Dashboard for /home/david/projects/washing-machine/src/Clover/Analysis</title> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<link href="../../css/bootstrap.min.css" rel="stylesheet"> | ||
<link href="../../css/nv.d3.min.css" rel="stylesheet"> | ||
<link href="../../css/style.css" rel="stylesheet"> | ||
<!--[if lt IE 9]> | ||
<script src="../../js/html5shiv.min.js"></script> | ||
<script src="../../js/respond.min.js"></script> | ||
<![endif]--> | ||
</head> | ||
<body> | ||
<header> | ||
<div class="container"> | ||
<div class="row"> | ||
<div class="col-md-12"> | ||
<ol class="breadcrumb"> | ||
<li><a href="../../index.html">/home/david/projects/washing-machine/src</a></li> | ||
<li><a href="../index.html">Clover</a></li> | ||
<li><a href="index.html">Analysis</a></li> | ||
<li class="active">(Dashboard)</li> | ||
|
||
</ol> | ||
</div> | ||
</div> | ||
</div> | ||
</header> | ||
<div class="container"> | ||
<div class="row"> | ||
<div class="col-md-12"> | ||
<h2>Classes</h2> | ||
</div> | ||
</div> | ||
<div class="row"> | ||
<div class="col-md-6"> | ||
<h3>Coverage Distribution</h3> | ||
<div id="classCoverageDistribution" style="height: 300px;"> | ||
<svg></svg> | ||
</div> | ||
</div> | ||
<div class="col-md-6"> | ||
<h3>Complexity</h3> | ||
<div id="classComplexity" style="height: 300px;"> | ||
<svg></svg> | ||
</div> | ||
</div> | ||
</div> | ||
<div class="row"> | ||
<div class="col-md-6"> | ||
<h3>Insufficient Coverage</h3> | ||
<div class="scrollbox"> | ||
<table class="table"> | ||
<thead> | ||
<tr> | ||
<th>Class</th> | ||
<th class="text-right">Coverage</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr><td><a href="Method.php.html#9">Method</a></td><td class="text-right">70%</td></tr> | ||
<tr><td><a href="Difference.php.html#9">Difference</a></td><td class="text-right">71%</td></tr> | ||
|
||
</tbody> | ||
</table> | ||
</div> | ||
</div> | ||
<div class="col-md-6"> | ||
<h3>Project Risks</h3> | ||
<div class="scrollbox"> | ||
<table class="table"> | ||
<thead> | ||
<tr> | ||
<th>Class</th> | ||
<th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
|
||
</tbody> | ||
</table> | ||
</div> | ||
</div> | ||
</div> | ||
<div class="row"> | ||
<div class="col-md-12"> | ||
<h2>Methods</h2> | ||
</div> | ||
</div> | ||
<div class="row"> | ||
<div class="col-md-6"> | ||
<h3>Coverage Distribution</h3> | ||
<div id="methodCoverageDistribution" style="height: 300px;"> | ||
<svg></svg> | ||
</div> | ||
</div> | ||
<div class="col-md-6"> | ||
<h3>Complexity</h3> | ||
<div id="methodComplexity" style="height: 300px;"> | ||
<svg></svg> | ||
</div> | ||
</div> | ||
</div> | ||
<div class="row"> | ||
<div class="col-md-6"> | ||
<h3>Insufficient Coverage</h3> | ||
<div class="scrollbox"> | ||
<table class="table"> | ||
<thead> | ||
<tr> | ||
<th>Method</th> | ||
<th class="text-right">Coverage</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr><td><a href="Difference.php.html#27"><abbr title="Difference::getMethodFullName">getMethodFullName</abbr></a></td><td class="text-right">0%</td></tr> | ||
<tr><td><a href="Difference.php.html#37"><abbr title="Difference::isNew">isNew</abbr></a></td><td class="text-right">0%</td></tr> | ||
<tr><td><a href="Method.php.html#74"><abbr title="Method::getClassName">getClassName</abbr></a></td><td class="text-right">0%</td></tr> | ||
<tr><td><a href="Method.php.html#82"><abbr title="Method::getNamespace">getNamespace</abbr></a></td><td class="text-right">0%</td></tr> | ||
<tr><td><a href="Method.php.html#90"><abbr title="Method::getVisibility">getVisibility</abbr></a></td><td class="text-right">0%</td></tr> | ||
<tr><td><a href="Method.php.html#98"><abbr title="Method::getComplexity">getComplexity</abbr></a></td><td class="text-right">0%</td></tr> | ||
<tr><td><a href="Method.php.html#114"><abbr title="Method::getCount">getCount</abbr></a></td><td class="text-right">0%</td></tr> | ||
<tr><td><a href="Method.php.html#135"><abbr title="Method::getLine">getLine</abbr></a></td><td class="text-right">0%</td></tr> | ||
|
||
</tbody> | ||
</table> | ||
</div> | ||
</div> | ||
<div class="col-md-6"> | ||
<h3>Project Risks</h3> | ||
<div class="scrollbox"> | ||
<table class="table"> | ||
<thead> | ||
<tr> | ||
<th>Method</th> | ||
<th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
|
||
</tbody> | ||
</table> | ||
</div> | ||
</div> | ||
</div> | ||
<footer> | ||
<hr/> | ||
<p> | ||
<small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage 4.0.5</a> using <a href="https://secure.php.net/" target="_top">PHP 7.0.13-0ubuntu0.16.10.1</a> with <a href="https://xdebug.org/">Xdebug 2.4.0</a> and <a href="https://phpunit.de/">PHPUnit 5.7.9</a> at Thu Feb 9 12:23:09 UTC 2017.</small> | ||
</p> | ||
</footer> | ||
</div> | ||
<script src="../../js/jquery.min.js" type="text/javascript"></script> | ||
<script src="../../js/bootstrap.min.js" type="text/javascript"></script> | ||
<script src="../../js/holder.min.js" type="text/javascript"></script> | ||
<script src="../../js/d3.min.js" type="text/javascript"></script> | ||
<script src="../../js/nv.d3.min.js" type="text/javascript"></script> | ||
<script type="text/javascript"> | ||
$(document).ready(function() { | ||
nv.addGraph(function() { | ||
var chart = nv.models.multiBarChart(); | ||
chart.tooltips(false) | ||
.showControls(false) | ||
.showLegend(false) | ||
.reduceXTicks(false) | ||
.staggerLabels(true) | ||
.yAxis.tickFormat(d3.format('d')); | ||
|
||
d3.select('#classCoverageDistribution svg') | ||
.datum(getCoverageDistributionData([0,0,0,0,0,0,0,0,2,0,0,0], "Class Coverage")) | ||
.transition().duration(500).call(chart); | ||
|
||
nv.utils.windowResize(chart.update); | ||
|
||
return chart; | ||
}); | ||
|
||
nv.addGraph(function() { | ||
var chart = nv.models.multiBarChart(); | ||
chart.tooltips(false) | ||
.showControls(false) | ||
.showLegend(false) | ||
.reduceXTicks(false) | ||
.staggerLabels(true) | ||
.yAxis.tickFormat(d3.format('d')); | ||
|
||
d3.select('#methodCoverageDistribution svg') | ||
.datum(getCoverageDistributionData([8,0,0,0,0,0,0,0,0,0,0,8], "Method Coverage")) | ||
.transition().duration(500).call(chart); | ||
|
||
nv.utils.windowResize(chart.update); | ||
|
||
return chart; | ||
}); | ||
|
||
function getCoverageDistributionData(data, label) { | ||
var labels = [ | ||
'0%', | ||
'0-10%', | ||
'10-20%', | ||
'20-30%', | ||
'30-40%', | ||
'40-50%', | ||
'50-60%', | ||
'60-70%', | ||
'70-80%', | ||
'80-90%', | ||
'90-100%', | ||
'100%' | ||
]; | ||
var values = []; | ||
$.each(labels, function(key) { | ||
values.push({x: labels[key], y: data[key]}); | ||
}); | ||
|
||
return [ | ||
{ | ||
key: label, | ||
values: values, | ||
color: "#4572A7" | ||
} | ||
]; | ||
} | ||
nv.addGraph(function() { | ||
var chart = nv.models.scatterChart() | ||
.showDistX(true) | ||
.showDistY(true) | ||
.showLegend(false) | ||
.forceX([0, 100]); | ||
chart.tooltipContent(function(graph) { | ||
return '<p>' + graph.point.class + '</p>'; | ||
}); | ||
|
||
chart.xAxis.axisLabel('Code Coverage (in percent)'); | ||
chart.yAxis.axisLabel('Cyclomatic Complexity'); | ||
|
||
d3.select('#classComplexity svg') | ||
.datum(getComplexityData([[71.428571428571,5,"<a href=\"Difference.php.html#9\">Difference<\/a>"],[70,11,"<a href=\"Method.php.html#9\">Method<\/a>"]], 'Class Complexity')) | ||
.transition() | ||
.duration(500) | ||
.call(chart); | ||
|
||
nv.utils.windowResize(chart.update); | ||
|
||
return chart; | ||
}); | ||
|
||
nv.addGraph(function() { | ||
var chart = nv.models.scatterChart() | ||
.showDistX(true) | ||
.showDistY(true) | ||
.showLegend(false) | ||
.forceX([0, 100]); | ||
chart.tooltipContent(function(graph) { | ||
return '<p>' + graph.point.class + '</p>'; | ||
}); | ||
|
||
chart.xAxis.axisLabel('Code Coverage (in percent)'); | ||
chart.yAxis.axisLabel('Method Complexity'); | ||
|
||
d3.select('#methodComplexity svg') | ||
.datum(getComplexityData([[100,1,"<a href=\"Difference.php.html#21\">Difference::__construct<\/a>"],[0,1,"<a href=\"Difference.php.html#27\">Difference::getMethodFullName<\/a>"],[100,1,"<a href=\"Difference.php.html#32\">Difference::getCrapScore<\/a>"],[0,1,"<a href=\"Difference.php.html#37\">Difference::isNew<\/a>"],[100,1,"<a href=\"Difference.php.html#42\">Difference::getCrapDifference<\/a>"],[100,1,"<a href=\"Method.php.html#49\">Method::__construct<\/a>"],[100,1,"<a href=\"Method.php.html#66\">Method::getMethodName<\/a>"],[0,1,"<a href=\"Method.php.html#74\">Method::getClassName<\/a>"],[0,1,"<a href=\"Method.php.html#82\">Method::getNamespace<\/a>"],[0,1,"<a href=\"Method.php.html#90\">Method::getVisibility<\/a>"],[0,1,"<a href=\"Method.php.html#98\">Method::getComplexity<\/a>"],[100,1,"<a href=\"Method.php.html#106\">Method::getCrap<\/a>"],[0,1,"<a href=\"Method.php.html#114\">Method::getCount<\/a>"],[100,1,"<a href=\"Method.php.html#119\">Method::getFullName<\/a>"],[100,1,"<a href=\"Method.php.html#127\">Method::getFile<\/a>"],[0,1,"<a href=\"Method.php.html#135\">Method::getLine<\/a>"]], 'Method Complexity')) | ||
.transition() | ||
.duration(500) | ||
.call(chart); | ||
|
||
nv.utils.windowResize(chart.update); | ||
|
||
return chart; | ||
}); | ||
|
||
function getComplexityData(data, label) { | ||
var values = []; | ||
$.each(data, function(key) { | ||
var value = Math.round(data[key][0]*100) / 100; | ||
values.push({ | ||
x: value, | ||
y: data[key][1], | ||
class: data[key][2], | ||
size: 0.05, | ||
shape: 'diamond' | ||
}); | ||
}); | ||
|
||
return [ | ||
{ | ||
key: label, | ||
values: values, | ||
color: "#4572A7" | ||
} | ||
]; | ||
} | ||
}); | ||
</script> | ||
</body> | ||
</html> |
Oops, something went wrong.