Passed
Push — master ( 419e08...21d85c )
by Björn
02:53
created

RedundantWhitespaceSniff::processToken()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 23
rs 9.552
c 0
b 0
f 0
cc 3
nc 2
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BestIt\Sniffs\Commenting;
6
7
use BestIt\Sniffs\AbstractSniff;
8
use const T_DOC_COMMENT_STAR;
9
use const T_DOC_COMMENT_TAG;
10
use const T_DOC_COMMENT_WHITESPACE;
11
12
/**
13
 * Sniffs for redundant whitespace in doc blocks.
14
 *
15
 * @author blange <[email protected]>
16
 * @package BestIt\Sniffs\Commenting
17
 */
18
class RedundantWhitespaceSniff extends AbstractSniff
19
{
20
    /**
21
     * The error code.
22
     *
23
     * @var string
24
     */
25
    public const CODE_ERROR_REDUNDANT_WHITESPACE = 'RedundantWhitespace';
26
27
    /**
28
     * The message for the user.
29
     *
30
     * @var string
31
     */
32
    private const MESSAGE_ERROR_REDUNDANT_WHITESPACE = 'Please remove unnecessary whitespace.';
33
34
    /**
35
     * Processes the token.
36
     *
37
     * @return void
38
     */
39
    protected function processToken(): void
40
    {
41
        $file = $this->getFile();
42
        $stackPos = $this->getStackPos();
43
        $nextTokenContentPos = $file->findNext(
44
            [T_DOC_COMMENT_WHITESPACE],
45
            $stackPos + 1,
46
            null,
47
            true
48
        );
49
50
        $nextToken = $this->tokens[$nextTokenContentPos];
51
52
        if (($nextToken['code'] === T_DOC_COMMENT_TAG) && ($this->token['column'] + 2 !== $nextToken['column'])) {
53
            // This thing is not fixable, because the codesniffer - as you can see - does not parse the whitespace as
54
            // a token but handles it as "columns"
55
            $file->addError(
56
                self::MESSAGE_ERROR_REDUNDANT_WHITESPACE,
57
                $stackPos,
58
                static::CODE_ERROR_REDUNDANT_WHITESPACE
59
            );
60
        }
61
    }
62
63
    /**
64
     * Registers the tokens that this sniff wants to listen for.
65
     *
66
     * An example return value for a sniff that wants to listen for whitespace
67
     * and any comments would be:
68
     *
69
     * <code>
70
     *    return array(
71
     *            T_WHITESPACE,
72
     *            T_DOC_COMMENT,
73
     *            T_COMMENT,
74
     *           );
75
     * </code>
76
     *
77
     * @return int[]
78
     * @see    Tokens.php
79
     */
80
    public function register(): array
81
    {
82
        return [T_DOC_COMMENT_STAR];
83
    }
84
}
85