我在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不读这个规则吗。实际上,要解决这个问题,我唯一的方法就是在类的顶部添加抑制错误。
更多信息:我在MAC上运行phpmd,使用下面的命令:docker-compose exec php sh -c "./vendor/bin/phpmd ./tests text phpmd.test.xml"
完整的XML: PHP混乱检测器规则集
<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>
发布于 2022-11-23 11:42:50
我太迟了。
默认情况下,加载所有规则(包括该行中的ExcessiveClassLength) ):
<rule ref="rulesets/codesize.xml">这一规则适用了两次:
<rule ref="rulesets/codesize.xml"><rule ref="rulesets/codesize.xml/ExcessiveClassLength">然后,最严格的触发。
加载它们时,必须忽略要替换的规则,方法是添加:
<rule ref="rulesets/codesize.xml">
<exclude name="ExcessiveClassLength"> <--- Here
<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>希望它能成功。
https://stackoverflow.com/questions/41182737
复制相似问题