2015-03-04 9 views
24

में एनोटेशन प्रोसेसर-जेनरेट की गई त्रुटियां/चेतावनियां नहीं दिख रही हैं Iclipse प्लगइन में लिपटे विभिन्न स्रोत फ़ाइलों को उत्पन्न करने के लिए मैंने एक ग्राहक एनोटेशन प्रोसेसर लिखा है। इस प्रक्रिया के हिस्से के रूप में यह सामान्य कॉल ProcessingEnvironment#getMessager().printMesssage(Kind, String, Element) का उपयोग करके विभिन्न त्रुटियों और चेतावनियों को भी लॉग करता है।ग्रहण संपादक या समस्याएं

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

हालांकि कस्टम त्रुटियों और चेतावनियां कैसे दिखाई देती हैं, इस मामले में मुझे बहुत सारी असंगतताएं दिखाई दे रही हैं। व्यवहार मैं देख रहा हूँ इस प्रकार है: कोई तत्व निर्दिष्ट किया जाता है

  1. तो सभी संदेश त्रुटि लॉग प्रकार जानकारी के तहत में दिखाई देते हैं, किस तरह की परवाह किए बिना निर्दिष्ट जब त्रुटि लॉग इन करने।
  2. यदि कोई संदेश NOTE का संदेश है तो यह हमेशा त्रुटि लॉग के अंतर्गत त्रुटि लॉग में दिखाई देता है, भले ही तत्व निर्दिष्ट किया गया हो या नहीं।
  3. अन्यथा, यदि कोई तत्व निर्दिष्ट त्रुटियों और चेतावनियों को समस्या दृश्य में और संपादक में अंतःस्थापित दिखाई देता है; कभी-कभी वे कहीं भी दिखाई नहीं देते। वे में त्रुटि लॉग कभी प्रदर्शित नहीं है, चाहे तरह ERROR या WARNING

ऊपर जोर के अनुसार है, असली मुद्दा आइटम 3 है - कि कुछ स्थितियों के तहत मैं बस त्रुटियों संपादक में प्रदर्शित करने के नहीं मिल सकता होने के बावजूद वैध तत्वों पर लॉग ऑन असल में, मैंने विश्वसनीय रूप से त्रुटियों को प्रकट करने में कामयाब रहे हैं और किसी विशेष जेनरेट की गई स्रोत फ़ाइल के नाम को बदलकर दिखाई नहीं दे रहे हैं।

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

दुर्भाग्य से मैं भी नहीं अभी तक समय यह समस्या आती है, तो जब ग्रहण प्लगइन तैनात किया जाता है परीक्षण करने के लिए (यानी ग्रहण के एक 'असली' उदाहरण में चल रहे) पड़ा है, या वास्तव में समस्या इसलिए होती है, तो जब javac स्पष्ट रूप से कॉल करने या लागू एक मेवेन बिल्ड।

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

ग्रहण संस्करण विवरण:

Version: Luna Service Release 1a (4.4.1) 
Build id: 20150109-0600 

किसी भी मदद की सराहना की और अग्रिम :)

+0

एक बात जो मैंने देखा है वह है कि ग्रहण में इसका स्वयं का क्लासलोडर (और बाइटकोड संशोधन उपयोगिता भी है?) जो कभी-कभी अप्रत्याशित व्यवहार होता है, अधिकांशतः आईडीई में उपयोगकर्ता अनुभव को बेहतर बनाने के लिए। आपने शायद पहले ही इस बारे में सोचा है, लेकिन 'नया थ्रोबल ("डीबग संदेश") जोड़ना। कोड के विभिन्न हिस्सों में डीबग स्टेटमेंट के रूप में printStackTrace() 'आमतौर पर जहां मैं शुरू करता हूं जब मैं कुछ और नहीं समझ सकता। – Marco

उत्तर

1

यदि कोई समस्या/त्रुटि है में बहुत धन्यवाद ग्रहण समस्याएं ध्यान में रखते हुए दिखाए जाने के लिए, आप एक मार्कर बनाने की जरूरत विशेष संसाधन (फ़ाइल/फ़ोल्डर/परियोजना) पर।

https://wiki.eclipse.org/FAQ_How_do_I_create_problem_markers_for_my_compiler%3F https://www.eclipse.org/articles/Article-Mark%20My%20Words/mark-my-words.html

के संदर्भ में कैसे कस्टम त्रुटियों/चेतावनी दिखाई देते हैं, समस्याएं दृश्य (या सामान्य MarkersView) पूरी तरह से लचीला है: कृपया कैसे एक ग्रहण प्लगइन में मार्करों बनाने के लिए पर निम्नलिखित लिंक देखें कुछ तत्वों को दिखाने/छिपाने के लिए। अधिक विचार पाने के लिए समस्याएं देखें "सामग्री कॉन्फ़िगर करें ..." मेनू पर एक नज़र डालें।

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