12

मैं कोड कवरेज के लिए कौन सी परियोजनाओं का निरीक्षण किया जाता है, इसे नियंत्रित करने के लिए एक कस्टम रनेटिंग फ़ाइल का उपयोग कर रहा हूं। मैंने माइक्रोसॉफ्ट द्वारा प्रदान किए गए डिफ़ॉल्ट टेम्पलेट का उपयोग किया है और अब तक उन मुद्दों को बाहर करने में सक्षम हूं जिन्हें मैं बिना किसी समस्या के चाहता हूं। मेरी अगली कार्रवाई कोड कवरेज से बाहर निकलना है, जब आप एक सेवा संदर्भ जोड़ते हैं तो विजुअल स्टूडियो द्वारा बनाए गए ऑटो-जेनरेट की गई वेब प्रॉक्सी कक्षाएं।विजुअल स्टूडियो 2012 में रनेटिंग फ़ाइल का उपयोग करके मैं कोड कवरेज से सेवा संदर्भों को कैसे बहिष्कृत करूं?

यह कुछ ऐसा है डिफ़ॉल्ट runsettings टेम्पलेट के साथ काम करना चाहिए लग रहा था क्योंकि यह एक अनुभाग है कि इस तरह दिखता है है:

<Attributes> 
    <Exclude> 
     <!-- Don’t forget "Attribute" at the end of the name --> 
     <Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute> 
     <Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute> 
     <Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute> 
     <Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute> 
     <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute> 
    </Exclude> 
</Attributes> 

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

मैं पर सुझाव की सराहना करेंगे, कैसे करने के लिए या तो: - काम करने के लिए इस विशेषता का बहिष्कार मिल - एक विकल्प है कि मुझे आवश्यकता नहीं है पूरी परियोजना को छोड़ने के लिए या कि runsettings गैर सामान्य फ़ाइल बनाता है (हम करना चाहते हैं विशिष्ट आधारों के बिना सभी परियोजनाओं में इस बेस फ़ाइल का दोबारा उपयोग करें)

एफवाईआई - जबकि मुझे लगता है कि अन्य कोड कवरेज टूल्स हैं, मेरा लक्ष्य यहां विजुअल स्टूडियो को एक काम करना है, इसलिए किसी अन्य टूल पर स्विच करने के बारे में सुझाव नहीं हैं इस मामले में मेरे लिए सहायक।

उत्तर

4

एमएसडीएन का एक पृष्ठ है जो वर्णन करता है कि कोड कवरेज विश्लेषण here को कैसे अनुकूलित किया जाए।

पृष्ठ के निचले हिस्से में एक उदाहरण सेटिंग फ़ाइल है जो दिखाती है कि विशेषताओं को कैसे बाहर निकालना है, और यह आपके ऊपर से मेल खाता है।

आप इस तरह के पथ से बहिष्कृत करने जैसी अन्य बहिष्करण पद्धतियों वे का उल्लेख है, में से कुछ की कोशिश कर सकते:

<!-- Match the path of the source files in which each method is defined: --> 
<Sources> 
    <Exclude> 
     <Source>.*\\atlmfc\\.*</Source> 
     <Source>.*\\vctools\\.*</Source> 
     <Source>.*\\public\\sdk\\.*</Source> 
     <Source>.*\\microsoft sdks\\.*</Source> 
     <Source>.*\\vc\\include\\.*</Source> 
    </Exclude> 
</Sources> 
12

विचार के लिए धन्यवाद। मैं इन पंक्तियों को जोड़ना समाप्त कर दिया:

<Source>.*\\Service References\\.*</Source> 
<Source>.*\\*.designer.cs*</Source> 

और मुझे आवश्यक परिणाम मिल गए। मैं अभी भी कमजोर हूं कि मुझे नहीं पता कि इस फ़ाइल के अन्य भाग क्यों स्वीकार नहीं किए जा रहे हैं।

+1

यह उत्तर मेरे लिए काम किया। सेवा संदर्भों के बारे में विशेष रूप से पहली पंक्ति। एक और नोट यह सुनिश्चित करना है कि आप इस लिंक की शुरुआत में सभी निर्देशों का पालन करें (चरण 1-5) http://msdn.microsoft.com/en-us/library/jj159530.aspx । प्रारंभ में मुझे एहसास नहीं हुआ कि आपको टेस्ट मेनू के तहत अपनी टेस्ट सेटिंग्स फ़ाइल का चयन करना था। – ClearCloud8

3

मैं विशेषता के नामकरण की स्थापना करके इस सेटिंग को काम करने के लिए कर रहा था:

<Attributes> 
    <Exclude> 
    <Attribute>.*GeneratedCodeAttribute$</Attribute> 
    </Exclude> 
</Attributes> 

सुनिश्चित नहीं हैं कि क्यों, लेकिन वहाँ पूर्ण विशेषता नाम है कि नियमित अभिव्यक्ति से मेल नहीं खाता का एक हिस्सा होना चाहिए।

10

ऐसा लगता है कि यह मुद्दा RegEx की अवधि है। यदि आप उन्हें \. के रूप में बचते हैं तो यह काम करना शुरू कर देता है। निश्चित नहीं है कि यह वास्तव में क्यों है क्योंकि यह वास्तव में एक RegEx है, अवधि अवधि सहित any character से मेल खाना चाहिए।

तो मूल टेम्पलेट काम करने के लिए, आप इसे निम्न के बदल देंगे:

<Attributes> 
    <Exclude> 
     <Attribute>^System\.Diagnostics\.DebuggerHiddenAttribute$</Attribute> 
     <Attribute>^System\.Diagnostics\.DebuggerNonUserCodeAttribute$</Attribute> 
     <Attribute>^System\.Runtime\.CompilerServices\.CompilerGeneratedAttribute$</Attribute> 
     <Attribute>^System\.CodeDom\.Compiler\.GeneratedCodeAttribute$</Attribute> 
     <Attribute>^System\.Diagnostics\.CodeAnalysis\.ExcludeFromCodeCoverageAttribute$</Attribute> 
    </Exclude> 
</Attributes> 

इसके अलावा सिर्फ तुम जानते हो, <ModulePaths> फिल्टर आप इस्तेमाल कर सकते हैं करने के लिए है जो एक ही मुद्दा है यह बताने के लिए:

<ModulePaths> 
    <Include> 
     <ModulePath>.*MyCompany\.Namespace\.Project\.dll$</ModulePath> 
    </Include> 
    <Exclude> 
     <ModulePath>.*ThirdParty\.Namespace\.Project\.dll$</ModulePath> 
    </Exclude> 
</ModulePaths> 
संबंधित मुद्दे