mirror of
https://github.com/moodle/moodle.git
synced 2025-02-23 03:18:07 +01:00
88 lines
3.3 KiB
PHP
88 lines
3.3 KiB
PHP
<?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;
|
|
}
|
|
}
|
|
}
|