} } closedir($dh); } require_login(); $context = get_system_context(); $PAGE->set_context($context); $PAGE->set_heading($SITE->fullname); $PAGE->set_title($SITE->fullname . ': ' . get_string('pluginname', 'local_moodlecheck')); $PAGE->set_url(new moodle_url('/local/moodlecheck/index.php')); $output = $PAGE->get_renderer('local_moodlecheck'); echo $output->header(); $form = new local_moodlecheck_form(); $form->display(); if ($form->is_submitted() && $form->is_validated()) { $data = $form->get_data(); $paths = preg_split('/\\s*\\n\\s*/', trim($data->path), null, PREG_SPLIT_NO_EMPTY); $ignorepaths = preg_split('/\\s*\\n\\s*/', trim($data->ignorepath), null, PREG_SPLIT_NO_EMPTY); if (isset($data->checkall) && $data->checkall == 'selected' && isset($data->rule)) { foreach ($data->rule as $code => $value) { local_moodlecheck_registry::enable_rule($code); } } else { local_moodlecheck_registry::enable_all_rules(); } foreach ($paths as $filename) { $path = new local_moodlecheck_path($filename, $ignorepaths); echo $output->display_path($path); } } echo $output->footer();
local_moodlecheck_registry::add_rule('constsdocumented')->set_callback('local_moodlecheck_constsdocumented'); local_moodlecheck_registry::add_rule('definesdocumented')->set_callback('local_moodlecheck_definesdocumented'); local_moodlecheck_registry::add_rule('noinlinephpdocs')->set_callback('local_moodlecheck_noinlinephpdocs'); local_moodlecheck_registry::add_rule('phpdocsfistline')->set_callback('local_moodlecheck_phpdocsfistline'); local_moodlecheck_registry::add_rule('functiondescription')->set_callback('local_moodlecheck_functiondescription'); local_moodlecheck_registry::add_rule('functionarguments')->set_callback('local_moodlecheck_functionarguments'); local_moodlecheck_registry::add_rule('variableshasvar')->set_callback('local_moodlecheck_variableshasvar'); local_moodlecheck_registry::add_rule('definedoccorrect')->set_callback('local_moodlecheck_definedoccorrect'); local_moodlecheck_registry::add_rule('filehascopyright')->set_callback('local_moodlecheck_filehascopyright'); local_moodlecheck_registry::add_rule('classeshavecopyright')->set_callback('local_moodlecheck_classeshavecopyright'); local_moodlecheck_registry::add_rule('filehaslicense')->set_callback('local_moodlecheck_filehaslicense'); local_moodlecheck_registry::add_rule('classeshavelicense')->set_callback('local_moodlecheck_classeshavelicense'); local_moodlecheck_registry::add_rule('phpdocsinvalidtag')->set_callback('local_moodlecheck_phpdocsinvalidtag'); local_moodlecheck_registry::add_rule('phpdocsnotrecommendedtag')->set_callback('local_moodlecheck_phpdocsnotrecommendedtag')->set_severity('warning'); local_moodlecheck_registry::add_rule('phpdocsinvalidinlinetag')->set_callback('local_moodlecheck_phpdocsinvalidinlinetag'); local_moodlecheck_registry::add_rule('phpdocsuncurlyinlinetag')->set_callback('local_moodlecheck_phpdocsuncurlyinlinetag'); /** * Checks if the first line in the file has open tag and second line is not empty * * @param local_moodlecheck_file $file * @return array of found errors */ function local_moodlecheck_noemptysecondline(local_moodlecheck_file $file) { $tokens =& $file->get_tokens(); if ($tokens[0][0] == T_OPEN_TAG && !$file->is_whitespace_token(1) && $file->is_multiline_token(0) == 1) { return array(); } return array(array('line' => 2)); } /**
/** * Validates a file over registered rules and returns an array of errors * * @return array */ public function validate() { if ($this->errors !== null) { return $this->errors; } $this->errors = array(); if (!$this->needs_validation()) { return $this->errors; } foreach (local_moodlecheck_registry::get_enabled_rules() as $code => $rule) { $ruleerrors = $rule->validatefile($this); if (count($ruleerrors)) { $this->errors = array_merge($this->errors, $ruleerrors); } } $this->clear_memory(); return $this->errors; }
// 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/>. /** * Registering rules for checking phpdocs related to package and category tags * * @package local_moodlecheck * @copyright 2012 Marina Glancy * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die; local_moodlecheck_registry::add_rule('packagespecified')->set_callback('local_moodlecheck_packagespecified'); local_moodlecheck_registry::add_rule('packagevalid')->set_callback('local_moodlecheck_packagevalid'); local_moodlecheck_registry::add_rule('categoryvalid')->set_callback('local_moodlecheck_categoryvalid'); /** * Checks if all functions (outside class) and classes have package * * package tag may be inherited from file-level phpdocs * * @param local_moodlecheck_file $file * @return array of found errors */ function local_moodlecheck_packagespecified(local_moodlecheck_file $file) { $errors = array(); $phpdocs = $file->find_file_phpdocs(); if ($phpdocs && count($phpdocs->get_tags('package', true))) { // package is specified on file level, it is automatically inherited return array();
protected function definition() { global $path; $mform = $this->_form; $mform->addElement('header', ''); $mform->addElement('textarea', 'path', get_string('path', 'local_moodlecheck'), array('rows' => 8, 'cols' => 120)); $mform->addHelpButton('path', 'path', 'local_moodlecheck'); $mform->addElement('textarea', 'ignorepath', get_string('ignorepath', 'local_moodlecheck'), array('rows' => 3, 'cols' => 120)); $mform->setAdvanced('ignorepath'); $mform->addElement('radio', 'checkall', '', get_string('checkallrules', 'local_moodlecheck'), 'all'); $mform->addElement('radio', 'checkall', '', get_string('checkselectedrules', 'local_moodlecheck'), 'selected'); $mform->setDefault('checkall', 'all'); foreach (local_moodlecheck_registry::get_registered_rules() as $code => $rule) { $mform->addElement('checkbox', "rule[{$code}]", '', $rule->get_name()); $mform->setDefault("rule[{$code}]", 1); $mform->setAdvanced("rule[{$code}]"); } $mform->addElement('submit', 'submitbutton', get_string('check', 'local_moodlecheck')); }