【问题标题】:How to ignore specific rule for specific directory in PHPMD如何忽略 PHPMD 中特定目录的特定规则
【发布时间】:2020-07-09 03:08:18
【问题描述】:

命令

phpmd app,config,routes text phpmd.xml

我在 Laravel 项目中使用 phpmd,在 design.xml 下有一个名为 CouplingBetweenObjects 的规则,我想忽略 app/Http/Controllers 目录中的所有文件到此规则,phpmd 只提供 --exclude 选项,这将使目录通过 ALL 规则,是否可以通过 XML 文件或命令行忽略特定目录的规则

phpmd.xml

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="Netask rule set"
    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">
<description>Netask code style rule set
</description>
<rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
<rule ref="rulesets/codesize.xml/NPathComplexity"/>
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
<rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
<rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
<rule ref="rulesets/codesize.xml/ExcessivePublicCount">
    <properties>
        <property name="minimum" value="30"/>
    </properties>
</rule>
<rule ref="rulesets/codesize.xml/TooManyFields">
    <properties>
        <property name="maxfields" value="20"/>
    </properties>
</rule>
<rule ref="rulesets/codesize.xml/TooManyMethods"/>
<rule ref="rulesets/codesize.xml/ExcessiveClassComplexity">
    <properties>
        <property name="maximum" value="30"/>
    </properties>
</rule>
<rule ref="rulesets/controversial.xml"/>
<rule ref="rulesets/design.xml"/>
<rule ref="rulesets/naming.xml/ShortVariable"/>
<rule ref="rulesets/naming.xml/LongVariable">
    <properties>
        <property name="maximum" value="30"/>
    </properties>
</rule>
<rule ref="rulesets/naming.xml/ShortMethodName">
    <properties>
        <property name="minimum" value="2"/>
    </properties>
</rule>
<rule ref="rulesets/naming.xml/ConstructorWithNameAsEnclosingClass"/>
<rule ref="rulesets/naming.xml/ConstantNamingConventions"/>
<rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
<rule ref="rulesets/unusedcode.xml/UnusedPrivateField" />
<rule ref="rulesets/unusedcode.xml/UnusedLocalVariable" />

<exclude-pattern>app/Console/Kernel.php</exclude-pattern>
<exclude-pattern>app/Services/Service.php</exclude-pattern>
<exclude-pattern>tests/TestCase.php</exclude-pattern>
</ruleset>

【问题讨论】:

    标签: php phpmd


    【解决方案1】:

    我建议以稍微不同的方式查看它,即您想忽略特定文件中的特定 PHPMD 规则,PHPMD 通过 cmets 中的注释支持该规则。

    例如

    /**
     * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
     */
    

    https://phpmd.org/documentation/suppress-warnings.html

    我认为这是使用 PHPMD 的惯用方式。如果这不可行,您可以为运行 phpmd 两次(在命令之间使用 ||)并在第二个规则集 xml 中排除不需要的规则的新命令设置别名。

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 2019-10-25
      • 2020-06-19
      • 2016-04-21
      相关资源
      最近更新 更多