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

これを達成するために私が見つけた唯一の方法は、除外要素を使用して、カスタマイズしたいルールを除くルールセットのすべてのルールを含め、それを個別に含めることです。

<?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 に答える