2013-03-08 4 views
5

मैं प्रोजेक्ट बनाने पर में Ant से PMD चलाने की कोशिश कर रहा हूं।ग्रहण में पीएमडी चींटी का उपयोग कर फ़ोल्डर से सभी नियमों को कैसे चलाएं?

यह मेरा build.xml फ़ाइल है:

<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/> 

<target name="check_pmd"> 
    <pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\basic.xml"> 
     <formatter type="html" toFile="pmd_report.html" toConsole="true"/> 
     <fileset dir="C:\Users\Nikolay\ProjectName\src"> 
      <include name="**/*.java"/> 
     </fileset> 
    </pmd> 
</target> 

यह basic.xml के लिए अच्छी तरह से काम है, लेकिन मैं java फ़ोल्डर में सभी rulesets के लिए चलाना चाहते हैं (यह लगभग 20 rulesets है) तो मैं कोशिश की है:

<pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\*.xml"> 
<pmd rulesetfiles="C:\Users\Nikolay\ProjectName\lib\rulesets\java\*"> 

लेकिन जब मैं दौड़ने की कोशिश करता हूं तो दोनों विफल हो जाते हैं। फ़ोल्डर निर्दिष्ट करने का कोई तरीका है, फ़ाइलों की सूची निर्दिष्ट किए बिना एक फ़ाइल नहीं? प्राथमिकताएं - - चींटी आधिकारिक वेबसाइट

  • अनपैक pmd.jar, jaxen.jar और asm.jar
  • विंडो को ऊपर जार जोड़े से

    • डाउनलोड pmd-bin.zip -:

      भविष्य पाठकों के लिए ग्रहण के तहत चींटी PMD कॉन्फ़िगर करने के लिए रनटाइम - चींटी होम प्रविष्टियां - बाहरी जार जोड़ें

    • अनपैक rulesets फ़ोल्डर से <pmd rulesetfiles=...>
  • उत्तर

    3

    PMD के प्रलेखन rulesetfiles कहना है कि वह comma separated list of files.

    rulesetfiles अल्पविराम नियम-सेट फ़ाइलों की सीमांकित सूची (है (चींटी कार्य के लिए CoolFan से जवाब का विस्तार) 'rulesets/basic.xml , rulesets/design.xml ')। यदि आप अपनी नियमसेट फ़ाइलों को लिखते हैं, तो आप उन्हें क्लासपाथ पर रख सकते हैं और उन्हें में प्लग कर सकते हैं। हां, जब तक नियमसेट नेस्टेड तत्व का उपयोग नहीं किया जाता है

    चींटी इस तरह के प्रारूप में फाइलसेट को परिवर्तित करने का एक तरीका प्रदान करता है। The task is pathconvert

    यहाँ एक सब java.xml जहां सभी नियम सेट शामिल किया गया है वहाँ वेबसाइट

    <fileset dir="${src.dir}" id="src.files"> 
         <include name="**/*.java"/> 
    </fileset> 
    
    <pathconvert pathsep="," property="javafiles" refid="src.files"/> 
    
    +0

    उपरोक्त - इसे पढ़ने से पहले उस कार्य को कभी नहीं देखा! – coolcfan

    +0

    इस सप्ताह इसका उपयोग करने में सक्षम न होने के कारण उत्तर और खेद है। अगर आप कूलकफन को बक्षीस देते हैं तो क्या आपको बुरा नहीं लगता? –

    +0

    @ निकोले कुज़नेत्सोव: कोई समस्या नहीं। जैसा कि आप देखते हैं, मैंने उससे जवाब का विस्तार किया :) – Jayan

    3

    नियम-सेट की

  • संदर्भ स्थान हो सकता है कि परम वाइल्डकार्ड का समर्थन नहीं करता, के रूप में document पता चलता है।

    "rule1,rule2,rule3,path-to-rule-file4" 
    
    :

    इसके स्रोत कोड के ऊपर एक त्वरित दृष्टि भी मेरा अनुमान का समर्थन करता है, RuleSetReferenceId.java देखते हैं, लाइन 194

    इसलिए, यह एक संपत्ति है जो एक "सूची" परिसीमक के रूप में , का उपयोग कर, की तरह होता है लेता है

    वर्कअराउंड निर्देशिका स्कैन कर सकता है, सभी नियम-एक्सएमएल फाइलों को सूचीबद्ध कर सकता है, और अल्पविराम-सीमित प्रारूप में एक संपत्ति का निर्माण कर सकता है और फिर इसे <pmd> कार्य में भेज सकता है।

    दुर्भाग्यवश, मुझे कोई चींटी कार्य नहीं पता जो यह कर सकता है। तो आपको कुछ कोड लिखना पड़ सकता है।

    मैं दो तरीके के साथ आ सकते हैं:

    1. एक चींटी कार्य लिख; कई Q & जावा के लिए इस बारे में हैं, जैसे this
    2. <groovy> कार्य के अंदर groovy लिखें; कई Q&As भी।

    संपादित करें:

    जयन पता चलता है <pathconvert> कार्य है, जो सही जवाब होना चाहिए।

  • +0

    उत्तर के लिए धन्यवाद! मैं आपको बक्षीस देता हूं और जयन का जवाब स्वीकार करता हूं। मुझे आशा है कि यह आपके लिए ठीक है। –

    1

    PMD पुस्तकालय जार में से एक उदाहरण है। निम्नलिखित का उपयोग करने का प्रयास करें:

    <pmd rulesetfiles="rulesets/internal/all-java.xml"> 
    
    संबंधित मुद्दे