Skip to content

Commit

Permalink
Allow extra consecutive header lines after the official boilerplate
Browse files Browse the repository at this point in the history
Once the official boilerplate checks have been performed, allow
the "block" to be expanded with any extra information.

As far as the block is a number of consecutive comment lines,
exclusively separated by \n, that's allowed.

Note that any spacing different from \n or any non consecutive
comment line will stop the sequence.
  • Loading branch information
stronk7 committed Jun 17, 2024
1 parent 91661a1 commit 3f4dc46
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
19 changes: 18 additions & 1 deletion moodle/Sniffs/Files/BoilerplateCommentSniff.php
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,24 @@ public function process(File $phpcsFile, $stackPtr): void
return;
}

$tokenptr++;
// Let's jump over all the (allowed) consecutive comments to find the first non-comment token.
$lastComment = $tokenptr;
$nextComment = $tokenptr;
while (($nextComment = $phpcsFile->findNext(T_COMMENT, ($nextComment + 1), null, false)) !== false) {
// Only \n is allowed as spacing since the previous comment line.
if (strpos($tokens[$nextComment - 1]['content'], "\n") === false) {
// Stop looking for consecutive comments, some spacing broke the sequence.
$nextComment = $lastComment; // Previous was the last one.
break;
}
if ($tokens[$nextComment]['line'] !== ($tokens[$lastComment]['line'] + 1)) {
// Stop looking for consecutive comments, the lines are not.
break;
}
error_log("Found comment on line " . $tokens[$nextComment]['line']);
$lastComment = $nextComment;
}
$tokenptr = $lastComment + 1; // Move to the last found comment + 1.

$nextnonwhitespace = $phpcsFile->findNext(T_WHITESPACE, $tokenptr, null, true);

Expand Down
4 changes: 4 additions & 0 deletions moodle/Tests/fixtures/files/boilerplatecomment/ok2.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,9 @@
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
//
// Note that extra lines after the official boilerplate are allowed
// to put any other information. We only will require the blank line
// after the whole boilerplate ends.

class someclass { }

0 comments on commit 3f4dc46

Please sign in to comment.