HtmlReporter   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 35
c 1
b 0
f 0
dl 0
loc 67
ccs 0
cts 44
cp 0
rs 10
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getName() 0 3 1
A generate() 0 47 5
1
<?php
2
/**
3
 * This file is part of the Code-Insight library.
4
 * For the full copyright and license information, please view
5
 * the LICENSE file that was distributed with this source code.
6
 *
7
 * @copyright Alexander Obuhovich <[email protected]>
8
 * @link      https://github.com/console-helpers/code-insight
9
 */
10
11
namespace ConsoleHelpers\CodeInsight\BackwardsCompatibility\Reporter;
12
13
14
class HtmlReporter extends AbstractReporter
15
{
16
17
	/**
18
	 * Returns reporter name.
19
	 *
20
	 * @return string
21
	 */
22
	public function getName()
23
	{
24
		return 'html';
25
	}
26
27
	/**
28
	 * Generates report.
29
	 *
30
	 * @param array $bc_breaks BC breaks.
31
	 *
32
	 * @return string
33
	 */
34
	public function generate(array $bc_breaks)
35
	{
36
		if ( !$bc_breaks ) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $bc_breaks of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
37
			return '<h1>No backwards compatibility breaks detected.</h1>';
38
		}
39
40
		$ret = <<<HTML
41
<html>
42
	<head>
43
		<style type="text/css">
44
			ol.bc-report { font-family: monospace; }
45
			ol.bc-report li { padding: 4px; margin-bottom: 8px; }
46
			ol.bc-report li:nth-child(odd) { background-color: lightgray; }
47
		</style>
48
	</head>
49
	<body>
50
		<h1>Backward compatibility breaks:</h1>
51
HTML;
52
53
		foreach ( $this->groupByType($bc_breaks) as $bc_break => $incidents ) {
54
			$ret .= PHP_EOL;
55
56
			$bc_break = ucwords(str_replace(array('.', '_'), ' ', $bc_break));
57
			$ret .= "\t\t" . '<h2>' . $bc_break . ' (' . count($incidents) . ')</h2>' . PHP_EOL;
58
			$ret .= "\t\t" . '<ol class="bc-report">' . PHP_EOL;
59
60
			foreach ( $this->sortByElement($incidents) as $incident_data ) {
61
				if ( array_key_exists('old', $incident_data) ) {
62
					$ret .= "\t\t\t" . '<li>' . PHP_EOL;
63
					$ret .= "\t\t\t\t" . '<strong>' . $incident_data['element'] . '</strong><br/>' . PHP_EOL;
64
					$ret .= "\t\t\t\t" . 'OLD: ' . $incident_data['old'] . '<br/>' . PHP_EOL;
65
					$ret .= "\t\t\t\t" . 'NEW: ' . $incident_data['new'] . '<br/>' . PHP_EOL;
66
					$ret .= "\t\t\t" . '</li>' . PHP_EOL;
67
				}
68
				else {
69
					$ret .= "\t\t\t" . '<li>' . $incident_data['element'] . '</li>' . PHP_EOL;
70
				}
71
			}
72
73
			$ret .= "\t\t" . '</ol>';
74
		}
75
76
		$ret .= PHP_EOL;
77
		$ret .= "\t" . '</body>' . PHP_EOL;
78
		$ret .= '</html>' . PHP_EOL;
79
80
		return $ret;
81
	}
82
83
}
84