2011-06-12 10 views
12

FindBugs वितरण में, annotations.jarjsr305.jar का सबसेट नहीं है। हालांकि, कई एनोटेशन डुप्लीकेट लगते हैं (या तो बिल्कुल, या बहुत बारीकी से)। यदि मेरे पास कोई विकल्प है तो क्या मुझे jsr305.jar में एनोटेशन पसंद करना चाहिए?जार 305 में एनोटेशन होना चाहिए। Findbugs के लिए annotation.jar में समान एनोटेशन पर प्राथमिकता दी जानी चाहिए?

ध्यान दें कि मुझे यह जानने में दिलचस्पी नहीं है कि jsr305.jar से एनोटेशन का उपयोग करने के लिए यह "बेहतर" होगा क्योंकि वे मानक का प्रतिनिधित्व करते हैं। इसके बजाय, मैं जानना चाहता हूं कि क्या FindBugs टूल एक ही (या बेहतर) विश्लेषण करेगा यदि मैं किसी विशेष एनोटेशन के jsr305.jar संस्करण को प्राथमिकता देता हूं। यह मामला हो सकता है कि कुछ jsr305.jar एनोटेशन को प्राथमिकता दी जानी चाहिए, लेकिन दूसरों को नहीं करना चाहिए।

मैं इस लेखन के रूप में FindBugs 1.3.9 का उपयोग कर रहा हूं जो the most recent version है। इस संस्करण के साथ, मैं निम्नलिखित विकल्पों को देखने के (इस table अपडेट कर लें वहाँ दूसरों रहे हैं):

edu.umd.cs.findbugs.annotations.CheckForNull → javax.annotation.CheckForNull
edu.umd.cs.findbugs .annotations.CheckReturnValue → javax.annotation.CheckReturnValue
edu.umd.cs.findbugs.annotations.NonNull → javax.annotation.Nonnull (नायब पूंजीकरण)
edu.umd.cs.findbugs.annotations.Nullable → javax.annotation Nullable
edu.umd.cs.findbugs.annotations.When → javax.annotation.meta.When

इसके अलावा, JCIPannotations के सभी दोहराया गया है:

net.jcip.annotations.GuardedBy → javax.annotation.concurrent.GuardedBy
net.jcip.annotations.Immutable → javax.annotation.concurrent.Immutable
net.jcip.annotations.NotThreadSafe → javax.annotation.concurrent.NotThreadSafe
net.jcip.annotations.ThreadSafe → javax.annotation.concurrent.ThreadSafe

+1

क्षमा करें, मुझे आपके प्रश्न का दायरा नहीं मिला है।हालांकि, मैंने अपनी सभी परियोजनाओं को मानकबंदों के लिए अपनी एनोटेशन का उपयोग करके परिवर्तित किया और किसी भी बदलाव को नोटिस नहीं किया। बस मेरे व्यक्तिगत अवलोकन। अगर मुझे याद है कि सही ढंग से findbugs सत्यापन के लिए एक ही कोड का उपयोग करता है। मैं बाद में कोड पर एक नज़र डालेगा। इस बीच, मैंने अपना जवाब हटाने के लिए वोट दिया, क्योंकि यह वास्तव में आपके प्रश्न का उत्तर नहीं दे रहा है :) – Steffen

+0

हां, लेकिन आपकी टिप्पणी एक बहुत अच्छा जवाब देती है! कृपया इसे उत्तर देने पर विचार करें। एक बार फिर धन्यवाद। –

+0

मैंने अपना जवाब संशोधित किया। अभी भी कुछ आत्म-स्पष्टीकरण कोड भागों और कुछ अच्छे लिंक खोज रहे हैं। मुझे नहीं लगता कि यह कई बिंदु फाइलों को इंगित करने में बहुत अधिक समझ में आता है, मुझे अपने बिंदु को समझने के लिए पालन करना होगा। – Steffen

उत्तर

9

हां, यदि संभव हो तो आपको जेएसआर 305 एनोटेशन पसंद करना चाहिए। क्यूं कर? चूंकि जेएसआर 305 एक मानक है और जहां संभव हो वहां मानकों के साथ चिपकने का कुल अर्थ होता है। अपने स्वयं के अनुप्रयोगों को पोर्ट करते समय मुझे किसी भी समस्या या व्यवहार में बदलाव नहीं देखा गया। इसके अलावा, आप अपने स्वयं के @NotNull एनोटेशन को भी परिभाषित कर सकते हैं और findbugs इसे उठाएंगे (जब तक आप इसे नोट नूल नाम दें) this blog entry for more details देखें।

जहां तक ​​मैं स्रोतों को देखकर देख सकता हूं, findbugs आंतरिक रूप से समान विश्लेषण विधियों का उपयोग कर रहा है। प्रेषण केवल एनोटेशन नाम के आधार पर किया जाता है। जैसा ऊपर बताया गया है blog post में उल्लिखित, edu.umd.cs.findbugs.ba.NullnessAnnotation और NullnessAnnotationDatabase कक्षाओं को प्रारंभिक दृश्य प्राप्त करने के लिए आंतरिक रूप से यह कैसे किया जाता है। इस पैकेज पर एक नज़र डालें और आपको अन्य एनोटेशन जैसे jcip वाले के लिए समान कक्षाएं मिलेंगी।

तो कार्यान्वयन बिंदु से यह वास्तव में कोई फर्क नहीं पड़ता। सभी के लिए अभी भी यह सुनिश्चित नहीं है कि किस एनोटेशन का उपयोग करना है, मैं मानक एनोटेशन या स्वयं परिभाषित लोगों का उपयोग करने पर विचार करता हूं ताकि वे अपने कोड को खोजबग लाइब्रेरी पर निर्भर कर सकें।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन कृपया मेरे प्रश्न को पूरी तरह से दोबारा पढ़ें। मैं बस jsr305 सामान preferring में इतना दिलचस्पी नहीं है क्योंकि यह एक मानक है। मैं आपसे सहमत हूं कि, ceteris parabus, मानकों को प्राथमिकता दी जानी चाहिए, लेकिन मैं जानना चाहता हूं कि FindBugs के समान/समान एनोटेशन के लिए समान विश्लेषण समर्थन है या नहीं। –

+0

मुझे नहीं पता था कि यह सिर्फ नाम से मेल खाता है (जाहिर है मैंने स्रोतों का अध्ययन नहीं किया है)। अंतर्दृष्टि के लिए धन्यवाद! अब मुझे आश्चर्य है ... क्या यह केस संवेदनशील मिलान करता है? (Nonnull के लिए :) –

+0

इसके अतिरिक्त, 'edu.umd.cs.findbugs.annotations' में टिप्पणियां' @ अस्वीकृत 'के रूप में चिह्नित की गई हैं। –