mirror of
https://gh.wpcy.net/https://github.com/WordPress/WordPress-Coding-Standards.git
synced 2026-05-05 07:13:20 +08:00
While this sniff analyses comments, it is *not* a documentation related sniff, but rather a best practice sniff, so IMO, it should be in the `Extra` ruleset, not in the `Docs` ruleset. The PHPCS default for the `maxPercentage` property is 35%. This was previously upped in WPCS to 45% to prevent false positives for the `// End ...` comments. However, as that rule and the associated sniff, have been removed, a lower value should be fine. As a test case, I've ran the sniff over the `wp-admin` directory of WP Core and it looks like 40% should strike a good balance. * Some of what was found in core was correctly identified commented out. * Some were `// end` comments which should probably be removed. * Some were just very non-descriptive inline comments which should be improved. If needs be, we can tinker with the `maxPercentage` number a bit more in the future if we receive reports of false positives.
206 lines
8.8 KiB
XML
206 lines
8.8 KiB
XML
<?xml version="1.0"?>
|
|
<ruleset name="WordPress Extra">
|
|
<description>Best practices beyond core WordPress Coding Standards</description>
|
|
|
|
<autoload>./../WordPress/PHPCSAliases.php</autoload>
|
|
|
|
<rule ref="WordPress-Core"/>
|
|
|
|
<!-- Generic PHP best practices.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/382 -->
|
|
<rule ref="Generic.PHP.DeprecatedFunctions"/>
|
|
<rule ref="Generic.PHP.ForbiddenFunctions"/>
|
|
<rule ref="Generic.Functions.CallTimePassByReference"/>
|
|
<rule ref="Generic.CodeAnalysis.EmptyStatement"/>
|
|
<rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop"/>
|
|
<rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall"/>
|
|
<rule ref="Generic.CodeAnalysis.JumbledIncrementer"/>
|
|
<rule ref="Generic.CodeAnalysis.UnconditionalIfStatement"/>
|
|
<rule ref="Generic.CodeAnalysis.UnnecessaryFinalModifier"/>
|
|
<rule ref="Generic.CodeAnalysis.UselessOverridingMethod"/>
|
|
<rule ref="Generic.Classes.DuplicateClassName"/>
|
|
<rule ref="Generic.Strings.UnnecessaryStringConcat">
|
|
<properties>
|
|
<property name="allowMultiline" value="true"/>
|
|
</properties>
|
|
</rule>
|
|
|
|
<!-- Duplicate of upstream. Can be removed once minimum PHPCS requirement has gone up.
|
|
https://github.com/squizlabs/PHP_CodeSniffer/pull/1594 -->
|
|
<rule ref="WordPress.CodeAnalysis.AssignmentInCondition"/>
|
|
|
|
<!-- More generic PHP best practices.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/607 -->
|
|
<rule ref="Squiz.PHP.NonExecutableCode"/>
|
|
<rule ref="Squiz.Operators.IncrementDecrementUsage"/>
|
|
<rule ref="Squiz.Operators.ValidLogicalOperators"/>
|
|
<rule ref="Squiz.Functions.FunctionDuplicateArgument"/>
|
|
|
|
<!-- And even more generic PHP best practices.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/809 -->
|
|
<rule ref="Squiz.PHP.DisallowSizeFunctionsInLoops"/>
|
|
|
|
<!-- And yet more best practices.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1143 -->
|
|
<rule ref="PEAR.Files.IncludingFile"/>
|
|
<rule ref="PEAR.Files.IncludingFile.UseInclude">
|
|
<severity>0</severity>
|
|
</rule>
|
|
<rule ref="PEAR.Files.IncludingFile.UseIncludeOnce">
|
|
<severity>0</severity>
|
|
</rule>
|
|
<rule ref="PEAR.Files.IncludingFile.BracketsNotRequired">
|
|
<type>warning</type>
|
|
</rule>
|
|
<rule ref="PEAR.Files.IncludingFile.UseRequire">
|
|
<type>warning</type>
|
|
</rule>
|
|
<rule ref="PEAR.Files.IncludingFile.UseRequireOnce">
|
|
<type>warning</type>
|
|
</rule>
|
|
|
|
<!-- Check correct spacing of language constructs. This also ensures that the
|
|
above rule for not using brackets with require is fixed correctly.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1153 -->
|
|
<rule ref="Squiz.WhiteSpace.LanguageConstructSpacing"/>
|
|
|
|
<!-- Hook callbacks may not use all params -->
|
|
<!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/382#discussion_r29981655 -->
|
|
<!--<rule ref="Generic.CodeAnalysis.UnusedFunctionParameter"/>-->
|
|
|
|
<!-- Encourage having only one class/interface/trait per file. -->
|
|
<!-- Once the minimum WPCS PHPCS requirement has gone up to PHPCS 3.1.0, these three sniffs can be
|
|
replaced by the more comprehensive Generic.Files.OneObjectStructurePerFile sniff. -->
|
|
<rule ref="Generic.Files.OneClassPerFile"/>
|
|
<rule ref="Generic.Files.OneClassPerFile.MultipleFound">
|
|
<type>warning</type>
|
|
<message>Best practice suggestion: Declare only one class in a file.</message>
|
|
</rule>
|
|
<rule ref="Generic.Files.OneInterfacePerFile"/>
|
|
<rule ref="Generic.Files.OneInterfacePerFile.MultipleFound">
|
|
<type>warning</type>
|
|
<message>Best practice suggestion: Declare only one interface in a file.</message>
|
|
</rule>
|
|
<rule ref="Generic.Files.OneTraitPerFile"/>
|
|
<rule ref="Generic.Files.OneTraitPerFile.MultipleFound">
|
|
<type>warning</type>
|
|
<message>Best practice suggestion: Declare only one trait in a file.</message>
|
|
</rule>
|
|
|
|
<!-- 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="Squiz.WhiteSpace.ScopeKeywordSpacing"/>
|
|
<rule ref="PSR2.Methods.MethodDeclaration"/>
|
|
<rule ref="PSR2.Methods.MethodDeclaration.Underscore">
|
|
<type>warning</type>
|
|
</rule>
|
|
|
|
<!-- Warn against using fully-qualified class names instead of the self keyword. -->
|
|
<rule ref="Squiz.Classes.SelfMemberReference.NotUsed">
|
|
<!-- Restore default severity of 5 which WordPress-Core sets to 0. -->
|
|
<severity>5</severity>
|
|
</rule>
|
|
|
|
<rule ref="WordPress.Security.EscapeOutput"/>
|
|
|
|
<!-- Encourage use of wp_safe_redirect() to avoid open redirect vulnerabilities.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/1264 -->
|
|
<rule ref="WordPress.Security.SafeRedirect"/>
|
|
|
|
<!-- Verify that a nonce check is done before using values in superglobals.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/73 -->
|
|
<rule ref="WordPress.Security.NonceVerification"/>
|
|
|
|
<rule ref="WordPress.PHP.DevelopmentFunctions"/>
|
|
<rule ref="WordPress.PHP.DiscouragedPHPFunctions"/>
|
|
<rule ref="WordPress.WP.DeprecatedFunctions"/>
|
|
<rule ref="WordPress.WP.DeprecatedClasses"/>
|
|
<rule ref="WordPress.WP.DeprecatedParameters"/>
|
|
<rule ref="WordPress.WP.DeprecatedParameterValues"/>
|
|
<rule ref="WordPress.WP.AlternativeFunctions"/>
|
|
<rule ref="WordPress.WP.DiscouragedConstants"/>
|
|
<rule ref="WordPress.WP.DiscouragedFunctions"/>
|
|
|
|
<!-- Scripts & style should be enqueued.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/35 -->
|
|
<rule ref="WordPress.WP.EnqueuedResources"/>
|
|
|
|
<!-- Warn against overriding WP global variables.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/26 -->
|
|
<rule ref="WordPress.WP.GlobalVariablesOverride"/>
|
|
|
|
<!-- Encourage the use of strict ( === and !== ) comparisons.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/242 -->
|
|
<rule ref="WordPress.PHP.StrictComparisons"/>
|
|
|
|
<!-- Check that in_array() and array_search() use strict comparisons.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/399
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/503 -->
|
|
<rule ref="WordPress.PHP.StrictInArray"/>
|
|
|
|
<!-- Check enqueue and register styles and scripts to have version and in_footer parameters explicitly set.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1146 -->
|
|
<rule ref="WordPress.WP.EnqueuedResourceParameters"/>
|
|
|
|
<!-- Discourage use of the backtick operator (execution of shell commands).
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/646 -->
|
|
<rule ref="Generic.PHP.BacktickOperator"/>
|
|
|
|
<!-- Check for PHP Parse errors.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/522 -->
|
|
<rule ref="Generic.PHP.Syntax"/>
|
|
|
|
<!-- Make the translators comment check which is included in core stricter. -->
|
|
<rule ref="WordPress.WP.I18n.MissingTranslatorsComment">
|
|
<type>error</type>
|
|
</rule>
|
|
<rule ref="WordPress.WP.I18n.TranslatorsCommentWrongStyle">
|
|
<type>error</type>
|
|
</rule>
|
|
|
|
<!-- Verify that everything in the global namespace is prefixed. -->
|
|
<rule ref="WordPress.NamingConventions.PrefixAllGlobals"/>
|
|
|
|
<!-- Check that object instantiations always have braces & are not assigned by reference.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/919 -->
|
|
<rule ref="WordPress.Classes.ClassInstantiation"/>
|
|
|
|
<!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1157 -->
|
|
<rule ref="WordPress.Security.PluginMenuSlug"/>
|
|
<rule ref="WordPress.WP.CronInterval"/>
|
|
<rule ref="WordPress.WP.PostsPerPage"/>
|
|
<rule ref="WordPress.WP.TimezoneChange"/>
|
|
|
|
<!-- Verify some regex best practices.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1371 -->
|
|
<rule ref="WordPress.PHP.PregQuoteDelimiter"/>
|
|
|
|
<!-- The Core ruleset respects the whitelist. For `Extra` the sniff is stricter.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/1450 -->
|
|
<rule ref="WordPress.PHP.NoSilencedErrors">
|
|
<properties>
|
|
<property name="use_default_whitelist" value="false"/>
|
|
</properties>
|
|
</rule>
|
|
|
|
<!-- Commented out code should not be committed.
|
|
https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/pull/1463 -->
|
|
<rule ref="Squiz.PHP.CommentedOutCode">
|
|
<properties>
|
|
<property name="maxPercentage" value="40"/>
|
|
</properties>
|
|
</rule>
|
|
|
|
|
|
<!--
|
|
#############################################################################
|
|
Code style sniffs for more recent PHP features and syntaxes.
|
|
#############################################################################
|
|
-->
|
|
|
|
<!-- Check for single blank line after namespace declaration. -->
|
|
<rule ref="PSR2.Namespaces.NamespaceDeclaration"/>
|
|
|
|
</ruleset>
|