xref: /dokuwiki/_test/phpcs.xml (revision e3cafdc28a52ba17ed1f5ec78020911c95292ca0)
1<?xml version="1.0"?>
2<ruleset name="DokuWiki Coding Standard Standard" namespace="DokuWiki\CS\Standard">
3    <description>Coding Standard used for DokuWiki</description>
4
5    <!-- default config -->
6    <arg name="colors"/>
7    <arg value="sp"/>
8    <arg name="extensions" value="php"/>
9
10    <ini name="memory_limit" value="-1"/>
11
12    <!-- where to look -->
13    <file>../inc</file>
14    <file>../lib</file>
15    <file>../bin</file>
16    <file>../doku.php</file>
17    <file>../index.php</file>
18    <file>../feed.php</file>
19    <file>../install.php</file>
20
21    <!-- skip these completely -->
22    <exclude-pattern>*/lang/*/lang.php</exclude-pattern>
23    <exclude-pattern>*/lang/*/settings.php</exclude-pattern>
24    <exclude-pattern>*/_test/*</exclude-pattern>
25
26    <!-- 3rd party libs, these should be moved to composer some day -->
27    <exclude-pattern>*/inc/DifferenceEngine.php</exclude-pattern>
28    <exclude-pattern>*/inc/IXR_Library.php</exclude-pattern>
29    <exclude-pattern>*/inc/JSON.php</exclude-pattern>
30    <exclude-pattern>*/inc/JpegMeta.php</exclude-pattern>
31    <exclude-pattern>*/lib/plugins/authad/adLDAP</exclude-pattern>
32
33    <!-- deprecated files to be removed soon -->
34    <exclude-pattern>*/inc/cli.php</exclude-pattern>
35    <exclude-pattern>*/inc/parser/*</exclude-pattern>
36
37    <!-- rules on top of PSR-2 -->
38    <rule ref="PSR2">
39        <!-- the following rule is not in PSR-2 and breaks the guardian pattern -->
40        <exclude name="Generic.ControlStructures.InlineControlStructure.NotAllowed"/>
41
42        <!-- we have lots of legacy classes without name spaces -->
43        <exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/>
44
45        <!-- Rules with automatic fixes that we want to adhere to, but currently don't -->
46        <exclude name="Generic.Formatting.DisallowMultipleStatements.SameLine"/>
47        <exclude name="Generic.Functions.FunctionCallArgumentSpacing.NoSpaceAfterComma"/>
48        <exclude name="Generic.Functions.FunctionCallArgumentSpacing.SpaceBeforeComma"/>
49        <exclude name="Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma"/>
50        <exclude name="Generic.PHP.LowerCaseKeyword.Found"/>
51        <exclude name="Generic.PHP.LowerCaseConstant.Found"/>
52        <exclude name="Generic.WhiteSpace.ScopeIndent.IncorrectExact"/>
53        <exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect"/>
54        <exclude name="Generic.WhiteSpace.IncrementDecrementSpacing.SpaceAfterDecrement"/>
55        <exclude name="Generic.WhiteSpace.IncrementDecrementSpacing.SpaceAfterIncrement"/>
56
57        <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseParenthesis"/>
58        <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterKeyword"/>
59        <exclude name="Squiz.ControlStructures.ControlSignature.SpaceAfterCloseBrace"/>
60        <exclude name="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace"/>
61        <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.NoSpaceBeforeArrow"/>
62        <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.NoSpaceAfterArrow"/>
63        <exclude name="Squiz.ControlStructures.ForEachLoopDeclaration.SpacingBeforeAs"/>
64        <exclude name="Squiz.ControlStructures.ForLoopDeclaration.SpacingAfterSecond"/>
65        <exclude name="Squiz.ControlStructures.ForLoopDeclaration.NoSpaceAfterSecond"/>
66        <exclude name="Squiz.ControlStructures.ForLoopDeclaration.NoSpaceAfterFirst"/>
67        <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.NoSpaceBeforeArg"/>
68        <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpaceAfterEquals"/>
69        <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterReference"/>
70        <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingBeforeClose"/>
71        <exclude name="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpaceBeforeEquals"/>
72        <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine"/>
73        <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.NewlineBeforeOpenBrace"/>
74        <exclude name="Squiz.Functions.MultiLineFunctionDeclaration.CloseBracketLine"/>
75        <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingAfterOpen"/>
76        <exclude name="Squiz.WhiteSpace.ControlStructureSpacing.SpacingBeforeClose"/>
77        <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.ContentBefore"/>
78        <exclude name="Squiz.WhiteSpace.ScopeClosingBrace.Indent"/>
79        <exclude name="Squiz.WhiteSpace.SuperfluousWhitespace.EndLine"/>
80
81        <exclude name="PSR2.Classes.ClassDeclaration.CloseBraceAfterBody"/>
82        <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine"/>
83        <exclude name="PSR2.Classes.PropertyDeclaration.StaticBeforeVisibility"/>
84        <exclude name="PSR2.ControlStructures.ControlStructureSpacing.SpacingAfterOpenBrace"/>
85        <exclude name="PSR2.ControlStructures.ControlStructureSpacing.SpaceBeforeCloseBrace"/>
86        <exclude name="PSR2.ControlStructures.ElseIfDeclaration.NotAllowed"/>
87        <exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakIndent"/>
88        <exclude name="PSR2.ControlStructures.SwitchDeclaration.BreakNotNewLine"/>
89        <exclude name="PSR2.ControlStructures.SwitchDeclaration.BodyOnNextLineCASE"/>
90        <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonDEFAULT"/>
91        <exclude name="PSR2.ControlStructures.SwitchDeclaration.SpaceBeforeColonCASE"/>
92        <exclude name="PSR2.Files.EndFileNewline.TooMany"/>
93        <exclude name="PSR2.Files.EndFileNewline.NoneFound"/>
94        <exclude name="PSR2.Methods.FunctionCallSignature.Indent"/>
95        <exclude name="PSR2.Methods.FunctionCallSignature.EmptyLine"/>
96        <exclude name="PSR2.Methods.FunctionCallSignature.ContentAfterOpenBracket"/>
97        <exclude name="PSR2.Methods.FunctionCallSignature.SpaceBeforeOpenBracket"/>
98        <exclude name="PSR2.Methods.FunctionCallSignature.CloseBracketLine"/>
99        <exclude name="PSR2.Methods.FunctionCallSignature.SpaceBeforeCloseBracket"/>
100        <exclude name="PSR2.Methods.FunctionCallSignature.SpaceAfterOpenBracket"/>
101        <exclude name="PSR2.Methods.FunctionCallSignature.MultipleArguments"/>
102        <exclude name="PSR2.Methods.FunctionClosingBrace.SpacingBeforeClose"/>
103        <exclude name="PSR2.Methods.MethodDeclaration.StaticBeforeVisibility"/>
104        <exclude name="PSR2.Namespaces.NamespaceDeclaration.BlankLineAfter"/>
105        <exclude name="PSR2.Namespaces.UseDeclaration.SpaceAfterLastUse"/>
106    </rule>
107
108    <!-- disable some rules for certain paths, for legacy support -->
109    <rule ref="Squiz.Classes.ValidClassName.NotCamelCaps">
110        <exclude-pattern>*/inc/Plugin.php</exclude-pattern>
111        <exclude-pattern>*/inc/PluginInterface.php</exclude-pattern>
112        <exclude-pattern>*/inc/PluginTrait.php</exclude-pattern>
113
114        <exclude-pattern>*/lib/plugins/*.php</exclude-pattern>
115        <exclude-pattern>*/lib/plugins/*/action.php</exclude-pattern>
116        <exclude-pattern>*/lib/plugins/*/action/*.php</exclude-pattern>
117        <exclude-pattern>*/lib/plugins/*/admin.php</exclude-pattern>
118        <exclude-pattern>*/lib/plugins/*/admin/*.php</exclude-pattern>
119        <exclude-pattern>*/lib/plugins/*/auth.php</exclude-pattern>
120        <exclude-pattern>*/lib/plugins/*/auth/*.php</exclude-pattern>
121        <exclude-pattern>*/lib/plugins/*/cli.php</exclude-pattern>
122        <exclude-pattern>*/lib/plugins/*/cli/*.php</exclude-pattern>
123        <exclude-pattern>*/lib/plugins/*/helper.php</exclude-pattern>
124        <exclude-pattern>*/lib/plugins/*/helper/*.php</exclude-pattern>
125        <exclude-pattern>*/lib/plugins/*/remote.php</exclude-pattern>
126        <exclude-pattern>*/lib/plugins/*/remote/*.php</exclude-pattern>
127        <exclude-pattern>*/lib/plugins/*/syntax.php</exclude-pattern>
128        <exclude-pattern>*/lib/plugins/*/syntax/*.php</exclude-pattern>
129    </rule>
130
131    <!-- underscore skips exposing public methods to remote api -->
132    <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
133        <exclude-pattern>*/inc/Extension/RemotePlugin.php</exclude-pattern>
134        <exclude-pattern>*/lib/plugins/*/remote.php</exclude-pattern>
135        <exclude-pattern>*/lib/plugins/*/remote/*.php</exclude-pattern>
136    </rule>
137
138    <rule ref="PSR1.Methods.CamelCapsMethodName.NotCamelCaps">
139        <exclude-pattern>*/inc/Extension/PluginInterface.php</exclude-pattern>
140        <exclude-pattern>*/inc/Extension/PluginTrait.php</exclude-pattern>
141    </rule>
142
143    <!-- for now we mix declarations and execution here (mostly for defines) -->
144    <rule ref="PSR1.Files.SideEffects">
145        <exclude-pattern>*/index.php</exclude-pattern>
146        <exclude-pattern>*/inc/parserutils.php</exclude-pattern>
147        <exclude-pattern>*/inc/mail.php</exclude-pattern>
148        <exclude-pattern>*/inc/init.php</exclude-pattern>
149        <exclude-pattern>*/inc/fulltext.php</exclude-pattern>
150        <exclude-pattern>*/inc/Mailer.class.php</exclude-pattern>
151        <exclude-pattern>*/doku.php</exclude-pattern>
152        <exclude-pattern>*/install.php</exclude-pattern>
153        <exclude-pattern>*/inc/utf8.php</exclude-pattern>
154        <exclude-pattern>*/feed.php</exclude-pattern>
155        <exclude-pattern>*/inc/load.php</exclude-pattern>
156        <exclude-pattern>*/bin/*.php</exclude-pattern>
157        <exclude-pattern>*/lib/exe/*.php</exclude-pattern>
158    </rule>
159
160</ruleset>
161