2012-12-14 10 views
18

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

तो, मैं #warning Warning Message पर समान कार्यक्षमता चाहता हूं लेकिन मैं इसे चेतावनी के रूप में वर्गीकृत नहीं करना चाहता हूं।

प्रसंग:

मैं परियोजनाओं है कि वर्तमान में चेतावनी का एक बहुत उत्पन्न की एक बहुत कुछ है। मैं पहले क्या करना चाहता हूं नई चेतावनियों को पेश करने से रोकता है। तो, मैं कर दिया है:

  1. के माध्यम से चला गया और #pragma warning disable/restore इस्तेमाल किया मौजूदा चेतावनी समाप्त करने के लिए "त्रुटि के रूप में चेतावनी" चालू किया गया।

हालांकि, चेतावनी के लिए मैं विकलांग, मैं एक संदेश बाहर मुद्रित करने के लिए यह दर्शाता है एक चेतावनी यहाँ जांच की जा रही है (क्योंकि मैं अभी तक जांच नहीं की क्या इन के लिए किया जाना चाहिए की जरूरत है कि है कि वहाँ करना चाहते हैं चेतावनी)। उदाहरण के लिए, कई चेतावनियां "अप्रचलित" प्रकार की चेतावनियां हैं, जहां हमें कुछ बिंदु पर जाने और कुछ काम करने की आवश्यकता होती है। इसलिए, मैं नहीं चाहता कि ये चेतावनियां गायब हों।

आदर्श रूप में, मैं इस तरह कुछ करना चाहते हैं:

#pragma warning disable 0618 
#message Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

मैं इस मुद्दे से निपटने के अन्य दृष्टिकोण के लिए खुला रहा हूँ।

+0

# प्राग्मा चेतावनी अक्षम, और आउटपुट के लिए खोज करने के लिए एक वीडियोज़ लिखें, फिर इसे निर्माण के बाद में कॉल करें? –

+0

समस्या को तैयार करने का एक और तरीका: "त्रुटियों के रूप में चेतावनियां" चालू करें, सभी चेतावनियां अब त्रुटियां हैं। और फिर एक चेतावनी में अब एक त्रुटि को वापस करने का एक तरीका है। तो चेतावनियां प्राप्त करने के लिए एक तंत्र, भले ही "त्रुटियों के रूप में चेतावनियां" सक्षम हों। –

+0

@ डैन, हां। वह शानदार होगा। –

उत्तर

6

MSDN के अनुसार आप #pragma विस्तार कर सकते हैं नहीं: http://msdn.microsoft.com/en-us/library/x74w198a.aspx

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

#pragma warning disable 0618 
//TODO: Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

और उसके बाद, यदि आप देखें खोल देंगे -> कार्य सूची -> लटकती में चुनिंदा टिप्पणियां, यदि आप अपनी टिप्पणी वहाँ देखेंगे।
3 पूर्वनिर्धारित टोकन हैं: TODO, हैक और पूर्ववत - और आप अपने खुद के जैसा संदेश जोड़ सकते हैं और अपने कोड के समान दिखाई क्या आप शुरू में उम्मीद बनाने के लिए यह की प्राथमिकता बदल सकते हैं:

#pragma warning disable 0618 
//MESSAGE: Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

टोकन के बारे में अधिक जानकारी आप यहां मिलेगा: http://msdn.microsoft.com/en-us/library/zce12xx2(v=vs.100).aspx

उल्लेख करने के लायक है कि यदि आप रिशेर्पर का उपयोग करते हैं, तो इसका TODO के लिए एक और टूल है। मुझे यह यहां मिलेगा: रीशेपर -> टूल्स -> टू-डू आइटम

+0

धन्यवाद, मुझे लगता है कि यह "पर्याप्त निकट" समाधान हो सकता है। मैं वास्तव में उम्मीद कर रहा था कि बिल्ड समय पर "आपके चेहरे में" थोड़ा और कुछ होगा, लेकिन इससे उन्हें ट्रैक रखने के लिए एक समाधान प्रदान किया जाता है। मैं वापस आऊंगा और इसे "स्वीकृत उत्तर" के रूप में चिह्नित करूंगा यदि मुझे कोई उत्तर नहीं मिलता है तो मुझे जल्द ही बेहतर पसंद है। –

1

आपको csc task's WarningsNotAsErrors पैरामीटर पर एक नज़र रखना चाहिए। जब "स्वीकार्य" चेतावनियों की सूची इस पैरामीटर को TreatWarningsAsErrors = true के साथ निर्दिष्ट की जाती है, तो आपको अपनी मौजूदा चेतावनियां लॉग इन करनी चाहिए जबकि नए त्रुटियों के रूप में दिखाई देंगे।

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

लेकिन मेरा पहला सुझाव तो बस इन ठीक करने के लिए किया जाएगा। एक बार निर्माण के बाहर छिपा हुआ वे शायद ही कभी संबोधित हो जाते हैं।

+0

यह काम कर सकता है अगर मैं उन चेतावनियों को अकेला कर सकता हूं जो * I * मैन्युअल रूप से बनाते हैं (यानी # चेतावनी के साथ बनाए गए)। मुझे चेतावनियों को ठीक करना अच्छा लगेगा, लेकिन कुछ लोग समय-समय पर कार्रवाई करेंगे, इसलिए दूसरी बार मैं नए लोगों को बनने से रोकना चाहता हूं। –

2

यदि आप विजुअल स्टूडियो के "प्रीमियम" या "अल्टीमेट" संस्करण का उपयोग कर रहे हैं, तो इसमें नियम सेट का उपयोग करके कोड विश्लेषण की सुविधा है।

किसी भी प्रोजेक्ट के लिए जब आप & पर राइट क्लिक करते हैं तो गुण विश्लेषण पर जाएं, कोड विश्लेषण टैब का चयन करें, इसमें चेतावनी का इलाज करने जैसे बॉक्स सेटिंग्स से अलग है, चेतावनी को अक्षम करना।

आप अनदेखा या त्रुटि के रूप में इलाज के लिए चेतावनी कॉन्फ़िगर कर सकते हैं। आप Microsoft नियम सेट बॉक्स के बाहर उपयोग कर सकते हैं या वैकल्पिक रूप से आप अपनी आवश्यकताओं के अनुसार एक कस्टम नियम बना सकते हैं (जो मेरी आवश्यकता के लिए बहुत मुश्किल & काम नहीं किया गया है)।

प्रबंधित कोड के लिए कोड विश्लेषण सक्षम करने के लिए:

  1. समाधान Explorer में एक परियोजना का चयन करें।
  2. प्रोजेक्ट मेनू पर, गुण क्लिक करें।
  3. कोड विश्लेषण पर क्लिक करें।
  4. बिल्ड पर कोड विश्लेषण सक्षम करें (CODE_ANALYSIS निरंतर परिभाषित करता है) का चयन करें।

कोड विश्लेषण को विन्यस्त पर जानकारी के लिए, कृपया देखें: http://seesharper.wordpress.com/2010/04/02/code-analysis-in-team-build-2010/

कस्टम rulesets निर्माण के लिए:

http://msdn.microsoft.com/en-us/library/dd264974.aspx

http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx

नियम-सेट & कोड विश्लेषण के बारे में सीखने के लिए:

http://msdn.microsoft.com/en-us/library/dd264996.aspx

+0

दिलचस्प। मेरे पास प्रीमियम है, इसलिए जब मैं काम पर वापस आऊंगा तो मैं कोशिश करूँगा। धन्यवाद! –