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 5453334
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ This project adheres to [Semantic Versioning](https://semver.org/).
The format of this change log follows the advice given at [Keep a CHANGELOG](https://keepachangelog.com).

## [Unreleased]
### Fixed
- Fixed a recent regression by allowing to the `moodle.Files.BoilerplateComment` sniff to contain "extra" consecutive comment lines immediately after the official boilerplate ends.

## [v3.4.8] - 2024-06-14
### Added
Expand Down
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 extra (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 5453334

Please sign in to comment.