首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPMD忽略规则集

PHPMD忽略规则集
EN

Stack Overflow用户
提问于 2016-12-16 10:49:25
回答 1查看 1.8K关注 0票数 1

我在phpmd.xml文件中设置了这个规则:

代码语言:javascript
复制
<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混乱检测器规则集

代码语言:javascript
复制
<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>

EN

回答 1

Stack Overflow用户

发布于 2022-11-23 11:42:50

我太迟了。

默认情况下,加载所有规则(包括该行中的ExcessiveClassLength) ):

代码语言:javascript
复制
<rule ref="rulesets/codesize.xml">

这一规则适用了两次:

  1. 通过将它们全部装入:
代码语言:javascript
复制
<rule ref="rulesets/codesize.xml">
  1. 有你自己的定义:
代码语言:javascript
复制
<rule ref="rulesets/codesize.xml/ExcessiveClassLength">

然后,最严格的触发。

加载它们时,必须忽略要替换的规则,方法是添加:

代码语言:javascript
复制
<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>

希望它能成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41182737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档