Skip to content

Commit

Permalink
Extra: Replace Squiz.Scope.MemberVarScope with `PSR2.Classes.Proper…
Browse files Browse the repository at this point in the history
…tyDeclaration`

PR 1103 added the `Squiz.Scope.MemberVarScope` sniff to the `WordPress-Extra` ruleset which checks that all class properties have their visibility declared.

The upstream `PSR2.Classes.PropertyDeclaration` sniff also does this, however it contains more extensive checks.
In addition to checking for the visibility of properties being declared, this sniff also checks:
* That property names are not prefixed with an underscore `_` to indicate visibility.
    _For methods, we already check this in the `Extra` ruleset via the `PSR2.Methods.MethodDeclaration` sniff._
* That the `var` keyword is not used for property declarations.
    This could be considered a duplicate check with the "use visibility" check.
* That each property declaration statement only declares one property, i.e. it forbids the use of code like this:
    ```php
    public $prop1 = true,
        $prop2 = '',
        $prop3 = 123;
    ```
    As there is no precedent or reference to this type of property declarations in the handbook or elsewhere in the various rulesets, I'm not sure that we're ready to take a stand on this type of coding, so I've **excluded** this particular error code for now.
* As of PHPCS 3.4.0: that the order of the property keywords is `visibility static`, not `static visibility` (includes fixer).
    _For methods, we already check this in the `Extra` ruleset via the `PSR2.Methods.MethodDeclaration` sniff._

All in all, using the `PSR2` sniff is more in line with the checks we already have in place for methods, so IMO, this seemed like a good change to make.
  • Loading branch information
jrfnl committed Dec 23, 2018
1 parent 1e920a4 commit 470f7b5
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion WordPress-Extra/ruleset.xml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@
<!-- Verify modifier keywords for declared methods and properties in classes.
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1101 -->
<rule ref="Squiz.Scope.MethodScope"/>
<rule ref="Squiz.Scope.MemberVarScope"/>
<rule ref="PSR2.Classes.PropertyDeclaration">
<exclude name="PSR2.Classes.PropertyDeclaration.Multiple"/>
</rule>
<rule ref="Squiz.WhiteSpace.ScopeKeywordSpacing"/>
<rule ref="PSR2.Methods.MethodDeclaration"/>
<rule ref="PSR2.Methods.MethodDeclaration.Underscore">
Expand Down

0 comments on commit 470f7b5

Please sign in to comment.