2013-03-08 5 views
9

मेरे प्रोग्राम के नियमित स्थिर विश्लेषण के हिस्से के रूप में, मैं यह देखना चाहता हूं कि कक्षाओं में toString() विधियां हैं। शायद यह नहीं कि प्रत्येक वर्ग उन्हें लागू करता है, लेकिन शायद कोई तत्काल ठोस वर्ग के Object के कार्यान्वयन का उपयोग नहीं करता है।सत्यापित करें कि जावा क्लासेस टूस्ट्रिंग को लागू करते हैं()

क्या कोई लिंट टूलकिट है जो इसके लिए जांच करता है? जिन लोगों का मैं वर्तमान में उपयोग करता हूं वे FindBugs और CheckStyle हैं; मुझे इनमें से किसी एक का उपयोग करने के लिए एक स्पष्ट तरीका नहीं मिला है। मैं अपने लिंट सूट में पीएमडी जोड़ने की भी तलाश कर रहा हूं, और सोनार में कुछ भी खुलेगा। इसलिए मैं अपने उपकरण की छाती में पहले से ही एक उपकरण का उपयोग करना पसंद करूंगा, लेकिन अगर मुझे अभी तक एक और टूल जोड़ने की ज़रूरत है तो मैं इसे मानूंगा।

+1

मैं चेक स्टाइल का उपयोग करता हूं और एक कस्टम नियम बनाउंगा। एक अच्छे नियम की तरह लगता है - आपको इसे ओपन सोर्स कोड बेस में योगदान देना चाहिए। – Bohemian

+3

आह, अधिक नियम! यह एक स्ट्रिप क्लब की तरह है। – irreputable

उत्तर

4

आप इस Checkstyle Regexp जांच का उपयोग कर सकते हैं:

<module name="Regexp"> 
    <property name="format" value="public\s+String\s+toString\s*()"/> 
    <property name="message" value="All classes must implement toString()"/> 
    <property name="ignoreComments" value="true"/> 
</module> 

यह भी पहचानता है टिप्पणी की-आउट toString() मौजूद नहीं के रूप में तरीकों। मैंने चेकस्टाइल 5.6 और ग्रहण-सीएस का उपयोग करके इसे आजमाया, लेकिन इसे पहले के संस्करणों के साथ भी काम करना चाहिए।

+0

यह बहुत करीब है, धन्यवाद। यह उस मामले को कवर नहीं करता है जहां एक वर्ग को पूरी तरह से सेवा योग्य 'toString() '(उदा।' सारसूची 'से प्राप्त होता है), लेकिन यह वही हो सकता है जो मुझे चाहिए। –

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