mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
MDL-19247 Added detection of blank lines before control structures, plus other tidbits.
This commit is contained in:
parent
8cc92fb2e6
commit
2178c7ada9
@ -31,12 +31,8 @@ if (class_exists('PHP_CodeSniffer_Standards_CodingStandard', true) === false) {
|
||||
/**
|
||||
* Moodle Coding Standard.
|
||||
*
|
||||
* @category PHP
|
||||
* @package PHP_CodeSniffer
|
||||
* @author Nicolas Connault <nicolasconnault@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @version Release: @package_version@
|
||||
* @link http://pear.php.net/package/PHP_CodeSniffer
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @version Release: @package_version@
|
||||
*/
|
||||
class php_codesniffer_standards_moodle_moodlecodingstandard extends php_codesniffer_standards_codingstandard {
|
||||
/**
|
||||
|
@ -30,8 +30,7 @@
|
||||
* @copyright 2009 Nicolas Connault
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class moodle_sniffs_classes_classdeclarationsniff implements php_codesniffer_sniff
|
||||
{
|
||||
class moodle_sniffs_classes_classdeclarationsniff implements php_codesniffer_sniff {
|
||||
|
||||
|
||||
/**
|
||||
@ -39,13 +38,8 @@ class moodle_sniffs_classes_classdeclarationsniff implements php_codesniffer_sni
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
return array(
|
||||
T_CLASS,
|
||||
T_INTERFACE,
|
||||
);
|
||||
|
||||
public function register() {
|
||||
return array(T_CLASS, T_INTERFACE);
|
||||
}
|
||||
|
||||
|
||||
@ -58,8 +52,7 @@ class moodle_sniffs_classes_classdeclarationsniff implements php_codesniffer_sni
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr)
|
||||
{
|
||||
public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) {
|
||||
$tokens = $phpcsfile->gettokens();
|
||||
|
||||
if (isset($tokens[$stackptr]['scope_opener']) === false) {
|
||||
@ -70,33 +63,31 @@ class moodle_sniffs_classes_classdeclarationsniff implements php_codesniffer_sni
|
||||
return;
|
||||
}
|
||||
|
||||
$curlyBrace = $tokens[$stackptr]['scope_opener'];
|
||||
$lastcontent = $phpcsfile->findPrevious(T_WHITESPACE, ($curlyBrace - 1), $stackptr, true);
|
||||
$curlybrace = $tokens[$stackptr]['scope_opener'];
|
||||
$lastcontent = $phpcsfile->findPrevious(T_WHITESPACE, ($curlybrace - 1), $stackptr, true);
|
||||
$classline = $tokens[$lastcontent]['line'];
|
||||
$braceline = $tokens[$curlyBrace]['line'];
|
||||
$braceline = $tokens[$curlybrace]['line'];
|
||||
|
||||
if ($braceline != $classline) {
|
||||
$error = 'Opening brace of a ';
|
||||
$error .= $tokens[$stackptr]['content'];
|
||||
$error .= ' must be on the same line as the definition';
|
||||
$phpcsfile->adderror($error, $curlyBrace);
|
||||
$phpcsfile->adderror($error, $curlybrace);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($tokens[($curlyBrace - 1)]['code'] === T_WHITESPACE) {
|
||||
$prevcontent = $tokens[($curlyBrace - 1)]['content'];
|
||||
if ($tokens[($curlybrace - 1)]['code'] === T_WHITESPACE) {
|
||||
$prevcontent = $tokens[($curlybrace - 1)]['content'];
|
||||
|
||||
if ($prevcontent !== $phpcsfile->eolChar) {
|
||||
$blankSpace = substr($prevcontent, strpos($prevcontent, $phpcsfile->eolChar));
|
||||
$spaces = strlen($blankSpace);
|
||||
$blankspace = substr($prevcontent, strpos($prevcontent, $phpcsfile->eolChar));
|
||||
$spaces = strlen($blankspace);
|
||||
|
||||
if ($spaces !== 1) {
|
||||
$error = "Expected 1 space before opening brace; $spaces found";
|
||||
$phpcsfile->adderror($error, $curlyBrace);
|
||||
$phpcsfile->adderror($error, $curlybrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
/**
|
||||
* moodle_sniffs_whitespace_controlstructureblanklinesniff
|
||||
*
|
||||
* @package lib-pear-php-codesniffer-standards-moodle-sniffs-whitespace
|
||||
* @copyright 2008 Nicolas Connault
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
/**
|
||||
* moodle_sniffs_controlstructureblanklinesniff
|
||||
*
|
||||
* Checks that there is a blank line before control structures
|
||||
*
|
||||
* @copyright 2008 Nicolas Connault
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class moodle_sniffs_whitespace_controlstructureblanklinesniff implements php_codesniffer_sniff {
|
||||
|
||||
|
||||
/**
|
||||
* Returns an array of tokens this test wants to listen for.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function register() {
|
||||
return array(T_IF, T_FOR, T_FOREACH, T_WHILE, T_SWITCH);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Processes this test, when one of its tokens is encountered.
|
||||
*
|
||||
* @param PHP_CodeSniffer_File $phpcsfile All the tokens found in the document.
|
||||
* @param int $stackptr The position of the current token in the
|
||||
* stack passed in $tokens.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) {
|
||||
$tokens = $phpcsfile->gettokens();
|
||||
$previoustoken = $stackptr - 1;
|
||||
|
||||
while ($tokens[$previoustoken]['line'] == $tokens[$stackptr]['line']) {
|
||||
$previoustoken = $phpcsfile->findprevious(T_WHITESPACE, ($previoustoken - 1), null, true);
|
||||
}
|
||||
|
||||
$previous_non_ws_token = $tokens[$previoustoken];
|
||||
|
||||
if ($previous_non_ws_token['line'] == ($tokens[$stackptr]['line'] - 1)) {
|
||||
$phpcsfile->addWarning('You should add a blank line before control structures', $stackptr);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user