2014-11-27 20 views
3

PHPMD (http://phpmd.org/)를 사용하고 있는데 이것에 대해 아주 신났습니다. MD가 작동합니다. 이제 어떤 메트릭을 사용해야 하는지를 구성하는 룰 세트를 작성 중입니다. 각 규칙을 개별적으로 포함하는 대신 전체 규칙 집합을로드합니다. 하지만 이제 전체 집합을 포함하면 단일 규칙의 속성을 구성하는 방법을 알지 못하는 문제가 있습니다.PHPMD - 전체 룰셋을 포함하고 속성을 구성하십시오.

예를 들어 규칙을 사용하여 순환 복잡성을 확인하고 싶습니다. 나는

<?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

내가 이것을 발견 한 유일한 방법은 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> 
+0

덕분에, 꽤 편리 할 것 좋은 해결 방법 같은이없는 너무 슬프다 "<속성 이름 ="CyclomaticComplexity.reportLevel "값 ="11 "/>"처럼 보인다 –