-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcodechecker.php
More file actions
66 lines (59 loc) · 2.54 KB
/
codechecker.php
File metadata and controls
66 lines (59 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?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/>.
/**
* Run the code checker on the list of changed files.
*
* @package moodlescripts
* @copyright 2016 Craig Jamieson
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
$ignorenames = array('jquery.multiple.select.js', 'd3.js', 'd3.layout.cloud.js', 'd3cloud.js', 'd3tip.js');
$ignoretypes = array('feature', 'png', 'PNG', 'xml', 'svg', 'txt', 'md', 'mustache', 'yml');
require(dirname(__FILE__) . '/../config.php');
require_once($CFG->libdir . '/clilib.php');
require_once($CFG->dirroot . '/local/codechecker/locallib.php');
chdir('../');
exec('git diff-tree --no-commit-id --name-only -r HEAD', $files);
chdir('local/codechecker');
$keep = array();
foreach ($files as $file) {
// File may have been deleted.
if (file_exists($CFG->dirroot . '/' . $file)) {
$pathparts = pathinfo($file);
// This skips any folders that might exist.
if (isset($pathparts['extension'])) {
if (array_search($pathparts['extension'], $ignoretypes) === false) {
$filename = $pathparts['filename'] . '.' . $pathparts['extension'];
if (array_search($filename, $ignorenames) === false) {
$keep[] = local_codechecker_clean_path($CFG->dirroot . '/' . trim($file, '/'));
}
}
}
}
}
if (count($keep) == 0) {
return 0;
}
raise_memory_limit(MEMORY_HUGE);
$standard = $CFG->dirroot . str_replace('/', DIRECTORY_SEPARATOR, '/local/codechecker/moodle');
$sniffer = new PHP_CodeSniffer(1, 0, 'utf-8', false);
$cli = new local_codechecker_codesniffer_cli();
$sniffer->setCli($cli);
$sniffer->setIgnorePatterns(local_codesniffer_get_ignores());
$sniffer->process($keep, local_codechecker_clean_path($standard));
$results = $sniffer->reporting->printReport('full', false, $cli->getCommandLineValues(), null);
return $results['errors'] > 0 ? 1 : 0;