Lethexie has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/293966

Change subject: Make sure no empty line at the begin of the function.
......................................................................

Make sure no empty line at the begin of the function.

After fixing the sing whitespace between open brace
and close parenthesis, unexpect empty line found. To
make the code clean,no empty line at the begin of
function.

Test examples at
Test/WhiteSpace/empty_line_begin_function_fail.php
Test/WhiteSpace/empty_line_begin_function_pass.php

Change-Id: Ib799f87fb9c57399e5175e3ad3d6f9cdbc51011f
---
M MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php
M MediaWiki/Sniffs/NamingConventions/PrefixedGlobalFunctionsSniff.php
A MediaWiki/Sniffs/WhiteSpace/DisallowEmptyLineFunctionsSniff.php
M 
MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php
M 
MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php.fixed
M 
MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_pass.php
M 
MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_fail.php
M 
MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_pass.php
M MediaWiki/Tests/files/NamingConventions/wf_global_function_fail.php
M MediaWiki/Tests/files/NamingConventions/wf_global_function_pass.php
A MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php
A MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.expect
A MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.fixed
A MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php
A MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php.expect
15 files changed, 103 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/tools/codesniffer 
refs/changes/66/293966/1

diff --git a/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php 
b/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php
index 3c2b473..9ce631b 100644
--- a/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php
+++ b/MediaWiki/Sniffs/Commenting/FunctionCommentSniff.php
@@ -25,7 +25,6 @@
         * @return array
         */
        public function register() {
-
                return [ T_FUNCTION ];
        }// end register()
 
@@ -39,7 +38,6 @@
         * @return void
         */
        public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) {
-
                $tokens = $phpcsFile->getTokens();
                $find   = PHP_CodeSniffer_Tokens::$methodPrefixes;
                $find[] = T_WHITESPACE;
@@ -98,7 +96,6 @@
         * @return void
         */
        protected function processReturn( PHP_CodeSniffer_File $phpcsFile, 
$stackPtr, $commentStart ) {
-
                $tokens = $phpcsFile->getTokens();
                // Skip constructor and destructor.
                $methodName      = $phpcsFile->getDeclarationName( $stackPtr );
@@ -139,7 +136,6 @@
         * @return void
         */
        protected function processThrows( PHP_CodeSniffer_File $phpcsFile, 
$stackPtr, $commentStart ) {
-
                $tokens = $phpcsFile->getTokens();
                $throws = [];
                foreach ( $tokens[$commentStart]['comment_tags'] as $tag ) {
@@ -173,7 +169,6 @@
         * @return void
         */
        protected function processParams( PHP_CodeSniffer_File $phpcsFile, 
$stackPtr, $commentStart ) {
-
                $tokens = $phpcsFile->getTokens();
                $params  = [];
                $maxType = 0;
diff --git 
a/MediaWiki/Sniffs/NamingConventions/PrefixedGlobalFunctionsSniff.php 
b/MediaWiki/Sniffs/NamingConventions/PrefixedGlobalFunctionsSniff.php
index 84b5107..4e936fb 100644
--- a/MediaWiki/Sniffs/NamingConventions/PrefixedGlobalFunctionsSniff.php
+++ b/MediaWiki/Sniffs/NamingConventions/PrefixedGlobalFunctionsSniff.php
@@ -16,7 +16,6 @@
         * @return array
         */
        public function register() {
-
                return [ T_FUNCTION ];
        }
 
@@ -37,7 +36,6 @@
         * @return bool Does a namespace statement exist before this position 
in the file?
         */
        private function tokenIsNamespaced( PHP_CodeSniffer_File $phpcsFile, 
$ptr ) {
-
                $fileName = $phpcsFile->getFilename();
                // Check if we already know if the token is namespaced or not 
and return early if possible.
                if (
@@ -81,7 +79,6 @@
         * @return void
         */
        public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) {
-
                if ( $this->tokenIsNamespaced( $phpcsFile, $stackPtr ) ) {
                        return;
                }
diff --git a/MediaWiki/Sniffs/WhiteSpace/DisallowEmptyLineFunctionsSniff.php 
b/MediaWiki/Sniffs/WhiteSpace/DisallowEmptyLineFunctionsSniff.php
new file mode 100644
index 0000000..9f892ee
--- /dev/null
+++ b/MediaWiki/Sniffs/WhiteSpace/DisallowEmptyLineFunctionsSniff.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Disallow empty line at the begin of function.
+ */
+// @codingStandardsIgnoreStart
+class MediaWiki_Sniffs_WhiteSpace_DisallowEmptyLineFunctionsSniff
+       implements PHP_CodeSniffer_Sniff {
+       // @codingStandardsIgnoreEnd
+
+       /**
+        * @return array
+        */
+       public function register() {
+               return [
+                       T_FUNCTION
+               ];
+       }
+
+       /**
+        * @param PHP_CodeSniffer_File $phpcsFile PHP_CodeSniffer_File object.
+        * @param int $stackPtr The current token index.
+        * @return void
+        */
+       public function process( PHP_CodeSniffer_File $phpcsFile, $stackPtr ) {
+               $tokens = $phpcsFile->getTokens();
+               $current = $tokens[$stackPtr];
+               if ( isset( $current['scope_opener'] ) === false ||
+                       isset( $current['parenthesis_closer'] ) === false
+               ) {
+                       return;
+               }
+               $openBrace = $current['scope_opener'];
+               $next = $phpcsFile->findNext( T_WHITESPACE, $openBrace + 1, 
null, true );
+               if ( $next === false ) {
+                       return;
+               }
+               if ( $tokens[$next]['line'] > ( $tokens[$openBrace]['line'] + 1 
) ) {
+                       $error = 'Unexpected empty line at the begin of 
function.';
+                       $fix = $phpcsFile->addFixableError(
+                               $error,
+                               $stackPtr,
+                               'NoEmptyLine'
+                       );
+                       if ( $fix === true ) {
+                               $phpcsFile->fixer->beginChangeset();
+                               $i = $openBrace + 1;
+                               while ( $tokens[$i]['line'] !== 
$tokens[$next]['line'] ) {
+                                       $phpcsFile->fixer->replaceToken( $i, '' 
);
+                                       $i++;
+                               }
+                               $phpcsFile->fixer->addNewlineBefore( $i );
+                               $phpcsFile->fixer->endChangeset();
+                       }
+               }
+       }
+}
diff --git 
a/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php
 
b/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php
index a9656b2..528d940 100644
--- 
a/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php
+++ 
b/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php
@@ -4,7 +4,7 @@
  * @return void
  */
 function wfFoo() {
-
+       # code...
 }
 ?>
 T<?php //this php open tag will in any case be ignored
diff --git 
a/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php.fixed
 
b/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php.fixed
index 48654da..2267ec2 100644
--- 
a/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php.fixed
+++ 
b/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_fail.php.fixed
@@ -4,7 +4,7 @@
  * @return void
  */
 function wfFoo() {
-
+       # code...
 }
 ?>
 T<?php // this php open tag will in any case be ignored
diff --git 
a/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_pass.php
 
b/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_pass.php
index 9502848..3ca7188 100644
--- 
a/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_pass.php
+++ 
b/MediaWiki/Tests/files/ExtraCharacters/extra_characters_before_phpopen_tag_pass.php
@@ -4,7 +4,7 @@
  * @return void
  */
 function wfFoo() {
-
+       # code...
 }
 ?>
 T<?php // this php open tag will in any case be ignored
diff --git 
a/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_fail.php
 
b/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_fail.php
index 13d37d3..dc3a0e3 100644
--- 
a/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_fail.php
+++ 
b/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_fail.php
@@ -6,5 +6,5 @@
  * @return void
  */
 function wfFoo() {
-
+       # code...
 }
diff --git 
a/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_pass.php
 
b/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_pass.php
index edf783c..f4264f4 100644
--- 
a/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_pass.php
+++ 
b/MediaWiki/Tests/files/ExtraCharacters/valid_shebang_before_phpopen_tag_pass.php
@@ -5,5 +5,5 @@
  * @return void
  */
 function wfFoo() {
-
+       # code...
 }
diff --git 
a/MediaWiki/Tests/files/NamingConventions/wf_global_function_fail.php 
b/MediaWiki/Tests/files/NamingConventions/wf_global_function_fail.php
index 9362217..ab86837 100644
--- a/MediaWiki/Tests/files/NamingConventions/wf_global_function_fail.php
+++ b/MediaWiki/Tests/files/NamingConventions/wf_global_function_fail.php
@@ -4,5 +4,5 @@
  * @return void
  */
 function foo() {
-
+       # code...
 }
diff --git 
a/MediaWiki/Tests/files/NamingConventions/wf_global_function_pass.php 
b/MediaWiki/Tests/files/NamingConventions/wf_global_function_pass.php
index abf159f..de75519 100644
--- a/MediaWiki/Tests/files/NamingConventions/wf_global_function_pass.php
+++ b/MediaWiki/Tests/files/NamingConventions/wf_global_function_pass.php
@@ -4,5 +4,5 @@
  * @return void
  */
 function wfFoo() {
-
+       # code...
 }
diff --git 
a/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php 
b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php
new file mode 100644
index 0000000..b68f200
--- /dev/null
+++ b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * Failed examples.
+ * @return void
+ */
+function wfFailedExamples() {
+
+       # code...
+}
diff --git 
a/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.expect 
b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.expect
new file mode 100644
index 0000000..1a649a1
--- /dev/null
+++ b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.expect
@@ -0,0 +1,12 @@
+
+FILE: ...iaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php
+----------------------------------------------------------------------
+FOUND 1 ERROR AFFECTING 1 LINE
+----------------------------------------------------------------------
+ 7 | ERROR | [x] Unexpected empty line at the begin of function.
+----------------------------------------------------------------------
+PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
+----------------------------------------------------------------------
+
+Time: 15ms; Memory: 3.25Mb
+
diff --git 
a/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.fixed 
b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.fixed
new file mode 100644
index 0000000..68b0956
--- /dev/null
+++ b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_fail.php.fixed
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * Failed examples.
+ * @return void
+ */
+function wfFailedExamples() {
+       # code...
+}
diff --git 
a/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php 
b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php
new file mode 100644
index 0000000..eaf6b49
--- /dev/null
+++ b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * Passed examples.
+ * @return void
+ */
+function wfPassedExamples() {
+       # code...
+}
diff --git 
a/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php.expect 
b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php.expect
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MediaWiki/Tests/files/WhiteSpace/empty_line_begin_function_pass.php.expect

-- 
To view, visit https://gerrit.wikimedia.org/r/293966
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib799f87fb9c57399e5175e3ad3d6f9cdbc51011f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/tools/codesniffer
Gerrit-Branch: master
Gerrit-Owner: Lethexie <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to