MethodFlagParameterSniff::process()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 12
rs 10
cc 3
nc 3
nop 2
1
<?php declare(strict_types = 1);
2
3
namespace Codor\Sniffs\Files;
4
5
use PHP_CodeSniffer\Sniffs\Sniff as PHP_CodeSniffer_Sniff;
6
use PHP_CodeSniffer\Files\File as PHP_CodeSniffer_File;
7
8
class MethodFlagParameterSniff implements PHP_CodeSniffer_Sniff
9
{
10
11
    /**
12
     * The two token types we're looking for.
13
     * @var array
14
     */
15
    protected $booleans = ['T_FALSE', 'T_TRUE'];
16
17
    /**
18
     * Returns the token types that this sniff is interested in.
19
     * @return array
20
     */
21
    public function register(): array
22
    {
23
        return [T_FUNCTION];
24
    }
25
26
    /**
27
     * Processes the tokens that this sniff is interested in.
28
     *
29
     * @param PHP_CodeSniffer_File $phpcsFile The file where the token was found.
30
     * @param integer              $stackPtr  The position in the stack where
31
     *                                    the token was found.
32
     * @return void
33
     */
34
    public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
35
    {
36
        $tokens           = $phpcsFile->getTokens();
37
38
        $token            = $tokens[$stackPtr];
39
        $openParenIndex   = $token['parenthesis_opener'];
40
        $closedParenIndex = $token['parenthesis_closer'];
41
42
        for ($index=$openParenIndex+1; $index <= $closedParenIndex; $index++) {
43
            if (in_array($tokens[$index]['type'], $this->booleans)) {
44
                $phpcsFile->addError("Function/method contains a flag parameter.", $stackPtr, __CLASS__);
45
                continue;
46
            }
47
        }
48
    }
49
}
50