]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-19247 Added detection of blank lines before control structures, plus other tidbits.
authornicolasconnault <nicolasconnault>
Wed, 20 May 2009 14:09:26 +0000 (14:09 +0000)
committernicolasconnault <nicolasconnault>
Wed, 20 May 2009 14:09:26 +0000 (14:09 +0000)
lib/pear/PHP/CodeSniffer/Standards/Moodle/MoodleCodingStandard.php
lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/Classes/ClassDeclarationSniff.php
lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/WhiteSpace/ControlStructureBlankLineSniff.php [new file with mode: 0644]

index bf264eb7616af9f4247ec3629f56f45df95eec1d..5bf062b8da0cee41717ce9c456852e908b284af7 100644 (file)
@@ -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 {
     /**
index cca131a436e4817990679f2df0a05626e595db88..a6b68fb09197c2f6f7c7195389c502a7274b725c 100644 (file)
@@ -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);
                 }
             }
         }
-
     }
-
-
 }
-
-?>
diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/WhiteSpace/ControlStructureBlankLineSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/WhiteSpace/ControlStructureBlankLineSniff.php
new file mode 100644 (file)
index 0000000..14644f3
--- /dev/null
@@ -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);
+        }
+    }
+}