Skip to content

Commit 72d2df5

Browse files
committed
:octocat: +phpmd/phpcs
1 parent 13ceadd commit 72d2df5

File tree

4 files changed

+231
-1
lines changed

4 files changed

+231
-1
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@
22
/.idea
33
/vendor
44
composer.lock
5+
phpcs.xml
6+
phpdoc.xml
7+
phpmd.xml
8+
phpunit.xml

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
},
2626
"require-dev": {
2727
"phan/phan": "^5.4",
28-
"phpunit/phpunit": "^9.6"
28+
"phpmd/phpmd": "^2.13",
29+
"phpunit/phpunit": "^9.6",
30+
"phpcsstandards/php_codesniffer": "^3.8"
2931
},
3032
"autoload": {
3133
"psr-4": {

phpcs.xml.dist

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
<?xml version="1.0"?>
2+
<ruleset name="php-settings-container-cs"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:noNamespaceSchemaLocation="vendor/phpcsstandards/php_codesniffer/phpcs.xsd">
5+
<description>php-settings-container rules for phpcs</description>
6+
7+
<file>examples</file>
8+
<file>src</file>
9+
<file>tests</file>
10+
11+
<arg name="basepath" value="."/>
12+
<arg name="tab-width" value="4"/>
13+
14+
<rule ref="Internal.Tokenizer.Exception">
15+
<type>error</type>
16+
</rule>
17+
18+
19+
<rule ref="Generic">
20+
<exclude name="Generic.Arrays.DisallowShortArraySyntax" />
21+
<exclude name="Generic.CodeAnalysis.EmptyStatement" />
22+
<exclude name="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" />
23+
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter" />
24+
<exclude name="Generic.Commenting.Todo" />
25+
<exclude name="Generic.ControlStructures.InlineControlStructure" />
26+
<exclude name="Generic.Debug" />
27+
<exclude name="Generic.Files.EndFileNoNewline" />
28+
<exclude name="Generic.Files.LowercasedFilename" />
29+
<exclude name="Generic.Formatting.SpaceBeforeCast" />
30+
<exclude name="Generic.Functions.OpeningFunctionBraceBsdAllman" />
31+
<exclude name="Generic.NamingConventions.AbstractClassNamePrefix" />
32+
<exclude name="Generic.NamingConventions.CamelCapsFunctionName" />
33+
<exclude name="Generic.PHP.ClosingPHPTag" />
34+
<exclude name="Generic.PHP.RequireStrictTypes" />
35+
<exclude name="Generic.PHP.UpperCaseConstant" />
36+
<exclude name="Generic.VersionControl" />
37+
<exclude name="Generic.WhiteSpace.DisallowTabIndent" />
38+
<exclude name="Generic." />
39+
</rule>
40+
41+
<rule ref="Generic.ControlStructures.InlineControlStructure">
42+
<properties>
43+
<property name="error" value="true"/>
44+
</properties>
45+
</rule>
46+
47+
<rule ref="Generic.Files.LineLength">
48+
<properties>
49+
<property name="lineLimit" value="130" />
50+
<property name="absoluteLineLimit" value="160" />
51+
<property name="ignoreComments" value="true" />
52+
</properties>
53+
</rule>
54+
55+
<rule ref="Generic.PHP.ForbiddenFunctions">
56+
<properties>
57+
<property name="forbiddenFunctions" type="array">
58+
<element key="die" value="exit"/>
59+
<element key="sizeof" value="count"/>
60+
<element key="delete" value="unset"/>
61+
<element key="print" value="echo"/>
62+
<element key="is_null" value="null"/>
63+
<element key="create_function" value="null"/>
64+
</property>
65+
</properties>
66+
</rule>
67+
68+
<rule ref="Generic.Formatting.SpaceAfterCast">
69+
<properties>
70+
<property name="spacing" value="0" />
71+
</properties>
72+
</rule>
73+
74+
<rule ref="Generic.Formatting.SpaceAfterNot">
75+
<properties>
76+
<property name="spacing" value="0" />
77+
</properties>
78+
</rule>
79+
80+
<rule ref="Generic.WhiteSpace.ScopeIndent">
81+
<properties>
82+
<property name="tabIndent" value="true" />
83+
</properties>
84+
</rule>
85+
86+
87+
<rule ref="PEAR">
88+
<exclude name="PEAR.Classes" />
89+
<exclude name="PEAR.Commenting" />
90+
<exclude name="PEAR.ControlStructures" />
91+
<exclude name="PEAR.Functions.FunctionCallSignature" />
92+
<exclude name="PEAR.Functions.FunctionDeclaration" />
93+
<exclude name="PEAR.NamingConventions" />
94+
<exclude name="PEAR.WhiteSpace.ScopeIndent" />
95+
</rule>
96+
97+
<rule ref="PEAR.Commenting.FunctionComment">
98+
<properties>
99+
<property name="minimumVisibility" value="public" />
100+
</properties>
101+
</rule>
102+
103+
104+
<rule ref="PSR2">
105+
<exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps" />
106+
107+
<exclude name="PSR2.Classes.ClassDeclaration" />
108+
<exclude name="PSR2.ControlStructures.ControlStructureSpacing" />
109+
<exclude name="PSR2.ControlStructures.SwitchDeclaration" />
110+
<exclude name="PSR2.Methods.FunctionClosingBrace" />
111+
<exclude name="PSR2.Namespaces.UseDeclaration.MultipleDeclarations" />
112+
</rule>
113+
114+
<rule ref="PSR2.Methods.MethodDeclaration.Underscore">
115+
<type>error</type>
116+
</rule>
117+
118+
<rule ref="PSR2.Classes.PropertyDeclaration.Underscore">
119+
<type>error</type>
120+
</rule>
121+
122+
123+
<rule ref="PSR12">
124+
<exclude name="PSR12.Classes.ClassInstantiation" />
125+
<exclude name="PSR12.Classes.OpeningBraceSpace" />
126+
<exclude name="PSR12.ControlStructures" />
127+
<exclude name="PSR12.Files.FileHeader.SpacingInsideBlock" />
128+
<exclude name="PSR12.Files.FileHeader.SpacingAfterBlock" />
129+
<exclude name="PSR12.Functions.ReturnTypeDeclaration" />
130+
<exclude name="PSR12.Operators.OperatorSpacing" />
131+
</rule>
132+
133+
<rule ref="PSR12.Namespaces.CompoundNamespaceDepth">
134+
<properties>
135+
<property name="maxDepth" value="1" />
136+
</properties>
137+
</rule>
138+
139+
<rule ref="Squiz">
140+
<exclude name="Squiz.Arrays.ArrayDeclaration.IndexNoNewline" />
141+
<exclude name="Squiz.Arrays.ArrayDeclaration.MultiLineNotAllowed" />
142+
<exclude name="Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed" />
143+
<exclude name="Squiz.Arrays.ArrayDeclaration.ValueNoNewline" />
144+
<exclude name="Squiz.Classes.ClassDeclaration" />
145+
<exclude name="Squiz.Commenting" />
146+
<exclude name="Squiz.ControlStructures.ControlSignature" />
147+
<exclude name="Squiz.ControlStructures.ElseIfDeclaration" />
148+
<exclude name="Squiz.ControlStructures.InlineIfDeclaration.NotSingleLine" />
149+
<exclude name="Squiz.ControlStructures.SwitchDeclaration" />
150+
<exclude name="Squiz.Files" />
151+
<exclude name="Squiz.Functions" />
152+
<exclude name="Squiz.NamingConventions.ValidVariableName.NotCamelCaps" />
153+
<exclude name="Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps" />
154+
<exclude name="Squiz.NamingConventions.ValidFunctionName.ScopeNotCamelCaps" />
155+
<exclude name="Squiz.Objects.ObjectInstantiation.NotAssigned" />
156+
<exclude name="Squiz.Operators.ComparisonOperatorUsage" />
157+
<exclude name="Squiz.PHP.CommentedOutCode" />
158+
<exclude name="Squiz.PHP.DisallowBooleanStatement" />
159+
<exclude name="Squiz.PHP.DisallowComparisonAssignment" />
160+
<exclude name="Squiz.PHP.DisallowInlineIf" />
161+
<exclude name="Squiz.PHP.EmbeddedPhp" />
162+
<exclude name="Squiz.Strings.ConcatenationSpacing" />
163+
<exclude name="Squiz.WhiteSpace" />
164+
</rule>
165+
166+
<rule ref="Squiz.Commenting.EmptyCatchComment" />
167+
168+
<!-- exclude some checks for the examples-->
169+
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
170+
<exclude-pattern>examples</exclude-pattern>
171+
</rule>
172+
173+
<rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
174+
<exclude-pattern>examples</exclude-pattern>
175+
</rule>
176+
177+
<rule ref="PSR1.Files.SideEffects.FoundWithSymbols">
178+
<exclude-pattern>examples</exclude-pattern>
179+
</rule>
180+
181+
<rule ref="Squiz.Classes.ClassFileName.NoMatch">
182+
<exclude-pattern>examples</exclude-pattern>
183+
</rule>
184+
185+
<rule ref="Squiz.PHP.DiscouragedFunctions.Discouraged">
186+
<exclude-pattern>examples</exclude-pattern>
187+
</rule>
188+
189+
</ruleset>

phpmd.xml.dist

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0"?>
2+
<!-- https://github.com/phpmd/phpmd_-->
3+
<ruleset name="php-settings-container PMD ruleset"
4+
xmlns="http://pmd.sf.net/ruleset/1.0.0"
5+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6+
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
7+
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
8+
<description>codemasher/php-settings-container PMD ruleset</description>
9+
<exclude-pattern>*/examples/*</exclude-pattern>
10+
<exclude-pattern>*/vendor/*</exclude-pattern>
11+
<exclude-pattern>*/tests/*</exclude-pattern>
12+
<rule ref="rulesets/cleancode.xml">
13+
<exclude name="ElseExpression"/>
14+
<exclude name="StaticAccess"/>
15+
</rule>
16+
<rule ref="rulesets/codesize.xml" />
17+
<rule ref="rulesets/controversial.xml">
18+
<exclude name="CamelCaseMethodName"/>
19+
<exclude name="CamelCaseParameterName"/>
20+
<exclude name="CamelCasePropertyName"/>
21+
<exclude name="CamelCaseVariableName"/>
22+
</rule>
23+
<rule ref="rulesets/design.xml">
24+
<!-- exits are only used in examples -->
25+
<exclude name="ExitExpression"/>
26+
</rule>
27+
<rule ref="rulesets/naming.xml">
28+
<exclude name="LongVariable"/>
29+
<exclude name="ShortVariable"/>
30+
<exclude name="ConstantNamingConventions"/>
31+
</rule>
32+
<rule ref="rulesets/unusedcode.xml">
33+
<exclude name="UnusedFormalParameter"/>
34+
</rule>
35+
</ruleset>

0 commit comments

Comments
 (0)