Raw metrics of PHP code.
Installable with composer
composer require --dev phpmd/phpmd
Configurable through phpmd.xml
<ruleset
name="PHPMD rules"
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"
>
<rule ref="rulesets/cleancode.xml/BooleanArgumentFlag" />
<rule ref="rulesets/cleancode.xml/ElseExpression" />
<rule ref="rulesets/codesize.xml/CyclomaticComplexity" />
<rule ref="rulesets/codesize.xml/ExcessiveClassComplexity" />
<rule ref="rulesets/codesize.xml/ExcessiveClassLength" />
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength" />
<rule ref="rulesets/codesize.xml/ExcessiveParameterList" />
<rule ref="rulesets/design.xml/EvalExpression" />
<rule ref="rulesets/design.xml/GotoStatement" />
<rule ref="rulesets/naming.xml/ConstructorWithNameAsEnclosingClass" />
<rule ref="rulesets/unusedcode.xml/UnusedFormalParameter" />
<rule ref="rulesets/unusedcode.xml/UnusedPrivateField" />
<rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod" />
</ruleset>
Skip validating if not relevant
https://phpmd.org/rules/cleancode.html
/**
* Running certain hook_update().
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
function HOOK_update_8002(&$sandbox) {}
PHP execution errors.
./vendor/bin/phpmd web/modules/custom/ text cleancode --suffixes php,phtml,module
Unused code. (also covered by code sniffer)
./vendor/bin/phpmd web/modules/custom/ text unusedcode --suffixes php,phtml,module