2012-01-18 19 views
15

मैं जावाडोक कि @SuppressWarnings एनोटेशनमैं एक पैकेज पर चेतावनी चेतावनी क्यों नहीं दे सकता?

TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE 

लक्ष्य पर लागू होता है से देखते हैं। यह PACKAGE पर भी लागू क्यों नहीं होता है?

मेरे पास कुछ जेनरेट कोड है जिसमें कुछ कच्चे प्रकार की चेतावनियां हैं। मैं जेनरेटेड क्लास (एक अलग भौतिक निर्देशिका में लेकिन एक ही जावा पैकेज) के लिए package-info.java फ़ाइल जोड़ने में सक्षम होना चाहता हूं जो पैकेज में जेनरेट की गई कक्षाओं से उत्पन्न किसी भी कच्चे प्रकार की चेतावनियों को अनदेखा करने के लिए ग्रहण को बताता है।

यह क्यों समर्थित नहीं है? क्या पूरे पैकेज में चेतावनी दबाने का कोई वैकल्पिक तरीका है?

+1

साथ [यह] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6299893) –

+1

जांच [यह] (http://stackoverflow.com/questions/1127920/ आपकी समस्या एक ही है कैसे-टू-दप्रेस-जावा-चेतावनियां-विशिष्ट-निर्देशिका-या-फाइल-जैसे-जेनरेट करें) कृपया –

+1

@ फ़ारिडमोव्सुमोव - मुझे ओरेकल "बग" के समान समस्या है। जब मैं अपने ओरेकल आईडी को देख सकता हूं तो उस बग रिपोर्ट में अपना 2 सेंट जोड़ना होगा। –

उत्तर

7

कारण यह है कि पैकेज के स्तर पर दबा चेतावनी अनुमति नहीं है एक पुरानी बग रिपोर्ट के जवाब में स्पष्ट किया गया था (स्थिति - बंद, ठीक नहीं होगा): Allow SuppressWarnings to be specified at the package level

चेतावनियां वास्तव में जेनरेट कोड में संभावित समस्याओं का संकेत देती हैं।

वर्तमान में, SuppressWarnings की की वांछनीय संपत्ति केवल लेक्सिकली नेस्टेड कोड को प्रभावित करती है। इसका अर्थ यह है कि आप तुरंत देख सकते हैं कि कोड में एक चेतावनी को दबाया जा सकता है जिसे आप पढ़ रहे हैं।

यह प्रस्ताव एक असामान्य समस्या को हल करने के लिए इस संपत्ति का उल्लंघन करेगा जो ज्यादातर मामलों में काम किया जा सकता है।

उस प्रतिक्रिया में सुझाए गए कुछ काम आसपास भी हैं।

  1. स्रोत 1.4 का उपयोग कर अपने आप में उत्पन्न कोड संकलन और -target 5.

  2. अनुरोध JavaCC के एक अद्यतन संस्करण है जो या तो suppresswarnings का उपयोग करता है या कोड जो चेतावनी का कारण बनता है उत्पन्न नहीं करता है।

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

+0

ऐसा लगता है कि ओरेकल उस बग पर टिप्पणियों की संख्या के आधार पर स्वीकार करने के इच्छुक है, इसकी तुलना में यह एक आम समस्या है। लक्ष्य संस्करण 1.5 के लिए संकलन एक वर्कअराउंड नहीं है यदि आप 1.6 या 1.7 सुविधाओं का उपयोग करना चाहते हैं ... दुर्भाग्यवश एक अलग परियोजना में कोड निकालना इस मामले में मेरे लिए एक व्यवहार्य समाधान नहीं है। –

+0

यह निराशाजनक है। विशेष रूप से स्कैन के फोकस को कम करने के लिए स्थिर कोड विश्लेषण और SuppressWarnings के उपयोग को देखते हुए। बड़ी मोनोलिथिक परियोजनाओं पर जनरेटेड कोड को पुन: सक्रिय करने के लिए कोई राजनीतिक इच्छाशक्ति नहीं, परियोजनाओं को स्थानांतरित करना या निर्माण में कोड उत्पन्न करना आम तौर पर एक विकल्प नहीं है। –

1

अच्छा सवाल। शायद यह भविष्य में ओरेकल द्वारा तय किया जाएगा।

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

+0

मुझे नहीं लगता कि जेनरेट कोड को एक अलग परियोजना में निकालने के लिए इस मामले में व्यवहार्य समाधान है। फिर भी सुझाव के लिए धन्यवाद। –

+0

"शायद यह भविष्य में ओरेकल द्वारा तय किया जाएगा" मुझे जोर से हंसते हुए बनाया। उसके लिए धन्यवाद। – uckelman

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