diff options
author | Michael Große <mic.grosse@googlemail.com> | 2020-01-21 22:02:40 +0100 |
---|---|---|
committer | Michael Große <mic.grosse@googlemail.com> | 2020-02-19 10:55:56 +0100 |
commit | 36faf6960da95d20701a18669dffb86c9d8fc6b5 (patch) | |
tree | 82ab3d1f6ddb89baba84829396a8cb5781709c4d | |
parent | b5f2c105ff6ecada10545075c7cdf998194639fa (diff) | |
download | dokuwiki-36faf6960da95d20701a18669dffb86c9d8fc6b5.tar.gz dokuwiki-36faf6960da95d20701a18669dffb86c9d8fc6b5.zip |
Split out temporary code style excludes
Splitting them out allows for plugins to use _test/phpcs.xml as the
basis for their own linting without having an overly permissive coding
standard.
Also, this makes it more obvious and painful that these are just
intended as temporary exceptions and should be actually fixed.
The rule `Generic.ControlStructures.InlineControlStructure.NotAllowed`
has its comment adjust to make it clear that this is an intended
deviation from the PSR-2/PSR-12 coding standard.
The rule `PSR1.Classes.ClassDeclaration.MissingNamespace` has to remain
in the DokuWiki coding standard as the plugin base classes can currently
not reasonably be in namespaces.
-rw-r--r-- | .github/workflows/phpCS.yml | 2 | ||||
-rw-r--r-- | _test/phpcs.xml | 100 | ||||
-rw-r--r-- | _test/phpcs_MigrationAdjustments.xml | 103 |
3 files changed, 106 insertions, 99 deletions
diff --git a/.github/workflows/phpCS.yml b/.github/workflows/phpCS.yml index bf1d6b259..fd46c4682 100644 --- a/.github/workflows/phpCS.yml +++ b/.github/workflows/phpCS.yml @@ -19,4 +19,4 @@ jobs: run: wget https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar - name: run PHP codesniffer - run: php phpcs.phar -v --standard=_test/phpcs.xml + run: php phpcs.phar -v --standard=_test/phpcs_MigrationAdjustments.xml diff --git a/_test/phpcs.xml b/_test/phpcs.xml index 6e78784c8..8f0d4dd24 100644 --- a/_test/phpcs.xml +++ b/_test/phpcs.xml @@ -34,88 +34,13 @@ <exclude-pattern>*/inc/cli.php</exclude-pattern> <exclude-pattern>*/inc/parser/*</exclude-pattern> - <!-- rules on top of PSR-2 --> + <!-- rules on top of PSR-12 --> <rule ref="PSR12"> - <!-- the following rule is not in PSR-2 and breaks the guardian pattern --> + <!-- This rule breaks the single line guard pattern that we prefer to keep using --> <exclude name="Generic.ControlStructures.InlineControlStructure.NotAllowed"/> <!-- we have lots of legacy classes without name spaces --> <exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/> - - <!-- Rules with automatic fixes that we want to adhere to, but currently don't --> - <exclude name="Generic.Formatting.DisallowMultipleStatements.SameLine"/> - <exclude name="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceAfterComma"/> - <exclude name="Generic.Functions.FunctionCallArgumentSpacing.SpaceBeforeComma"/> - <exclude name="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma"/> - <exclude name="Generic.PHP.LowerCaseKeyword.Found"/> - <exclude name="Generic.PHP.LowerCaseConstant.Found"/> - <exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact"/> - <exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect"/> - <exclude name="Generic.WhiteSpace.IncrementDecrementSpacing.SpaceAfterDecrement"/> - <exclude name="Generic.WhiteSpace.IncrementDecrementSpacing.SpaceAfterIncrement"/> - - <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseParenthesis"/> - <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterKeyword"/> - <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace"/> - <exclude name="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace"/> - <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.NoSpaceBeforeArrow"/> - <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.NoSpaceAfterArrow"/> - <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.SpacingBeforeAs"/> - <exclude name="Squiz.ControlStructures.ForLoopDeclaration.SpacingAfterSecond"/> - <exclude name="Squiz.ControlStructures.ForLoopDeclaration.NoSpaceAfterSecond"/> - <exclude name="Squiz.ControlStructures.ForLoopDeclaration.NoSpaceAfterFirst"/> - <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.NoSpaceBeforeArg"/> - <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpaceAfterEquals"/> - <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterReference"/> - <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingBeforeClose"/> - <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpaceBeforeEquals"/> - <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/> - <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.NewlineBeforeOpenBrace"/> - <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.CloseBracketLine"/> - <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingAfterOpen"/> - <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingBeforeClose"/> - <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.ContentBefore"/> - <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.Indent"/> - <exclude name="Squiz.WhiteSpace.SuperfluousWhitespace.EndLine"/> - - <exclude name="PSR2.Classes.ClassDeclaration.CloseBraceAfterBody"/> - <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine"/> - <exclude name="PSR2.Classes.PropertyDeclaration.StaticBeforeVisibility"/> - <exclude name="PSR2.ControlStructures.ControlStructureSpacing.SpacingAfterOpenBrace"/> - <exclude name="PSR2.ControlStructures.ControlStructureSpacing.SpaceBeforeCloseBrace"/> - <exclude name="PSR2.ControlStructures.ElseIfDeclaration.NotAllowed"/> - <exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakIndent"/> - <exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakNotNewLine"/> - <exclude name="PSR2.ControlStructures.SwitchDeclaration.BodyOnNextLineCASE"/> - <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonDEFAULT"/> - <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonCASE"/> - <exclude name="PSR2.Files.EndFileNewline.TooMany"/> - <exclude name="PSR2.Files.EndFileNewline.NoneFound"/> - <exclude name="PSR2.Methods.FunctionCallSignature.Indent"/> - <exclude name="PSR2.Methods.FunctionCallSignature.EmptyLine"/> - <exclude name="PSR2.Methods.FunctionCallSignature.ContentAfterOpenBracket"/> - <exclude name="PSR2.Methods.FunctionCallSignature.SpaceBeforeOpenBracket"/> - <exclude name="PSR2.Methods.FunctionCallSignature.CloseBracketLine"/> - <exclude name="PSR2.Methods.FunctionCallSignature.SpaceBeforeCloseBracket"/> - <exclude name="PSR2.Methods.FunctionCallSignature.SpaceAfterOpenBracket"/> - <exclude name="PSR2.Methods.FunctionCallSignature.MultipleArguments"/> - <exclude name="PSR2.Methods.FunctionClosingBrace.SpacingBeforeClose"/> - <exclude name="PSR2.Methods.MethodDeclaration.StaticBeforeVisibility"/> - <exclude name="PSR2.Namespaces.NamespaceDeclaration.BlankLineAfter"/> - <exclude name="PSR2.Namespaces.UseDeclaration.SpaceAfterLastUse"/> - - <exclude name="PSR12.Classes.ClassInstantiation.MissingParentheses"/> - <exclude name="PSR12.ControlStructures.BooleanOperatorPlacement.FoundMixed"/> - <exclude name="PSR12.ControlStructures.ControlStructureSpacing.FirstExpressionLine"/> - <exclude name="PSR12.ControlStructures.ControlStructureSpacing.CloseParenthesisLine"/> - <exclude name="PSR12.ControlStructures.ControlStructureSpacing.LineIndent"/> - <exclude name="PSR12.ControlStructures.ControlStructureSpacing.SpacingAfterOpenBrace"/> - <exclude name="PSR12.ControlStructures.ControlStructureSpacing.SpaceBeforeCloseBrace"/> - <exclude name="PSR12.Files.FileHeader.SpacingAfterBlock"/> - <exclude name="PSR12.Operators.OperatorSpacing.NoSpaceBefore"/> - <exclude name="PSR12.Operators.OperatorSpacing.NoSpaceAfter"/> - - <exclude name="PSR12.Properties.ConstantVisibility.NotFound"/> </rule> <!-- disable some rules for certain paths, for legacy support --> @@ -152,25 +77,4 @@ <exclude-pattern>*/inc/Extension/PluginInterface.php</exclude-pattern> <exclude-pattern>*/inc/Extension/PluginTrait.php</exclude-pattern> </rule> - - <!-- for now we mix declarations and execution here (mostly for defines) --> - <rule ref="PSR1.Files.SideEffects"> - <exclude-pattern>*/index.php</exclude-pattern> - <exclude-pattern>*/inc/parserutils.php</exclude-pattern> - <exclude-pattern>*/inc/mail.php</exclude-pattern> - <exclude-pattern>*/inc/init.php</exclude-pattern> - <exclude-pattern>*/inc/farm.php</exclude-pattern> - <exclude-pattern>*/inc/fulltext.php</exclude-pattern> - <exclude-pattern>*/inc/pluginutils.php</exclude-pattern> - <exclude-pattern>*/inc/indexer.php</exclude-pattern> - <exclude-pattern>*/inc/Mailer.class.php</exclude-pattern> - <exclude-pattern>*/doku.php</exclude-pattern> - <exclude-pattern>*/install.php</exclude-pattern> - <exclude-pattern>*/inc/utf8.php</exclude-pattern> - <exclude-pattern>*/feed.php</exclude-pattern> - <exclude-pattern>*/inc/load.php</exclude-pattern> - <exclude-pattern>*/bin/*.php</exclude-pattern> - <exclude-pattern>*/lib/exe/*.php</exclude-pattern> - </rule> - </ruleset> diff --git a/_test/phpcs_MigrationAdjustments.xml b/_test/phpcs_MigrationAdjustments.xml new file mode 100644 index 000000000..d9d11832b --- /dev/null +++ b/_test/phpcs_MigrationAdjustments.xml @@ -0,0 +1,103 @@ +<?xml version="1.0"?> +<ruleset name="Migration Adjustments for the DokuWiki Coding Standard Standard" namespace="DokuWiki\CS\Standard"> + <description>These are exceptions to the Coding Standard used for DokuWiki that are intended to be removed over time.</description> + + <!-- rules on top of PSR-12 --> + <rule ref="./phpcs.xml"> + <!-- Rules with automatic fixes that we want to adhere to, but currently don't --> + <exclude name="Generic.Formatting.DisallowMultipleStatements.SameLine"/> + <exclude name="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceAfterComma"/> + <exclude name="Generic.Functions.FunctionCallArgumentSpacing.SpaceBeforeComma"/> + <exclude name="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma"/> + <exclude name="Generic.PHP.LowerCaseKeyword.Found"/> + <exclude name="Generic.PHP.LowerCaseConstant.Found"/> + <exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact"/> + <exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect"/> + <exclude name="Generic.WhiteSpace.IncrementDecrementSpacing.SpaceAfterDecrement"/> + <exclude name="Generic.WhiteSpace.IncrementDecrementSpacing.SpaceAfterIncrement"/> + + <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseParenthesis"/> + <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterKeyword"/> + <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace"/> + <exclude name="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace"/> + <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.NoSpaceBeforeArrow"/> + <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.NoSpaceAfterArrow"/> + <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.SpacingBeforeAs"/> + <exclude name="Squiz.ControlStructures.ForLoopDeclaration.SpacingAfterSecond"/> + <exclude name="Squiz.ControlStructures.ForLoopDeclaration.NoSpaceAfterSecond"/> + <exclude name="Squiz.ControlStructures.ForLoopDeclaration.NoSpaceAfterFirst"/> + <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.NoSpaceBeforeArg"/> + <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpaceAfterEquals"/> + <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterReference"/> + <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingBeforeClose"/> + <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpaceBeforeEquals"/> + <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/> + <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.NewlineBeforeOpenBrace"/> + <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.CloseBracketLine"/> + <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingAfterOpen"/> + <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingBeforeClose"/> + <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.ContentBefore"/> + <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.Indent"/> + <exclude name="Squiz.WhiteSpace.SuperfluousWhitespace.EndLine"/> + + <exclude name="PSR2.Classes.ClassDeclaration.CloseBraceAfterBody"/> + <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine"/> + <exclude name="PSR2.Classes.PropertyDeclaration.StaticBeforeVisibility"/> + <exclude name="PSR2.ControlStructures.ControlStructureSpacing.SpacingAfterOpenBrace"/> + <exclude name="PSR2.ControlStructures.ControlStructureSpacing.SpaceBeforeCloseBrace"/> + <exclude name="PSR2.ControlStructures.ElseIfDeclaration.NotAllowed"/> + <exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakIndent"/> + <exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakNotNewLine"/> + <exclude name="PSR2.ControlStructures.SwitchDeclaration.BodyOnNextLineCASE"/> + <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonDEFAULT"/> + <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonCASE"/> + <exclude name="PSR2.Files.EndFileNewline.TooMany"/> + <exclude name="PSR2.Files.EndFileNewline.NoneFound"/> + <exclude name="PSR2.Methods.FunctionCallSignature.Indent"/> + <exclude name="PSR2.Methods.FunctionCallSignature.EmptyLine"/> + <exclude name="PSR2.Methods.FunctionCallSignature.ContentAfterOpenBracket"/> + <exclude name="PSR2.Methods.FunctionCallSignature.SpaceBeforeOpenBracket"/> + <exclude name="PSR2.Methods.FunctionCallSignature.CloseBracketLine"/> + <exclude name="PSR2.Methods.FunctionCallSignature.SpaceBeforeCloseBracket"/> + <exclude name="PSR2.Methods.FunctionCallSignature.SpaceAfterOpenBracket"/> + <exclude name="PSR2.Methods.FunctionCallSignature.MultipleArguments"/> + <exclude name="PSR2.Methods.FunctionClosingBrace.SpacingBeforeClose"/> + <exclude name="PSR2.Methods.MethodDeclaration.StaticBeforeVisibility"/> + <exclude name="PSR2.Namespaces.NamespaceDeclaration.BlankLineAfter"/> + <exclude name="PSR2.Namespaces.UseDeclaration.SpaceAfterLastUse"/> + + <exclude name="PSR12.Classes.ClassInstantiation.MissingParentheses"/> + <exclude name="PSR12.ControlStructures.BooleanOperatorPlacement.FoundMixed"/> + <exclude name="PSR12.ControlStructures.ControlStructureSpacing.FirstExpressionLine"/> + <exclude name="PSR12.ControlStructures.ControlStructureSpacing.CloseParenthesisLine"/> + <exclude name="PSR12.ControlStructures.ControlStructureSpacing.LineIndent"/> + <exclude name="PSR12.ControlStructures.ControlStructureSpacing.SpacingAfterOpenBrace"/> + <exclude name="PSR12.ControlStructures.ControlStructureSpacing.SpaceBeforeCloseBrace"/> + <exclude name="PSR12.Files.FileHeader.SpacingAfterBlock"/> + <exclude name="PSR12.Operators.OperatorSpacing.NoSpaceBefore"/> + <exclude name="PSR12.Operators.OperatorSpacing.NoSpaceAfter"/> + + <exclude name="PSR12.Properties.ConstantVisibility.NotFound"/> + </rule> + + <!-- for now we mix declarations and execution here (mostly for defines) --> + <rule ref="PSR1.Files.SideEffects"> + <exclude-pattern>*/index.php</exclude-pattern> + <exclude-pattern>*/inc/parserutils.php</exclude-pattern> + <exclude-pattern>*/inc/mail.php</exclude-pattern> + <exclude-pattern>*/inc/init.php</exclude-pattern> + <exclude-pattern>*/inc/farm.php</exclude-pattern> + <exclude-pattern>*/inc/fulltext.php</exclude-pattern> + <exclude-pattern>*/inc/pluginutils.php</exclude-pattern> + <exclude-pattern>*/inc/indexer.php</exclude-pattern> + <exclude-pattern>*/inc/Mailer.class.php</exclude-pattern> + <exclude-pattern>*/doku.php</exclude-pattern> + <exclude-pattern>*/install.php</exclude-pattern> + <exclude-pattern>*/inc/utf8.php</exclude-pattern> + <exclude-pattern>*/feed.php</exclude-pattern> + <exclude-pattern>*/inc/load.php</exclude-pattern> + <exclude-pattern>*/bin/*.php</exclude-pattern> + <exclude-pattern>*/lib/exe/*.php</exclude-pattern> + </rule> + +</ruleset> |