2009-01-27 18 views
10

किसी को भी एक ग्रहण प्लग-इन या विधि का पता है ग्रहण एक पंक्ति इस तरह पर गेटर/setters उत्पन्न करने के लिए प्राप्त करने के लिए ग्रहण बनाम 3.2.2 पर एम।ग्रहण गेटर/सेटर प्रारूप

धन्यवाद।

उत्तर

12

मैं कैसे ग्रहण उन्हें प्रारूप आप चाहते हैं में उत्पन्न करने के लिए पता नहीं है, लेकिन आप एक खोज करते हैं/के बाद तरीकों उत्पन्न कर रहे हैं इन नियमित अभिव्यक्ति का उपयोग कर की जगह सकता है:

खोजें:

(?m)((?:public |private |protected)?[\w$]+) (get|set|is)([\w$]+)\(([\w$]+(?:\[\])? [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\} 

बदलें द्वारा:

$1 $2$3($4) { $5 } 

यह अभिव्यक्ति उत्पन्न getters और setters बदल सकते हैं एक पंक्ति किया जाना है। इसे परिवर्तित और नव उत्पन्न विधियों के मिश्रण के साथ चलाने के बारे में चिंता न करें; यह ठीक काम करेगा।

+0

धन्यवाद होसम। मैं आदर्श रूप से ग्रहण करने का एक तरीका पसंद करता हूं, जो एक दूसरे चरण को किए बिना एक लाइन पर गेटर्स उत्पन्न करता है। –

+0

आपका स्वागत है। शुभकामनाएं एक खोजना। –

+0

मैं कहूंगा कि आपका RegEx अच्छी तरह से काम करता है। एक बात - मेरे संस्करण/ग्रहण की कॉन्फ़िगरेशन की तरह दिखती है, "प्रतिस्थापित करें" अभिव्यक्ति को बैक स्लैश के बजाय डॉलर संकेतों का उपयोग करने की आवश्यकता है: $ 1 $ 2 $ 3 ($ 4) {$ 5} –

1

एक्लिप्स में जावा कोड स्वरूपण गेटर्स/सेटर्स और कक्षा में किसी भी अन्य तरीकों के बीच अंतर नहीं करता है। तो यह अंतर्निहित ग्रहण स्वरूपण द्वारा नहीं किया जा सकता है।

आप को या तो की आवश्यकता होगी: पिछले विकल्प के आधार पर ऊपर उल्लिखित regex

  • PMD या CheckStyle जैसे बाहरी प्लगइन एन पाने के साथ बदलें

    1. रन एक खोज/और लागू एक regex नियम
  • 0

    मैं नामित जवाब के लिए एक टिप्पणी के रूप में पोस्ट करने के लिए चाहता था, लेकिन मैं करने में सक्षम होना नहीं है।

    मैं होसाम अली के जवाब संशोधित रूप के जेनेरिक और आंतरिक प्रकार के साथ काम करने के लिए:

    List<X> 
    

    और

    Map.Entry 
    

    संशोधित नियमित अभिव्यक्ति खोज स्ट्रिंग है:

    (?m)((?:public |private |protected)?[\w\.\<\>$]+) (get|set|is)([\w$]+)\(([\w\.\<\>$]+ [\w$]+)?\) \{\s+(return [\w\.\<\>$]+;|this.[\w$]+ = [\w$]+;)\s+\} 
    

    यह नियमित अभिव्यक्ति कोण ब्रैकेट और प्रकार में एक बिंदु के लिए अनुमति देता है।

    उदाहरण के लिए:

    public List<String> getStringList() 
    

    और

    public void setStringList(List<String> list) 
    

    और

    public Map.Entry getEntry() 
    

    और की जगह स्ट्रिंग के रूप में एक ही है से पहले:

    $1 $2$3($4) { $5 } 
    
    4

    मुझे लगता है कि जेनरिक मिलान के साथ-साथ महत्वपूर्ण है, इसलिए सही regexp है:

    (?m)((?:public |private |protected)?[\w\<\>$]+) (get|set|is)([\w$]+)\(([\w\<\>$]+ [\w$]+)?\) \{\s+(return [\w$]+;|this.[\w$]+ = [\w$]+;)\s+\} 
    
    +0

    शायद यह होसम एली के उत्तर पर एक टिप्पणी होनी चाहिए, न कि स्वयं का जवाब। – Jules

    2

    regexp प्रतिस्थापन दृष्टिकोण का एक परिवर्तन के रूप में, निम्नलिखित खाली स्थान के reformats ताकि setters एक रिक्त पंक्ति के बाद कर रहे हैं, लेकिन टिककर खेल नहीं हैं।

    खोजें: में

    $1 { $2$4 } \R$5 
    

    परिणाम::

    (\s(?:get|is|set)\w+\([^)]*\))\s*\{\s*(?:([^=;}]+;)\s*\}\s*(\R)|([^=;}]+=[^=;}]+;)\s*\}\s*(\R)) 
    

    से बदलें

    int getTotal() { return total; } 
    void setTotal(int total) { this.total = total; } 
    
    List<String> getList() { return list; } 
    void setList(List<String> list) { this.list = list; } 
    
    Map.Entry<String, Integer> getEntry() { return entry; } 
    void setEntry(Map.Entry<String, Integer> entry) { this.entry = entry; } 
    

    यह एक छोटी सी सौंदर्य बात है, लेकिन मैं समझ है कि आप एक के लिए देख रहे हैं इस सवाल का जवाब दें, तो आप शायद (लगभग) मेरे जैसा गुदा हो ;-)

    मुझे पता है कि मेरी regexp स्थितियां @ होसम के जितनी सख्त नहीं हैं, लेकिन मुझे किसी भी "झूठी सकारात्मक" प्रतिस्थापन का अनुभव नहीं हुआ है।

    +0

    कमाल, बस मैं क्या खोज रहा हूँ! –

    +0

    सबसे बड़ा जवाब (इस पृष्ठ में सभी को आजमाएं) – ismail

    संबंधित मुद्दे