]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-19247 Reverted CodeSniffer.php and CLI.php to original state, and subclassed...
authornicolasconnault <nicolasconnault>
Wed, 20 May 2009 08:14:38 +0000 (08:14 +0000)
committernicolasconnault <nicolasconnault>
Wed, 20 May 2009 08:14:38 +0000 (08:14 +0000)
lib/pear/PHP/CodeSniffer.php
lib/pear/PHP/CodeSniffer/CLI.php
lib/pear/PHP/CodeSniffer/MoodleCLI.php [new file with mode: 0644]
lib/pear/PHP/MoodleCodeSniffer.php [new file with mode: 0644]
lib/pear/PHP/runsniffer

index 2c1efaf1fdb171bcd08437afb58e7e5a56d753e9..5d463414fe526523c7473ea3501c8bb961cc1429 100644 (file)
@@ -542,17 +542,6 @@ class PHP_CodeSniffer
                 $di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
             }
 
-            // MOODLE CODE: If thirdpartylibs.xml is found, add these values to the ignored array
-            // first iteration to find thirdpartylibs.xml
-            foreach ($di as $file) {
-                if ($file->getFileName() == 'thirdpartylibs.xml') {
-                    $xml = simplexml_load_file($file->getPathName());
-                    foreach ($xml->library as $libobject) {
-                        $this->ignorePatterns[] = (string) $libobject->location;
-                    }
-                }
-            }
-
             foreach ($di as $file) {
                 $filePath = realpath($file->getPathname());
 
index b13bd63ab6bd1554846abafaaa658aa04ed789ff..566b6da07ef1dcd669e705e7b0aac2dc7f51e747 100644 (file)
@@ -388,7 +388,7 @@ class PHP_CodeSniffer_CLI
             // Try to get the default from the config system.
             $standard = PHP_CodeSniffer::getConfigData('default_standard');
             if ($standard === null) {
-                $standard = 'Moodle';
+                $standard = 'PEAR';
             }
         }
 
@@ -416,7 +416,7 @@ class PHP_CodeSniffer_CLI
      */
     public function printUsage()
     {
-        echo 'Usage: phpcs [-nwlvi] [--report=<report>]'.PHP_EOL;
+        echo 'Usage: phpcs [-nwlvi] [--report=<report>] [--standard=<standard>]'.PHP_EOL;
         echo '    [--config-set key value] [--config-delete key] [--config-show]'.PHP_EOL;
         echo '    [--generator=<generator>] [--extensions=<extensions>]'.PHP_EOL;
         echo '    [--ignore=<patterns>] [--tab-width=<width>] <file> ...'.PHP_EOL;
@@ -432,6 +432,7 @@ class PHP_CodeSniffer_CLI
         echo '                     (only valid if checking a directory)'.PHP_EOL;
         echo '        <patterns>   A comma separated list of patterns that are used'.PHP_EOL;
         echo '                     to ignore directories and files'.PHP_EOL;
+        echo '        <standard>   The name of the coding standard to use'.PHP_EOL;
         echo '        <width>      The number of spaces each tab represents'.PHP_EOL;
         echo '        <generator>  The name of a doc generator to use'.PHP_EOL;
         echo '                     (forces doc generation instead of checking)'.PHP_EOL;
@@ -457,7 +458,7 @@ class PHP_CodeSniffer_CLI
         } else {
             $lastStandard = array_pop($installedStandards);
             if ($numStandards === 1) {
-                echo "The only coding standard installed is $lastStandard".PHP_EOL;
+                echo 'The only coding standard installed is $lastStandard'.PHP_EOL;
             } else {
                 $standardList  = implode(', ', $installedStandards);
                 $standardList .= ' and '.$lastStandard;
diff --git a/lib/pear/PHP/CodeSniffer/MoodleCLI.php b/lib/pear/PHP/CodeSniffer/MoodleCLI.php
new file mode 100644 (file)
index 0000000..781edb8
--- /dev/null
@@ -0,0 +1,87 @@
+<?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/>.
+/**
+ * Subclass of lib/pear/PHP/CodeSniffer/CLI.php
+ *
+ * Simple modifications to the CLI class to only use the Moodle Standard
+ *
+ * @package   lib-pear-php-codesniffer
+ * @copyright 2008 Nicolas Connault
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+if (is_file(dirname(__FILE__).'/../MoodleCodeSniffer.php') === true) {
+    include_once(dirname(__FILE__).'/../MoodleCodeSniffer.php');
+} else {
+    include_once('PHP/MoodleCodeSniffer.php');
+}
+
+require_once('PHP/CodeSniffer/CLI.php');
+
+/**
+ * A class to process command line phpcs scripts. Modified for use within Moodle
+ *
+ * @category  lib-pear-php-codesniffer
+ * @copyright 2009 Nicolas Connault
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class moodle_codesniffer_cli extends php_codesniffer_cli {
+    /**
+     * Modified to return Moodle only
+     *
+     * @param string $standard The standard to validate.
+     *
+     * @return string
+     */
+    public function validatestandard($standard) {
+        return 'Moodle';
+    }
+
+    /**
+     * Prints out the usage information for this script.
+     *
+     * Modified by removing the --standard option
+     *
+     * @return void
+     */
+    public function printusage() {
+        echo 'Usage: phpcs [-nwlvi] [--report=<report>]'.PHP_EOL;
+        echo '    [--config-set key value] [--config-delete key] [--config-show]'.PHP_EOL;
+        echo '    [--generator=<generator>] [--extensions=<extensions>]'.PHP_EOL;
+        echo '    [--ignore=<patterns>] [--tab-width=<width>] <file> ...'.PHP_EOL;
+        echo '        -n           Do not print warnings'.PHP_EOL;
+        echo '        -w           Print both warnings and errors (on by default)'.PHP_EOL;
+        echo '        -l           Local directory only, no recursion'.PHP_EOL;
+        echo '        -v[v][v]     Print verbose output'.PHP_EOL;
+        echo '        -i           Show a list of installed coding standards'.PHP_EOL;
+        echo '        --help       Print this help message'.PHP_EOL;
+        echo '        --version    Print version information'.PHP_EOL;
+        echo '        <file>       One or more files and/or directories to check'.PHP_EOL;
+        echo '        <extensions> A comma separated list of file extensions to check'.PHP_EOL;
+        echo '                     (only valid if checking a directory)'.PHP_EOL;
+        echo '        <patterns>   A comma separated list of patterns that are used'.PHP_EOL;
+        echo '                     to ignore directories and files'.PHP_EOL;
+        echo '        <width>      The number of spaces each tab represents'.PHP_EOL;
+        echo '        <generator>  The name of a doc generator to use'.PHP_EOL;
+        echo '                     (forces doc generation instead of checking)'.PHP_EOL;
+        echo '        <report>     Print either the "full", "xml", "checkstyle",'.PHP_EOL;
+        echo '                     "csv" or "summary" report'.PHP_EOL;
+        echo '                     (the "full" report is printed by default)'.PHP_EOL;
+
+    }//end printUsage()
+
+}
diff --git a/lib/pear/PHP/MoodleCodeSniffer.php b/lib/pear/PHP/MoodleCodeSniffer.php
new file mode 100644 (file)
index 0000000..f1f0457
--- /dev/null
@@ -0,0 +1,87 @@
+<?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/>.
+/**
+ * Sub-class of lib/pear/PHP/CodeSniffer.php
+ *
+ * Modified to read thirdpartylibs.xml from a recursed directory and apply
+ * its contents to the ignored list.
+ *
+ * @package   lib-pear-php-codesniffer
+ * @copyright 2008 Nicolas Connault
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+require_once('PHP/CodeSniffer/CLI.php');
+
+if (class_exists('PHP_CodeSniffer', true) === false) {
+    throw new Exception('Class PHP_CodeSniffer not found');
+}
+
+class moodle_codesniffer extends php_codesniffer {
+    public function processFiles($dir, $local=false) {
+        try {
+            if ($local === true) {
+                $di = new DirectoryIterator($dir);
+            } else {
+                $di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
+            }
+
+            // MOODLE CODE: If thirdpartylibs.xml is found, add these values to the ignored array
+            // first iteration to find thirdpartylibs.xml
+            foreach ($di as $file) {
+                if ($file->getFileName() == 'thirdpartylibs.xml') {
+                    $xml = simplexml_load_file($file->getPathName());
+                    foreach ($xml->library as $libobject) {
+                        $this->ignorePatterns[] = (string) $libobject->location;
+                    }
+                }
+            }
+
+            foreach ($di as $file) {
+                $filePath = realpath($file->getPathname());
+
+                if (is_dir($filePath) === true) {
+                    continue;
+                }
+
+                // Check that the file's extension is one we are checking.
+                // Note that because we are doing a whole directory, we
+                // are strick about checking the extension and we don't
+                // let files with no extension through.
+                $fileParts = explode('.', $file);
+                $extension = array_pop($fileParts);
+                if ($extension === $file) {
+                    continue;
+                }
+
+                if (isset($this->allowedFileExtensions[$extension]) === false) {
+                    continue;
+                }
+
+                $this->processFile($filePath);
+            }//end foreach
+        } catch (Exception $e) {
+            $trace    = $e->getTrace();
+            $filename = $trace[0]['args'][0];
+            $error    = 'An error occurred during processing; checking has been aborted. The error message was: '.$e->getMessage();
+
+            $phpcsFile = new PHP_CodeSniffer_File($filename, $this->listeners, $this->allowedFileExtensions);
+            $this->addFile($phpcsFile);
+            $phpcsFile->addError($error, null);
+            return;
+        }
+    }
+}
index fc3e3e666c668e36784bf888f9d1333aa884c06d..d77aac8199613d30d93793ab2a7a8b7e6e771e0f 100755 (executable)
@@ -1,27 +1,29 @@
 #!/usr/bin/php
 <?php
 /**
- * This script will run PHP CodeSniffer across given Moodle directories and 
+ * This script will run PHP CodeSniffer across given Moodle directories and
  * produce reports of coding standard violations.
  *
  * HOW TO USE:
  *    php lib/pear/PHP/runsniffer mod/forum
+ * USEFUL PARAMETERS:
+ *    -n : only show ERROR, not WARNING
+ *    --report=summary : Outputs a summary instead of a per-file list of errors
  *
- * @package   PHP_CodeSniffer
- * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600)
- * @license   http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence
- * @link      http://pear.php.net/package/PHP_CodeSniffer
+ * @package   lib-pear-PHP-CodeSniffer
+ * @copyright 2009 Nicolas Connault
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
 error_reporting(E_ALL | E_STRICT);
 
-if (is_file(dirname(__FILE__).'/CodeSniffer/CLI.php') === true) {
-    include_once dirname(__FILE__).'/CodeSniffer/CLI.php';
+if (is_file(dirname(__FILE__).'/CodeSniffer/MoodleCLI.php') === true) {
+    include_once dirname(__FILE__).'/CodeSniffer/MoodleCLI.php';
 } else {
-    include_once 'lib/pear/PHP/CodeSniffer/CLI.php';
+    include_once 'lib/pear/PHP/CodeSniffer/MoodleCLI.php';
 }
 
-$phpcs = new PHP_CodeSniffer_CLI();
+$phpcs = new moodle_codesniffer_cli();
 $phpcs->checkRequirements();
 
 $numErrors = $phpcs->process();