Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /**
|
Chris@0
|
4 * DrupalPractice_Sniffs_Commenting_CommentEmptyLineSniff
|
Chris@0
|
5 *
|
Chris@0
|
6 * @category PHP
|
Chris@0
|
7 * @package PHP_CodeSniffer
|
Chris@0
|
8 * @link http://pear.php.net/package/PHP_CodeSniffer
|
Chris@0
|
9 */
|
Chris@0
|
10
|
Chris@0
|
11 /**
|
Chris@0
|
12 * Throws a warning if there is a blank line after an inline comment.
|
Chris@0
|
13 *
|
Chris@0
|
14 * @category PHP
|
Chris@0
|
15 * @package PHP_CodeSniffer
|
Chris@0
|
16 * @link http://pear.php.net/package/PHP_CodeSniffer
|
Chris@0
|
17 */
|
Chris@0
|
18 class DrupalPractice_Sniffs_Commenting_CommentEmptyLineSniff implements PHP_CodeSniffer_Sniff
|
Chris@0
|
19 {
|
Chris@0
|
20
|
Chris@0
|
21
|
Chris@0
|
22 /**
|
Chris@0
|
23 * Returns an array of tokens this test wants to listen for.
|
Chris@0
|
24 *
|
Chris@0
|
25 * @return array
|
Chris@0
|
26 */
|
Chris@0
|
27 public function register()
|
Chris@0
|
28 {
|
Chris@0
|
29 return array(T_COMMENT);
|
Chris@0
|
30
|
Chris@0
|
31 }//end register()
|
Chris@0
|
32
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * Processes this test, when one of its tokens is encountered.
|
Chris@0
|
36 *
|
Chris@0
|
37 * @param PHP_CodeSniffer_File $phpcsFile The file being scanned.
|
Chris@0
|
38 * @param int $stackPtr The position of the current token
|
Chris@0
|
39 * in the stack passed in $tokens.
|
Chris@0
|
40 *
|
Chris@0
|
41 * @return void
|
Chris@0
|
42 */
|
Chris@0
|
43 public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
|
Chris@0
|
44 {
|
Chris@0
|
45 $tokens = $phpcsFile->getTokens();
|
Chris@0
|
46
|
Chris@0
|
47 $comment = rtrim($tokens[$stackPtr]['content']);
|
Chris@0
|
48
|
Chris@0
|
49 // Only want inline comments.
|
Chris@0
|
50 if (substr($comment, 0, 2) !== '//') {
|
Chris@0
|
51 return;
|
Chris@0
|
52 }
|
Chris@0
|
53
|
Chris@0
|
54 // The line below the last comment cannot be empty.
|
Chris@0
|
55 for ($i = ($stackPtr + 1); $i < $phpcsFile->numTokens; $i++) {
|
Chris@0
|
56 if ($tokens[$i]['line'] === ($tokens[$stackPtr]['line'] + 1)) {
|
Chris@0
|
57 if ($tokens[$i]['code'] !== T_WHITESPACE) {
|
Chris@0
|
58 return;
|
Chris@0
|
59 }
|
Chris@0
|
60 } else if ($tokens[$i]['line'] > ($tokens[$stackPtr]['line'] + 1)) {
|
Chris@0
|
61 break;
|
Chris@0
|
62 }
|
Chris@0
|
63 }
|
Chris@0
|
64
|
Chris@0
|
65 $warning = 'There must be no blank line following an inline comment';
|
Chris@0
|
66 $phpcsFile->addWarning($warning, $stackPtr, 'SpacingAfter');
|
Chris@0
|
67
|
Chris@0
|
68 }//end process()
|
Chris@0
|
69
|
Chris@0
|
70
|
Chris@0
|
71 }//end class
|