Я установил это правило в phpmd.xml
файл:
<rule ref="rulesets/codesize.xml/ExcessiveClassLength">
<properties>
<property name="minimum" value="1500"/>
</properties>
</rule>
Но это правило игнорируется, я все еще получаю эту ошибку:
/var/www/html/tests/Model/AdvertTest.php:18 The class AdvertTest has 1026 lines of code. Current threshold is 1000. Avoid really long classes.
Любая идея, почему phpmd не читает это правило. Фактически, чтобы исправить это, единственный способ для меня — добавить ошибку подавления в верхнюю часть класса.
Немного больше информации: я запускаю phpmd на MAC с Docker с этой командой:
docker-compose exec php sh -c "./vendor/bin/phpmd ./tests text phpmd.test.xml"
Полный XML: наборы правил PHP Mess Detector
<rule ref="rulesets/codesize.xml">
<exclude name="CyclomaticComplexity"/>
<exclude name="ExcessiveMethodLength"/>
<exclude name="NPathComplexity"/>
<exclude name="TooManyMethods"/>
<exclude name="ExcessiveClassComplexity"/>
<exclude name="ExcessivePublicCount"/>
<exclude name="TooManyPublicMethods"/>
<exclude name="TooManyFields"/>
</rule>
<rule ref="rulesets/codesize.xml/TooManyFields">
<properties>
<property name="maxfields" value="21"/>
</properties>
</rule>
<rule ref="rulesets/cleancode.xml">
<exclude name="StaticAccess"/>
<exclude name="ElseExpression"/>
</rule>
<rule ref="rulesets/controversial.xml"/>
<rule ref="rulesets/design.xml">
<exclude name="CouplingBetweenObjects" />
<exclude name="NumberOfChildren" />
</rule>
<rule ref="rulesets/design.xml/NumberOfChildren">
<properties>
<property name="minimum" value="20"/>
</properties>
</rule>
<rule ref="rulesets/naming.xml">
<exclude name="ShortVariable"/>
<exclude name="LongVariable"/>
</rule>
<rule ref="rulesets/naming.xml/LongVariable">
<properties>
<property name="maximum" value="25"/>
</properties>
</rule>
<rule ref="rulesets/unusedcode.xml">
<exclude name="UnusedFormalParameter"/>
</rule>
<rule ref="rulesets/codesize.xml/ExcessiveClassLength">
<properties>
<property name="minimum" value="1500"/>
</properties>
</rule>
Задача ещё не решена.
Других решений пока нет …