mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
MDL-19247 Reverted CodeSniffer.php and CLI.php to original state, and subclassed them in MoodleCodeSniffer.php and MoodleCLI.php in order to reproduce the small changes. Also updated runsniffer script.
This commit is contained in:
parent
e624cda83b
commit
84f1ffb8a2
@ -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());
|
||||
|
||||
|
@ -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;
|
||||
|
87
lib/pear/PHP/CodeSniffer/MoodleCLI.php
Normal file
87
lib/pear/PHP/CodeSniffer/MoodleCLI.php
Normal file
@ -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()
|
||||
|
||||
}
|
87
lib/pear/PHP/MoodleCodeSniffer.php
Normal file
87
lib/pear/PHP/MoodleCodeSniffer.php
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user