From 7f2068f7e9fe5ec5011ac5c04bd5c8e84e835b78 Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Thu, 21 May 2009 10:07:32 +0000 Subject: [PATCH] MDL-19247 Finished cleaning up Sniffer files --- .../CodeAnalysis/EmptyStatementSniff.php | 25 +++++++--------- .../ForLoopShouldBeWhileLoopSniff.php | 17 ++++------- .../ForLoopWithTestFunctionCallSniff.php | 18 ++++------- .../CodeAnalysis/JumbledIncrementerSniff.php | 26 +++++++--------- .../UnconditionalIfStatementSniff.php | 28 ++++++----------- .../UnnecessaryFinalModifierSniff.php | 16 +++------- .../UnusedFunctionParameterSniff.php | 30 +++++++++---------- .../UselessOverridingMethodSniff.php | 20 +++++++------ 8 files changed, 70 insertions(+), 110 deletions(-) diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/EmptyStatementSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/EmptyStatementSniff.php index fc908609ec..1eb04f2860 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/EmptyStatementSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/EmptyStatementSniff.php @@ -46,8 +46,7 @@ * @copyright 2009 Nicolas Connault * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class moodle_sniffs_codeanalysis_emptystatementsniff implements php_codesniffer_sniff -{ +class moodle_sniffs_codeanalysis_emptystatementsniff implements php_codesniffer_sniff { /** * List of block tokens that this sniff covers. @@ -77,10 +76,8 @@ class moodle_sniffs_codeanalysis_emptystatementsniff implements php_codesniffer_ * * @return array(integer) */ - public function register() - { + public function register() { return array_keys($this->_tokens); - } @@ -93,8 +90,7 @@ class moodle_sniffs_codeanalysis_emptystatementsniff implements php_codesniffer_ * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -106,28 +102,27 @@ class moodle_sniffs_codeanalysis_emptystatementsniff implements php_codesniffer_ $next = ++$token['scope_opener']; $end = --$token['scope_closer']; - $emptyBody = true; + $emptybody = true; + for (; $next <= $end; ++$next) { + if (in_array($tokens[$next]['code'], PHP_CodeSniffer_tokens::$emptyTokens) === false) { - $emptyBody = false; + $emptybody = false; break; } } - if ($emptyBody === true) { + if ($emptybody === true) { // Get token identifier. $name = $phpcsfile->gettokensAsString($stackptr, 1); $error = sprintf('Empty %s statement detected', strtoupper($name)); + if ($this->_tokens[$token['code']] === true) { $phpcsfile->adderror($error, $stackptr); + } else { $phpcsfile->addwarning($error, $stackptr); } } - } - - } - -?> diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php index 110e4553b3..56c3d1197d 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php @@ -42,8 +42,7 @@ * @copyright 2009 Nicolas Connault * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class moodle_sniffs_codeanalysis_forloopshouldbewhileloopsniff implements php_codesniffer_sniff -{ +class moodle_sniffs_codeanalysis_forloopshouldbewhileloopsniff implements php_codesniffer_sniff { /** @@ -51,10 +50,8 @@ class moodle_sniffs_codeanalysis_forloopshouldbewhileloopsniff implements php_co * * @return array(integer) */ - public function register() - { + public function register() { return array(T_FOR); - } @@ -67,8 +64,7 @@ class moodle_sniffs_codeanalysis_forloopshouldbewhileloopsniff implements php_co * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -85,8 +81,10 @@ class moodle_sniffs_codeanalysis_forloopshouldbewhileloopsniff implements php_co for (; $next <= $end; ++$next) { $code = $tokens[$next]['code']; + if ($code === T_SEMICOLON) { ++$index; + } else if (in_array($code, PHP_CodeSniffer_tokens::$emptyTokens) === false) { ++$parts[$index]; } @@ -96,10 +94,5 @@ class moodle_sniffs_codeanalysis_forloopshouldbewhileloopsniff implements php_co $error = 'This FOR loop can be simplified to a WHILE loop'; $phpcsfile->addwarning($error, $stackptr); } - } - - } - -?> diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php index 4b755e8001..ba5224a708 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php @@ -45,8 +45,7 @@ * @copyright 2009 Nicolas Connault * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class moodle_sniffs_codeanalysis_forloopwithtestfunctioncallsniff implements php_codesniffer_sniff -{ +class moodle_sniffs_codeanalysis_forloopwithtestfunctioncallsniff implements php_codesniffer_sniff { /** @@ -54,10 +53,8 @@ class moodle_sniffs_codeanalysis_forloopwithtestfunctioncallsniff implements php * * @return array(integer) */ - public function register() - { + public function register() { return array(T_FOR); - } @@ -70,8 +67,7 @@ class moodle_sniffs_codeanalysis_forloopwithtestfunctioncallsniff implements php * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -87,14 +83,17 @@ class moodle_sniffs_codeanalysis_forloopwithtestfunctioncallsniff implements php for (; $next <= $end; ++$next) { $code = $tokens[$next]['code']; + if ($code === T_SEMICOLON) { ++$position; } if ($position < 1) { continue; + } else if ($position > 1) { break; + } else if ($code !== T_VARIABLE && $code !== T_STRING) { continue; } @@ -109,10 +108,5 @@ class moodle_sniffs_codeanalysis_forloopwithtestfunctioncallsniff implements php break; } } - } - - } - -?> diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php index f272168ca5..bd8f380c6d 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php @@ -49,8 +49,7 @@ * @copyright 2009 Nicolas Connault * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesniffer_sniff -{ +class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesniffer_sniff { /** @@ -58,10 +57,8 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif * * @return array(integer) */ - public function register() - { + public function register() { return array(T_FOR); - } @@ -74,8 +71,7 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -85,7 +81,7 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif } // Find incrementors for outer loop. - $outer = $this->findIncrementers($tokens, $token); + $outer = $this->findincrementers($tokens, $token); // Skip if empty. if (count($outer) === 0) { @@ -97,11 +93,12 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif $end = --$token['scope_closer']; for (; $start <= $end; ++$start) { + if ($tokens[$start]['code'] !== T_FOR) { continue; } - $inner = $this->findIncrementers($tokens, $tokens[$start]); + $inner = $this->findincrementers($tokens, $tokens[$start]); $diff = array_intersect($outer, $inner); if (count($diff) !== 0) { @@ -109,7 +106,6 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif $phpcsfile->addwarning($error, $stackptr); } } - } @@ -121,8 +117,7 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif * * @return array(string) List of all found incrementer variables. */ - protected function findIncrementers(array $tokens, array $token) - { + protected function findincrementers(array $tokens, array $token) { // Skip invalid statement. if (isset($token['parenthesis_opener']) === false) { return array(); @@ -133,10 +128,13 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif $incrementers = array(); $semicolons = 0; + for ($next = $start; $next <= $end; ++$next) { $code = $tokens[$next]['code']; + if ($code === T_SEMICOLON) { ++$semicolons; + } else if ($semicolons === 2 && $code === T_VARIABLE) { $incrementers[] = $tokens[$next]['content']; } @@ -145,8 +143,4 @@ class moodle_sniffs_codeanalysis_jumbledincrementersniff implements php_codesnif return $incrementers; } - - } - -?> diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php index d54411a55d..d041b50b95 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php @@ -46,8 +46,7 @@ * @copyright 2009 Nicolas Connault * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class moodle_sniffs_codeanalysis_unconditionalifstatementsniff implements php_codesniffer_sniff -{ +class moodle_sniffs_codeanalysis_unconditionalifstatementsniff implements php_codesniffer_sniff { /** @@ -55,13 +54,8 @@ class moodle_sniffs_codeanalysis_unconditionalifstatementsniff implements php_co * * @return array(integer) */ - public function register() - { - return array( - T_IF, - T_ELSEIF, - ); - + public function register() { + return array(T_IF, T_ELSEIF); } @@ -74,8 +68,7 @@ class moodle_sniffs_codeanalysis_unconditionalifstatementsniff implements php_co * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -87,25 +80,22 @@ class moodle_sniffs_codeanalysis_unconditionalifstatementsniff implements php_co $next = ++$token['parenthesis_opener']; $end = --$token['parenthesis_closer']; - $goodCondition = false; + $goodcondition = false; + for (; $next <= $end; ++$next) { $code = $tokens[$next]['code']; if (in_array($code, PHP_CodeSniffer_tokens::$emptyTokens) === true) { continue; + } else if ($code !== T_TRUE && $code !== T_FALSE) { - $goodCondition = true; + $goodcondition = true; } } - if ($goodCondition === false) { + if ($goodcondition === false) { $error = 'Avoid IF statements that are always true or false'; $phpcsfile->addwarning($error, $stackptr); } - } - - } - -?> diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php index 0ee64447a2..a4c3dbd7cc 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php @@ -42,8 +42,7 @@ * @copyright 2009 Nicolas Connault * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class moodle_sniffs_codeanalysis_unnecessaryfinalmodifiersniff implements php_codesniffer_sniff -{ +class moodle_sniffs_codeanalysis_unnecessaryfinalmodifiersniff implements php_codesniffer_sniff { /** @@ -51,10 +50,8 @@ class moodle_sniffs_codeanalysis_unnecessaryfinalmodifiersniff implements php_co * * @return array(integer) */ - public function register() - { + public function register() { return array(T_CLASS); - } @@ -67,8 +64,7 @@ class moodle_sniffs_codeanalysis_unnecessaryfinalmodifiersniff implements php_co * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -89,15 +85,11 @@ class moodle_sniffs_codeanalysis_unnecessaryfinalmodifiersniff implements php_co $end = --$token['scope_closer']; for (; $next <= $end; ++$next) { + if ($tokens[$next]['code'] === T_FINAL) { $error = 'Unnecessary FINAL modifier in FINAL class'; $phpcsfile->addwarning($error, $next); } } - } - - } - -?> diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php index c9e00c5307..17338a90a8 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php @@ -35,8 +35,7 @@ * @copyright 2009 Nicolas Connault * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_codesniffer_sniff -{ +class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_codesniffer_sniff { /** @@ -44,10 +43,8 @@ class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_cod * * @return array */ - public function register() - { + public function register() { return array(T_FUNCTION); - } @@ -60,8 +57,7 @@ class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_cod * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -71,6 +67,7 @@ class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_cod } $params = array(); + foreach ($phpcsfile->getmethodparameters($stackptr) as $param) { $params[$param['name']] = $stackptr; } @@ -78,7 +75,7 @@ class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_cod $next = ++$token['scope_opener']; $end = --$token['scope_closer']; - $emptyBody = true; + $emptybody = true; for (; $next <= $end; ++$next) { $token = $tokens[$next]; @@ -87,12 +84,15 @@ class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_cod // Ingorable tokens. if (in_array($code, PHP_CodeSniffer_tokens::$emptyTokens) === true) { continue; - } else if ($code === T_THROW && $emptyBody === true) { + + } else if ($code === T_THROW && $emptybody === true) { // Throw statement and an empty body indicate an interface method. return; - } else if ($code === T_RETURN && $emptyBody === true) { + + } else if ($code === T_RETURN && $emptybody === true) { // Return statement and an empty body indicate an interface method. $tmp = $phpcsfile->findnext(PHP_CodeSniffer_tokens::$emptyTokens, ($next + 1), null, true); + if ($tmp === false) { return; } @@ -110,15 +110,17 @@ class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_cod } } - $emptyBody = false; + $emptybody = false; if ($code === T_VARIABLE && isset($params[$token['content']]) === true) { unset($params[$token['content']]); + } else if ($code === T_DOUBLE_QUOTED_STRING) { // tokenize double quote string. $strtokens = token_get_all(sprintf('', $token['content'])); foreach ($strtokens as $tok) { + if (is_array($tok) === false || $tok[0] !== T_VARIABLE ) { continue; } @@ -130,14 +132,12 @@ class moodle_sniffs_codeanalysis_unusedfunctionparametersniff implements php_cod } } - if ($emptyBody === false && count($params) > 0) { + if ($emptybody === false && count($params) > 0) { + foreach ($params as $paramname => $position) { $error = 'The method parameter '.$paramname.' is never used'; $phpcsfile->addwarning($error, $position); } } - } - - } diff --git a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php index 7730c93458..598bc77fc1 100644 --- a/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php +++ b/lib/pear/PHP/CodeSniffer/Standards/Moodle/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php @@ -50,10 +50,8 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod * * @return array(integer) */ - public function register() - { + public function register() { return array(T_FUNCTION); - } @@ -66,8 +64,7 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod * * @return void */ - public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) - { + public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) { $tokens = $phpcsfile->gettokens(); $token = $tokens[$stackptr]; @@ -77,10 +74,11 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod } // Get function name. - $methodname = $phpcsfile->getDeclarationname($stackptr); + $methodname = $phpcsfile->getdeclarationname($stackptr); // Get all parameters from method signature. $signature = array(); + foreach ($phpcsfile->getmethodparameters($stackptr) as $param) { $signature[] = $param['name']; } @@ -93,6 +91,7 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod if (in_array($code, PHP_CodeSniffer_tokens::$emptyTokens) === true) { continue; + } else if ($code === T_RETURN) { continue; } @@ -138,15 +137,19 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod $parameters = array(''); $parenthesiscount = 1; $count = count($tokens); + for (++$next; $next < $count; ++$next) { $code = $tokens[$next]['code']; if ($code === T_OPEN_PARENTHESIS) { ++$parenthesiscount; + } else if ($code === T_CLOSE_PARENTHESIS) { --$parenthesiscount; + } else if ($parenthesiscount === 1 && $code === T_COMMA) { $parameters[] = ''; + } else if (in_array($code, PHP_CodeSniffer_tokens::$emptyTokens) === false) { $parameters[(count($parameters) - 1)] .= $tokens[$next]['content']; } @@ -157,6 +160,7 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod } $next = $phpcsfile->findnext(PHP_CodeSniffer_tokens::$emptyTokens, ($next + 1), null, true); + if ($next === false || $tokens[$next]['code'] !== T_SEMICOLON) { return; } @@ -165,6 +169,7 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod for (++$next; $next <= $end; ++$next) { $code = $tokens[$next]['code']; // Skip for any other content. + if (in_array($code, PHP_CodeSniffer_tokens::$emptyTokens) === false) { return; } @@ -176,8 +181,5 @@ class moodle_sniffs_codeanalysis_uselessoverridingmethodsniff implements php_cod if (count($parameters) === count($signature) && $parameters === $signature) { $phpcsfile->addwarning('Useless method overriding detected', $stackptr); } - } - - } -- 2.39.5