2012-06-05 14 views
12

की एक ही पंक्ति के लिए एकाधिक FindBugs चेतावनियों को दबाने के लिए कैसे करें मैंने हाल ही में FindBugs '@edu.umd.cs.findbugs.annotations.SuppressWarnings एनोटेशन की खोज की जो कि बहुत अच्छा है और आपको कुछ चेतावनियों को अनदेखा करने के लिए मूल रूप से FindBugs को बताने की अनुमति देता है।कोड

मैंने slf4j-simple लेने के लिए अपनी सिफारिशों का पालन करके अपने स्वयं के एसएलएफ 4 जे बाध्यकारी को सफलतापूर्वक कार्यान्वित किया है और इसे अपने स्वयं के लॉगर और लॉगर फैक्ट्री बाइंडिंग के साथ संशोधित किया है, और मुझे यह कहते हुए खुशी हो रही है कि यह एक आकर्षण की तरह काम करता है।

मैं सिर्फ पैकेज इस SLF4J बंधन और यह मूल StaticLoggerBinder लेखक (Ceki Gulku) द्वारा लिखे कोड के एक निश्चित लाइन के बारे में शिकायत कर रहा है जिसमें पर कीड़े खोजने के भाग गया:

// to avoid constant folding by the compiler, this field must *not* be final. 
publicstatic String REQUESTED_API_VERSION = "1.6"; // !final 

FindBugs शिकायत इस क्षेत्र है कि "अंतिम नहीं है लेकिन यह होना चाहिए"। हालांकि, SLF4J पर (बहुत) स्मार्ट लोग पहले से ही इसके बारे में सोचते थे, और ऊपर प्रदान की गई आसपास की टिप्पणियां रखीं। एक

@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL") 
public static String REQUESTED_API_VERSION = "1.6"; 

जब मैं अपने प्रोजेक्ट और फिर से चलाने के FindBugs साफ, मैं मिलता है:

तो, सिर्फ FindBugs चुप रहो करने के लिए प्राप्त करने के लिए, मैं अमेरिकन प्लान चेतावनी को दबा के अपने हमेशा की तरह प्रति कोड संशोधित करने के कोड की एक ही लाइन पर दूसरा चेतावनी, इस बार शिकायत:

इस क्षेत्र कभी नहीं पढ़ा जाता है। क्षेत्र सार्वजनिक या संरक्षित है, इसलिए शायद इसका उद्देश्य विश्लेषण के हिस्से के रूप में नहीं देखे जाने वाले वर्गों के साथ उपयोग किया जाना है। यदि नहीं, तो कक्षा से इसे हटाने पर विचार करें।

जब मैं इस दूसरी चेतावनी दमन जोड़ें:

@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL") 
@edu.umd.cs.findbugs.annotations.SuppressWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD") 
public static String REQUESTED_API_VERSION = "1.6"; 

मैं ग्रहण से एक संकलक/सिंटेक्स त्रुटि मिलती है:

डुप्लिकेट एनोटेशन @SuppressWarnings।

मैं कोड की एक ही पंक्ति पर एकाधिक FindBugs चेतावनियों को कैसे दबा सकता हूं?

+0

सुझाव: का प्रयोग करें 'SuppressFBWarnings' ताकि आप के रूप में आप किसी भी अन्य वर्ग पूरी तरह से योग्य नाम का उपयोग होगा बजाय इसे आयात कर सकते हैं । –

उत्तर

17

बस, एक सरणी में सभी चेतावनी पहचानकर्ता सूची एक भी एनोटेशन के भीतर:

@edu.umd.cs.findbugs.annotations.SuppressWarnings({ 
     "MS_SHOULD_BE_FINAL", 
     "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"}) 
public static String REQUESTED_API_VERSION = "1.6"; 
बस मानक java.lang.SuppressWarnings के लिए के रूप में

, FindBugs संस्करण भी has a parameter of type String[]। एक ही मूल्य के लिए, जीवन को आसान बनाने के लिए घुंघराले ब्रेसिज़ को छोड़ा जा सकता है।

1

इस प्रयास करें:

@edu.umd.cs.findbugs.annotations.SuppressWarnings({"MS_SHOULD_BE_FINAL" , "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"}) 
public static String REQUESTED_API_VERSION = "1.6"; 
1

FindBugs 3+ शैली:

@SuppressFBWarnings(
    value={"NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE","STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"}, 
    justification="let me just make the build pass")