3

我正在使用 PHPMD ( http://phpmd.org/ ),对此我很陌生。MD 工作,我现在正在编写一个规则集来配置应该使用哪些指标。我没有单独包含每个规则,而是加载整个规则集。但是现在我有一个问题,如果我包含整个集合,我不知道如何配置单个规则的属性。

例如,我想使用规则来检查圈复杂度。我可以用

<?xml version="1.0"?>
<ruleset name="Demo PHPMD 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> custom ruleset that checks the code </description> 
    <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
        <properties>
            <property name="reportLevel" value="11" />
        </properties>
    </rule>
</ruleset>

但是如果我想使用该规则集中的所有规则,我可以简单地写

<?xml version="1.0"?>
<ruleset name="Demo PHPMD 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> custom ruleset that checks the code </description> 
    <rule ref="rulesets/codesize.xml" />
</ruleset>

现在,当我包含整个规则集时,如何使用属性的配置(在我的情况下,reportLevel 用于圈复杂度)?我尝试了类似的东西

[...]
    <rule ref="rulesets/codesize.xml">
        <properties>
            <property name="CyclomaticComplexity.reportLevel" value="11" />
        </properties>
    </rule>
[...]

但这没有用。我在文档中进行了搜索,但从未在任何地方找到此示例。

4

1 回答 1

6

我发现实现这一点的唯一方法是使用 exclude 元素,包括规则集中的所有规则,除了您要自定义的规则,然后单独包含它。

<?xml version="1.0"?>
<ruleset name="Demo PHPMD 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> custom ruleset that checks the code </description>
    <rule ref="rulesets/codesize.xml">
        <exclude name="CyclomaticComplexity"/>
    </rule> 
    <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
        <properties>
            <property name="reportLevel" value="11" />
        </properties>
    </rule>
</ruleset>
于 2015-04-03T14:07:21.897 回答