Repository navigation
Expand file tree
/
Copy pathphpmd.xml
More file actions
97 lines (82 loc) · 4.31 KB
/
Copy pathphpmd.xml
File metadata and controls
97 lines (82 loc) · 4.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="WordPress Plugin PHPMD Ruleset"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>Code quality and naming checks with WordPress-compatible thresholds; PHPCS handles formatting.</description>
<!-- WordPress-specific file patterns to exclude -->
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/.private/*</exclude-pattern>
<exclude-pattern>*/node_modules/*</exclude-pattern>
<exclude-pattern>*/tests/*</exclude-pattern>
<exclude-pattern>*/stubs/*</exclude-pattern>
<!-- Clean Code Rules (with WordPress exceptions) -->
<rule ref="rulesets/cleancode.xml">
<!-- Allow explicit else branches; review branch behavior independently. -->
<exclude name="ElseExpression"/>
<!-- Global WordPress and PHP classes do not require namespace imports here. -->
<exclude name="MissingImport"/>
</rule>
<!-- Code Size Rules (WordPress-adjusted) -->
<rule ref="rulesets/codesize.xml">
<!-- Re-added below with WordPress-adjusted thresholds -->
<exclude name="CyclomaticComplexity"/>
<exclude name="NPathComplexity"/>
</rule>
<!-- WordPress-adjusted complexity limits -->
<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
<properties>
<!-- WordPress functions often have conditional logic for hooks -->
<property name="reportLevel" value="15"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/NPathComplexity">
<properties>
<!-- Export validation and cleanup flows branch heavily by design; the highest value is 384. -->
<property name="minimum" value="400"/>
</properties>
</rule>
<!-- Controversial Rules (with WordPress exceptions) -->
<rule ref="rulesets/controversial.xml">
<!-- Request handlers use superglobals; each access still requires boundary validation. -->
<exclude name="Superglobals"/>
<!-- Exclude CamelCaseVariableName - WordPress uses $snake_case_variables -->
<exclude name="CamelCaseVariableName"/>
<!-- Exclude CamelCaseParameterName - WordPress uses $snake_case_parameters -->
<exclude name="CamelCaseParameterName"/>
</rule>
<!-- Design Rules -->
<rule ref="rulesets/design.xml"/>
<!-- Naming Rules. The camelCase rules are in the controversial ruleset. -->
<rule ref="rulesets/naming.xml">
<!-- Added again below with a limit that fits prefixed WordPress names. -->
<exclude name="LongVariable"/>
<exclude name="LongMethodName"/>
</rule>
<rule ref="rulesets/naming.xml/LongVariable">
<properties>
<!-- Descriptive variable names; the longest has 22 characters. -->
<property name="maximum" value="25"/>
</properties>
</rule>
<rule ref="rulesets/naming.xml/LongMethodName">
<properties>
<!-- Function names start with the plugin prefix; the longest has 47 characters. -->
<property name="maximum" value="50"/>
</properties>
</rule>
<!-- EXPLICITLY EXCLUDED NAMING RULES FOR WORDPRESS COMPATIBILITY -->
<!-- These rules are NOT included because they conflict with WordPress standards: -->
<!-- - CamelCaseClassName (WordPress uses Class_Name_With_Underscores) -->
<!-- - CamelCaseMethodName (WordPress uses method_name_with_underscores) -->
<!-- - CamelCaseVariableName (WordPress uses $variable_name_with_underscores) -->
<!-- - CamelCaseParameterName (WordPress uses $parameter_name_with_underscores) -->
<!-- - CamelCasePropertyName (WordPress uses $property_name_with_underscores) -->
<!-- Unused Code Rules (always enforce) -->
<rule ref="rulesets/unusedcode.xml"/>
<!-- WORDPRESS CODING STANDARDS ENFORCEMENT -->
<!-- Note: PHPMD doesn't directly enforce spacing/indentation -->
<!-- For spacing enforcement, use PHPCS with WordPress standards instead -->
<!-- This PHPMD config focuses on code quality and WordPress-compatible naming -->
</ruleset>