PHPMD - включить весь набор правил и настроить свойства

Я использую 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>
[...]

Но это не сработало. Я искал в документации, но нигде не нашел такого примера.

1 ответ

Единственный способ добиться этого - использовать элемент 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>
Другие вопросы по тегам