GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — develop ( ebb7bf...0a5ff4 )
by Chris
02:41 queued 11s
created

PHP_CodeSniffer_DocGenerators_Text::printCodeComparisonBlock()   F

Complexity

Conditions 17
Paths 2500

Size

Total Lines 125
Code Lines 83

Duplication

Lines 76
Ratio 60.8 %

Importance

Changes 0
Metric Value
cc 17
eloc 83
nc 2500
nop 1
dl 76
loc 125
rs 2
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * A doc generator that outputs text-based documentation.
4
 *
5
 * PHP version 5
6
 *
7
 * @category  PHP
8
 * @package   PHP_CodeSniffer
9
 * @author    Greg Sherwood <[email protected]>
10
 * @author    Marc McIntyre <[email protected]>
11
 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
12
 * @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
13
 * @link      http://pear.php.net/package/PHP_CodeSniffer
14
 */
15
16
if (class_exists('PHP_CodeSniffer_DocGenerators_Generator', true) === false) {
17
    throw new PHP_CodeSniffer_Exception('Class PHP_CodeSniffer_DocGenerators_Generator not found');
18
}
19
20
/**
21
 * A doc generator that outputs text-based documentation.
22
 *
23
 * Output is designed to be displayed in a terminal and is wrapped to 100 characters.
24
 *
25
 * @category  PHP
26
 * @package   PHP_CodeSniffer
27
 * @author    Greg Sherwood <[email protected]>
28
 * @author    Marc McIntyre <[email protected]>
29
 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600)
30
 * @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
31
 * @version   Release: @package_version@
32
 * @link      http://pear.php.net/package/PHP_CodeSniffer
33
 */
34
class PHP_CodeSniffer_DocGenerators_Text extends PHP_CodeSniffer_DocGenerators_Generator
35
{
36
37
38
    /**
39
     * Process the documentation for a single sniff.
40
     *
41
     * @param DOMNode $doc The DOMNode object for the sniff.
42
     *                     It represents the "documentation" tag in the XML
43
     *                     standard file.
44
     *
45
     * @return void
46
     */
47
    public function processSniff(DOMNode $doc)
48
    {
49
        $this->printTitle($doc);
50
51
        foreach ($doc->childNodes as $node) {
52
            if ($node->nodeName === 'standard') {
53
                $this->printTextBlock($node);
54
            } else if ($node->nodeName === 'code_comparison') {
55
                $this->printCodeComparisonBlock($node);
56
            }
57
        }
58
59
    }//end processSniff()
60
61
62
    /**
63
     * Prints the title area for a single sniff.
64
     *
65
     * @param DOMNode $doc The DOMNode object for the sniff.
66
     *                     It represents the "documentation" tag in the XML
67
     *                     standard file.
68
     *
69
     * @return void
70
     */
71
    protected function printTitle(DOMNode $doc)
72
    {
73
        $title    = $this->getTitle($doc);
74
        $standard = $this->getStandard();
75
76
        echo PHP_EOL;
77
        echo str_repeat('-', (strlen("$standard CODING STANDARD: $title") + 4));
78
        echo strtoupper(PHP_EOL."| $standard CODING STANDARD: $title |".PHP_EOL);
79
        echo str_repeat('-', (strlen("$standard CODING STANDARD: $title") + 4));
80
        echo PHP_EOL.PHP_EOL;
81
82
    }//end printTitle()
83
84
85
    /**
86
     * Print a text block found in a standard.
87
     *
88
     * @param DOMNode $node The DOMNode object for the text block.
89
     *
90
     * @return void
91
     */
92
    protected function printTextBlock($node)
93
    {
94
        $text = trim($node->nodeValue);
95
        $text = str_replace('<em>', '*', $text);
96
        $text = str_replace('</em>', '*', $text);
97
98
        $lines    = array();
99
        $tempLine = '';
100
        $words    = explode(' ', $text);
101
102
        foreach ($words as $word) {
103
            if (strlen($tempLine.$word) >= 99) {
104
                if (strlen($tempLine.$word) === 99) {
105
                    // Adding the extra space will push us to the edge
106
                    // so we are done.
107
                    $lines[]  = $tempLine.$word;
108
                    $tempLine = '';
109
                } else if (strlen($tempLine.$word) === 100) {
110
                    // We are already at the edge, so we are done.
111
                    $lines[]  = $tempLine.$word;
112
                    $tempLine = '';
113
                } else {
114
                    $lines[]  = rtrim($tempLine);
115
                    $tempLine = $word.' ';
116
                }
117
            } else {
118
                $tempLine .= $word.' ';
119
            }
120
        }//end foreach
121
122
        if ($tempLine !== '') {
123
            $lines[] = rtrim($tempLine);
124
        }
125
126
        echo implode(PHP_EOL, $lines).PHP_EOL.PHP_EOL;
127
128
    }//end printTextBlock()
129
130
131
    /**
132
     * Print a code comparison block found in a standard.
133
     *
134
     * @param DOMNode $node The DOMNode object for the code comparison block.
135
     *
136
     * @return void
137
     */
138
    protected function printCodeComparisonBlock($node)
139
    {
140
        $codeBlocks = $node->getElementsByTagName('code');
141
        $first      = trim($codeBlocks->item(0)->nodeValue);
142
        $firstTitle = $codeBlocks->item(0)->getAttribute('title');
143
144
        $firstTitleLines = array();
145
        $tempTitle       = '';
146
        $words           = explode(' ', $firstTitle);
147
148
        foreach ($words as $word) {
149
            if (strlen($tempTitle.$word) >= 45) {
150
                if (strlen($tempTitle.$word) === 45) {
151
                    // Adding the extra space will push us to the edge
152
                    // so we are done.
153
                    $firstTitleLines[] = $tempTitle.$word;
154
                    $tempTitle         = '';
155
                } else if (strlen($tempTitle.$word) === 46) {
156
                    // We are already at the edge, so we are done.
157
                    $firstTitleLines[] = $tempTitle.$word;
158
                    $tempTitle         = '';
159
                } else {
160
                    $firstTitleLines[] = $tempTitle;
161
                    $tempTitle         = $word;
162
                }
163
            } else {
164
                $tempTitle .= $word.' ';
165
            }
166
        }//end foreach
167
168
        if ($tempTitle !== '') {
169
            $firstTitleLines[] = $tempTitle;
170
        }
171
172
        $first      = str_replace('<em>', '', $first);
173
        $first      = str_replace('</em>', '', $first);
174
        $firstLines = explode("\n", $first);
175
176
        $second      = trim($codeBlocks->item(1)->nodeValue);
177
        $secondTitle = $codeBlocks->item(1)->getAttribute('title');
178
179
        $secondTitleLines = array();
180
        $tempTitle        = '';
181
        $words            = explode(' ', $secondTitle);
182
183
        foreach ($words as $word) {
184
            if (strlen($tempTitle.$word) >= 45) {
185
                if (strlen($tempTitle.$word) === 45) {
186
                    // Adding the extra space will push us to the edge
187
                    // so we are done.
188
                    $secondTitleLines[] = $tempTitle.$word;
189
                    $tempTitle          = '';
190
                } else if (strlen($tempTitle.$word) === 46) {
191
                    // We are already at the edge, so we are done.
192
                    $secondTitleLines[] = $tempTitle.$word;
193
                    $tempTitle          = '';
194
                } else {
195
                    $secondTitleLines[] = $tempTitle;
196
                    $tempTitle          = $word;
197
                }
198
            } else {
199
                $tempTitle .= $word.' ';
200
            }
201
        }//end foreach
202
203
        if ($tempTitle !== '') {
204
            $secondTitleLines[] = $tempTitle;
205
        }
206
207
        $second      = str_replace('<em>', '', $second);
208
        $second      = str_replace('</em>', '', $second);
209
        $secondLines = explode("\n", $second);
210
211
        $maxCodeLines  = max(count($firstLines), count($secondLines));
212
        $maxTitleLines = max(count($firstTitleLines), count($secondTitleLines));
213
214
        echo str_repeat('-', 41);
215
        echo ' CODE COMPARISON ';
216
        echo str_repeat('-', 42).PHP_EOL;
217
218
        for ($i = 0; $i < $maxTitleLines; $i++) {
219
            if (isset($firstTitleLines[$i]) === true) {
220
                $firstLineText = $firstTitleLines[$i];
221
            } else {
222
                $firstLineText = '';
223
            }
224
225
            if (isset($secondTitleLines[$i]) === true) {
226
                $secondLineText = $secondTitleLines[$i];
227
            } else {
228
                $secondLineText = '';
229
            }
230
231
            echo '| ';
232
            echo $firstLineText.str_repeat(' ', (46 - strlen($firstLineText)));
233
            echo ' | ';
234
            echo $secondLineText.str_repeat(' ', (47 - strlen($secondLineText)));
235
            echo ' |'.PHP_EOL;
236
        }//end for
237
238
        echo str_repeat('-', 100).PHP_EOL;
239
240
        for ($i = 0; $i < $maxCodeLines; $i++) {
241
            if (isset($firstLines[$i]) === true) {
242
                $firstLineText = $firstLines[$i];
243
            } else {
244
                $firstLineText = '';
245
            }
246
247
            if (isset($secondLines[$i]) === true) {
248
                $secondLineText = $secondLines[$i];
249
            } else {
250
                $secondLineText = '';
251
            }
252
253
            echo '| ';
254
            echo $firstLineText.str_repeat(' ', (47 - strlen($firstLineText)));
255
            echo '| ';
256
            echo $secondLineText.str_repeat(' ', (48 - strlen($secondLineText)));
257
            echo '|'.PHP_EOL;
258
        }//end for
259
260
        echo str_repeat('-', 100).PHP_EOL.PHP_EOL;
261
262
    }//end printCodeComparisonBlock()
263
264
265
}//end class
266