$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());
// Try to get the default from the config system.
$standard = PHP_CodeSniffer::getConfigData('default_standard');
if ($standard === null) {
- $standard = 'Moodle';
+ $standard = 'PEAR';
}
}
*/
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;
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;
} 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;
--- /dev/null
+<?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()
+
+}
--- /dev/null
+<?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;
+ }
+ }
+}
#!/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();