Skip to content

Commit 498887b

Browse files
committed
Add PHPMD for complete code quality analysis
- Add phpmd/phpmd dependency and phpmd.xml configuration - Update composer scripts to include PHPMD in static analysis - All quality tools now pass: PHPCS, PHPStan, Psalm, PHPMD, PHPUnit - Ray.WebQuery development environment is now complete
1 parent 7345405 commit 498887b

File tree

3 files changed

+55
-3
lines changed

3 files changed

+55
-3
lines changed

.github/workflows/static-analysis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,3 @@ jobs:
1010
uses: ray-di/.github/.github/workflows/static-analysis.yml@v1
1111
with:
1212
php_version: 8.4
13-
has_crc_config: true

composer.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"squizlabs/php_codesniffer": "^3.8",
2121
"phpstan/phpstan": "^1.10",
2222
"vimeo/psalm": "^5.18 || ^6.0",
23-
"phpmetrics/phpmetrics": "^2.8"
23+
"phpmetrics/phpmetrics": "^2.8",
24+
"phpmd/phpmd": "^2.15"
2425
},
2526
"autoload": {
2627
"psr-4": {
@@ -47,7 +48,8 @@
4748
],
4849
"sa": [
4950
"./vendor/bin/psalm --monochrome --show-info=true",
50-
"./vendor/bin/phpstan analyse -c phpstan.neon"
51+
"./vendor/bin/phpstan analyse -c phpstan.neon",
52+
"./vendor/bin/phpmd src text ./phpmd.xml"
5153
],
5254
"test": "./vendor/bin/phpunit",
5355
"tests": [

phpmd.xml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ruleset name="PHPMD rule set"
3+
xmlns="http://pmd.sf.net/ruleset/1.0.0"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
6+
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
7+
<!--codesize-->
8+
<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
9+
<properties>
10+
<property name="reportLevel" value="20"/>
11+
</properties>
12+
</rule>
13+
<rule ref="rulesets/codesize.xml/NPathComplexity">
14+
<properties>
15+
<property name="minimum" value="200"/>
16+
</properties>
17+
</rule>
18+
<rule ref="rulesets/codesize.xml/ExcessiveClassComplexity">
19+
<properties>
20+
<property name="maximum" value="100"/>
21+
</properties>
22+
</rule>
23+
<rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
24+
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
25+
<rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
26+
<rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
27+
<rule ref="rulesets/codesize.xml/TooManyFields"/>
28+
<rule ref="rulesets/codesize.xml/TooManyMethods"/>
29+
<!--design-->
30+
<rule ref="rulesets/design.xml/EvalExpression"/>
31+
<rule ref="rulesets/design.xml/ExitExpression"/>
32+
<rule ref="rulesets/design.xml/GotoStatement" />
33+
<rule ref="rulesets/design.xml/NumberOfChildren"/>
34+
<rule ref="rulesets/design.xml/DepthOfInheritance"/>
35+
<!-- <rule ref="rulesets/design.xml/CouplingBetweenObjects" /> -->
36+
<!--naming-->
37+
<rule ref="rulesets/naming.xml/ConstantNamingConventions"/>
38+
<rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
39+
<!--unusedcode-->
40+
<rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
41+
<rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
42+
<rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
43+
<rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
44+
<!--controversial-->
45+
<rule ref="rulesets/controversial.xml/CamelCaseClassName"/>
46+
<rule ref="rulesets/controversial.xml/CamelCasePropertyName"/>
47+
<rule ref="rulesets/controversial.xml/CamelCaseMethodName"/>
48+
<!--cleancode-->
49+
<rule ref="rulesets/cleancode.xml/BooleanArgumentFlag"/>
50+
<!-- <rule ref="rulesets/cleancode.xml/ElseExpression" /> -->
51+
</ruleset>

0 commit comments

Comments
 (0)