Umherirrender has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/370321 )
Change subject: Enable Squiz.WhiteSpace.OperatorSpacing ...................................................................... Enable Squiz.WhiteSpace.OperatorSpacing The new sniffs are autofixable Added a test case and fix failure in this repository Bug: T171393 Change-Id: Iad652c1e767bc55d5cb8f1f2cb380e7a2ae4b003 --- M MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php M MediaWiki/Sniffs/ControlStructures/AssignmentInControlStructuresSniff.php M MediaWiki/Sniffs/NamingConventions/LowerCamelFunctionsNameSniff.php M MediaWiki/Sniffs/NamingConventions/ValidGlobalNameSniff.php M MediaWiki/Sniffs/Usage/ReferenceThisSniff.php M MediaWiki/Sniffs/WhiteSpace/MultipleEmptyLinesSniff.php M MediaWiki/Sniffs/WhiteSpace/SpaceBeforeClassBraceSniff.php M MediaWiki/Sniffs/WhiteSpace/SpaceBeforeControlStructureBraceSniff.php M MediaWiki/Sniffs/WhiteSpace/SpaceBeforeSingleLineCommentSniff.php M MediaWiki/Tests/files/Usage/goto_usage.php M MediaWiki/Tests/files/generic_fail.php M MediaWiki/Tests/files/generic_fail.php.expect M MediaWiki/Tests/files/generic_fail.php.fixed M MediaWiki/ruleset.xml 14 files changed, 88 insertions(+), 43 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/tools/codesniffer refs/changes/21/370321/1 diff --git a/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php b/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php index 443da15..4717a98 100644 --- a/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php +++ b/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php @@ -63,7 +63,7 @@ return; } $tokens = $phpcsFile->getTokens(); - $funcName = $tokens[$stackPtr+2]; + $funcName = $tokens[$stackPtr + 2]; if ( in_array( $funcName['content'], $this->skipStandardMethods ) ) { // Don't require documentation for an obvious method return; @@ -88,7 +88,7 @@ } } - $find = Tokens::$methodPrefixes; + $find = Tokens::$methodPrefixes; $find[] = T_WHITESPACE; $commentEnd = $phpcsFile->findPrevious( $find, ( $stackPtr - 1 ), null, true ); if ( $tokens[$commentEnd]['code'] === T_COMMENT ) { @@ -174,7 +174,7 @@ continue; } if ( $token['code'] === T_RETURN ) { - if ( isset( $tokens[$i+1] ) && $tokens[$i+1]['code'] === T_SEMICOLON ) { + if ( isset( $tokens[$i + 1] ) && $tokens[$i + 1]['code'] === T_SEMICOLON ) { // This is a `return;` so it doesn't need documentation continue; } @@ -256,7 +256,7 @@ continue; } $exception = null; - $comment = null; + $comment = null; if ( $tokens[( $tag + 2 )]['code'] === T_DOC_COMMENT_STRING ) { $matches = []; preg_match( '/([^\s]+)(?:\s+(.*))?/', $tokens[( $tag + 2 )]['content'], $matches ); @@ -285,38 +285,38 @@ */ protected function processParams( File $phpcsFile, $stackPtr, $commentStart ) { $tokens = $phpcsFile->getTokens(); - $params = []; + $params = []; $maxType = 0; - $maxVar = 0; + $maxVar = 0; foreach ( $tokens[$commentStart]['comment_tags'] as $pos => $tag ) { if ( $tokens[$tag]['content'] !== '@param' ) { continue; } - $type = ''; + $type = ''; $typeSpace = 0; - $var = ''; - $varSpace = 0; - $comment = ''; + $var = ''; + $varSpace = 0; + $comment = ''; if ( $tokens[( $tag + 2 )]['code'] === T_DOC_COMMENT_STRING ) { $matches = []; preg_match( '/([^$&.]+)(?:((?:\.\.\.)?(?:\$|&)[^\s]+)(?:(\s+)(.*))?)?/', $tokens[( $tag + 2 )]['content'], $matches ); - $typeLen = strlen( $matches[1] ); - $type = trim( $matches[1] ); + $typeLen = strlen( $matches[1] ); + $type = trim( $matches[1] ); $typeSpace = ( $typeLen - strlen( $type ) ); - $typeLen = strlen( $type ); + $typeLen = strlen( $type ); if ( $typeLen > $maxType ) { $maxType = $typeLen; } if ( isset( $matches[2] ) === true ) { - $var = $matches[2]; + $var = $matches[2]; $varLen = strlen( $var ); if ( $varLen > $maxVar ) { $maxVar = $varLen; } if ( isset( $matches[4] ) === true ) { $varSpace = strlen( $matches[3] ); - $comment = $matches[4]; + $comment = $matches[4]; // Any strings until the next tag belong to this comment. if ( isset( $tokens[$commentStart]['comment_tags'][( $pos + 1 )] ) === true ) { $end = $tokens[$commentStart]['comment_tags'][( $pos + 1 )]; @@ -343,16 +343,16 @@ } // end if $params[] = [ - 'tag' => $tag, - 'type' => $type, - 'var' => $var, - 'comment' => $comment, + 'tag' => $tag, + 'type' => $type, + 'var' => $var, + 'comment' => $comment, 'type_space' => $typeSpace, - 'var_space' => $varSpace, + 'var_space' => $varSpace, ]; } // end foreach - $realParams = $phpcsFile->getMethodParameters( $stackPtr ); + $realParams = $phpcsFile->getMethodParameters( $stackPtr ); $foundParams = []; // We want to use ... for all variable length arguments, so added // this prefix to the variable name so comparisons are easier. @@ -374,13 +374,13 @@ $spaces = 1; if ( $param['type_space'] !== $spaces ) { $error = 'Expected %s spaces after parameter type; %s found'; - $data = [ + $data = [ $spaces, $param['type_space'], ]; $fix = $phpcsFile->addFixableError( $error, $param['tag'], 'SpacingAfterParamType', $data ); if ( $fix === true ) { - $content = $param['type']; + $content = $param['type']; $content .= str_repeat( ' ', $spaces ); $content .= $param['var']; $content .= str_repeat( ' ', $param['var_space'] ); @@ -400,7 +400,7 @@ $error = 'Doc comment for parameter %s does not match '; if ( strtolower( $param['var'] ) === strtolower( $realName ) ) { $error .= 'case of '; - $code = 'ParamNameNoCaseMatch'; + $code = 'ParamNameNoCaseMatch'; } $error .= 'actual variable name %s'; $phpcsFile->addError( $error, $param['tag'], $code, $data ); @@ -420,13 +420,13 @@ if ( $param['var_space'] !== $spaces && ltrim( $param['comment'] ) !== '' ) { $error = 'Expected %s spaces after parameter name; %s found'; - $data = [ + $data = [ $spaces, $param['var_space'], ]; $fix = $phpcsFile->addFixableError( $error, $param['tag'], 'SpacingAfterParamName', $data ); if ( $fix === true ) { - $content = $param['type']; + $content = $param['type']; $content .= str_repeat( ' ', $param['type_space'] ); $content .= $param['var']; $content .= str_repeat( ' ', $spaces ); @@ -444,7 +444,7 @@ $diff = array_diff( $realNames, $foundParams ); foreach ( $diff as $neededParam ) { $error = 'Doc comment for parameter "%s" missing'; - $data = [ $neededParam ]; + $data = [ $neededParam ]; $phpcsFile->addError( $error, $commentStart, 'MissingParamTag', $data ); } } diff --git a/MediaWiki/Sniffs/ControlStructures/AssignmentInControlStructuresSniff.php b/MediaWiki/Sniffs/ControlStructures/AssignmentInControlStructuresSniff.php index 754caa2..31cdabc 100644 --- a/MediaWiki/Sniffs/ControlStructures/AssignmentInControlStructuresSniff.php +++ b/MediaWiki/Sniffs/ControlStructures/AssignmentInControlStructuresSniff.php @@ -36,10 +36,10 @@ */ public function process( File $phpcsFile, $stackPtr ) { $tokens = $phpcsFile->getTokens(); - $token = $tokens[$stackPtr]; + $token = $tokens[$stackPtr]; $next = $token['parenthesis_opener'] + 1; - $end = $token['parenthesis_closer']; + $end = $token['parenthesis_closer']; while ( $next < $end ) { $code = $tokens[$next]['code']; // Check if any assignment operator was used. Allow T_DOUBLE_ARROW as that can diff --git a/MediaWiki/Sniffs/NamingConventions/LowerCamelFunctionsNameSniff.php b/MediaWiki/Sniffs/NamingConventions/LowerCamelFunctionsNameSniff.php index 0b09cc0..63c2d5e 100644 --- a/MediaWiki/Sniffs/NamingConventions/LowerCamelFunctionsNameSniff.php +++ b/MediaWiki/Sniffs/NamingConventions/LowerCamelFunctionsNameSniff.php @@ -66,7 +66,7 @@ */ public function process( File $phpcsFile, $stackPtr ) { $tokens = $phpcsFile->getTokens(); - $functionContent = $tokens[$stackPtr+2]['content']; + $functionContent = $tokens[$stackPtr + 2]['content']; $lowerFunctionName = strtolower( $functionContent ); foreach ( $tokens[$stackPtr]['conditions'] as $scope => $code ) { if ( isset( self::$scopeList[$code] ) === true && diff --git a/MediaWiki/Sniffs/NamingConventions/ValidGlobalNameSniff.php b/MediaWiki/Sniffs/NamingConventions/ValidGlobalNameSniff.php index 27c1ae5..894bf63 100644 --- a/MediaWiki/Sniffs/NamingConventions/ValidGlobalNameSniff.php +++ b/MediaWiki/Sniffs/NamingConventions/ValidGlobalNameSniff.php @@ -48,8 +48,8 @@ public function process( File $phpcsFile, $stackPtr ) { $tokens = $phpcsFile->getTokens(); - $nameIndex = $phpcsFile->findNext( T_VARIABLE, $stackPtr + 1 ); - $semicolonIndex = $phpcsFile->findNext( T_SEMICOLON, $stackPtr + 1 ); + $nameIndex = $phpcsFile->findNext( T_VARIABLE, $stackPtr + 1 ); + $semicolonIndex = $phpcsFile->findNext( T_SEMICOLON, $stackPtr + 1 ); while ( $nameIndex < $semicolonIndex ) { if ( $tokens[ $nameIndex ][ 'code' ] !== T_WHITESPACE diff --git a/MediaWiki/Sniffs/Usage/ReferenceThisSniff.php b/MediaWiki/Sniffs/Usage/ReferenceThisSniff.php index 97e3b0f..05267e1 100644 --- a/MediaWiki/Sniffs/Usage/ReferenceThisSniff.php +++ b/MediaWiki/Sniffs/Usage/ReferenceThisSniff.php @@ -46,7 +46,7 @@ */ public function process( File $phpcsFile, $stackPtr ) { $tokens = $phpcsFile->getTokens(); - $next = $tokens[$stackPtr+1]; + $next = $tokens[$stackPtr + 1]; if ( $next['code'] === T_VARIABLE && $next['content'] === '$this' ) { $after = $phpcsFile->findNext( T_WHITESPACE, $stackPtr + 2, null, true ); if ( $after !== false && diff --git a/MediaWiki/Sniffs/WhiteSpace/MultipleEmptyLinesSniff.php b/MediaWiki/Sniffs/WhiteSpace/MultipleEmptyLinesSniff.php index 709aebf..001920d 100644 --- a/MediaWiki/Sniffs/WhiteSpace/MultipleEmptyLinesSniff.php +++ b/MediaWiki/Sniffs/WhiteSpace/MultipleEmptyLinesSniff.php @@ -42,7 +42,7 @@ // If the next non T_WHITESPACE token is more than 1 line away, // then there were multiple empty lines. $error = 'Multiple empty lines should not exist in a row; found %s consecutive empty lines'; - $fix = $phpcsFile->addFixableError( + $fix = $phpcsFile->addFixableError( $error, $stackPtr, 'MultipleEmptyLines', diff --git a/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeClassBraceSniff.php b/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeClassBraceSniff.php index 5eca1d8..13b3db5 100644 --- a/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeClassBraceSniff.php +++ b/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeClassBraceSniff.php @@ -36,7 +36,7 @@ } $openBrace = $tokens[$stackPtr]['scope_opener']; // Find previous non-whitespace token from the opening brace - $pre = $phpcsFile->findPrevious( T_WHITESPACE, ( $openBrace -1 ), null, true ); + $pre = $phpcsFile->findPrevious( T_WHITESPACE, ( $openBrace - 1 ), null, true ); if ( $tokens[$openBrace]['line'] - $tokens[$stackPtr]['line'] >= 2 ) { // If the class ... { statement is more than two lines, then diff --git a/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeControlStructureBraceSniff.php b/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeControlStructureBraceSniff.php index 8231a90..2100461 100644 --- a/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeControlStructureBraceSniff.php +++ b/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeControlStructureBraceSniff.php @@ -79,7 +79,7 @@ $tokens = $phpcsFile->getTokens(); $phpcsFile->recordMetric( $stackPtr, 'Control Structs opening brace placement', 'new line' ); $error = 'Opening brace should be on the same line as the declaration'; - $fix = $phpcsFile->addFixableError( $error, $openBrace, 'BraceOnNewLine' ); + $fix = $phpcsFile->addFixableError( $error, $openBrace, 'BraceOnNewLine' ); if ( $fix === true ) { $phpcsFile->fixer->beginChangeset(); $i = $closeBracket + 1; diff --git a/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeSingleLineCommentSniff.php b/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeSingleLineCommentSniff.php index 2e32476..68b1a49 100644 --- a/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeSingleLineCommentSniff.php +++ b/MediaWiki/Sniffs/WhiteSpace/SpaceBeforeSingleLineCommentSniff.php @@ -27,7 +27,7 @@ public function process( File $phpcsFile, $stackPtr ) { $tokens = $phpcsFile->getTokens(); $currToken = $tokens[$stackPtr]; - $preToken = $phpcsFile->findPrevious( T_WHITESPACE, $stackPtr-1, null, true ); + $preToken = $phpcsFile->findPrevious( T_WHITESPACE, $stackPtr - 1, null, true ); if ( $preToken !== false && $tokens[$preToken]['line'] === $tokens[$stackPtr]['line'] ) { @@ -35,7 +35,7 @@ 'Comments should start on new line.', $stackPtr, 'NewLineComment' - ); + ); } if ( $currToken['code'] === T_COMMENT ) { // Accounting for multiple line comments, as single line comments diff --git a/MediaWiki/Tests/files/Usage/goto_usage.php b/MediaWiki/Tests/files/Usage/goto_usage.php index 5154bd9..0ddf5c6 100644 --- a/MediaWiki/Tests/files/Usage/goto_usage.php +++ b/MediaWiki/Tests/files/Usage/goto_usage.php @@ -5,7 +5,7 @@ * @return void */ function wfFailedExamples() { - for ( $i=0; $i < 20; $i++ ) { + for ( $i = 0; $i < 20; $i++ ) { if ( $i == 15 ) { goto endloop; } @@ -19,7 +19,7 @@ * @return void */ function wfPassedExamples() { - for ( $i=0; $i < 20; $i++ ) { + for ( $i = 0; $i < 20; $i++ ) { if ( $i == 15 ) { break; } diff --git a/MediaWiki/Tests/files/generic_fail.php b/MediaWiki/Tests/files/generic_fail.php index cb38983..bbdc410 100644 --- a/MediaWiki/Tests/files/generic_fail.php +++ b/MediaWiki/Tests/files/generic_fail.php @@ -15,3 +15,5 @@ Foo::doStuff(); } } + +$s = $sum/( ( 1<<16 )-1 )+2*-1*3-4^3%10; diff --git a/MediaWiki/Tests/files/generic_fail.php.expect b/MediaWiki/Tests/files/generic_fail.php.expect index de41f0c..39c50ba 100644 --- a/MediaWiki/Tests/files/generic_fail.php.expect +++ b/MediaWiki/Tests/files/generic_fail.php.expect @@ -10,5 +10,43 @@ | | (Generic.PHP.BacktickOperator.Found) 15 | ERROR | [x] Must use "self::" for local static member reference | | (Squiz.Classes.SelfMemberReference.NotUsed) + 19 | ERROR | [x] Expected 1 space after "="; 2 found + | | (Squiz.WhiteSpace.OperatorSpacing.SpacingAfter) + 19 | ERROR | [x] Expected 1 space before "/"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "/"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "<<"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "<<"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "-"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "-"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "+"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "+"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "*"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "*"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "*"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "*"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "-"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "-"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "^"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "^"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) + 19 | ERROR | [x] Expected 1 space before "%"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceBefore) + 19 | ERROR | [x] Expected 1 space after "%"; 0 found + | | (Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfter) -PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY +PHPCBF CAN FIX THE 20 MARKED SNIFF VIOLATIONS AUTOMATICALLY diff --git a/MediaWiki/Tests/files/generic_fail.php.fixed b/MediaWiki/Tests/files/generic_fail.php.fixed index c65c443..cd0a4cb 100644 --- a/MediaWiki/Tests/files/generic_fail.php.fixed +++ b/MediaWiki/Tests/files/generic_fail.php.fixed @@ -15,3 +15,5 @@ self::doStuff(); } } + +$s = $sum / ( ( 1 << 16 ) - 1 ) + 2 * -1 * 3 - 4 ^ 3 % 10; diff --git a/MediaWiki/ruleset.xml b/MediaWiki/ruleset.xml index e0289be..b12a7da 100644 --- a/MediaWiki/ruleset.xml +++ b/MediaWiki/ruleset.xml @@ -102,8 +102,11 @@ ->quux(); <rule ref="Squiz.WhiteSpace.ObjectOperatorSpacing" /> --> - <!-- There is no consensus on how to apply this rule, so disabled --> - <!--rule ref="Squiz.WhiteSpace.OperatorSpacing" /--> + <rule ref="Squiz.WhiteSpace.OperatorSpacing"> + <properties> + <property name="ignoreNewlines" value="true" /> + </properties> + </rule> <rule ref="Squiz.WhiteSpace.ScopeClosingBrace" /> <rule ref="Squiz.WhiteSpace.ScopeKeywordSpacing" /> <rule ref="Squiz.WhiteSpace.SemicolonSpacing" /> -- To view, visit https://gerrit.wikimedia.org/r/370321 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iad652c1e767bc55d5cb8f1f2cb380e7a2ae4b003 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/tools/codesniffer Gerrit-Branch: master Gerrit-Owner: Umherirrender <umherirrender_de...@web.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits