मेरे पास एक डेमो प्रोजेक्ट है, जो एक असेंबली बनाता है और इसका उपयोग करता है। मैं इंजेक्शन कोड डीबग भी कर सकता हूं। लेकिन अगर मैं कवरेज, विश्लेषण या प्रोफाइलिंग चलाता हूं, तो इसकी गणना की जाती है, लेकिन मैं इसे मापना चाहता हूं।गतिशील रूप से जेनरेट कोड के लिए कोड कवरेज, विश्लेषण और प्रोफाइलिंग
कोड:
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = false; // debug enabled
parameters.OutputAssembly = "DynamicCode.dll"; // if specified creates the DLL
parameters.IncludeDebugInformation = true;
CompilerResults results = icc.CompileAssemblyFromFile(parameters, "InjectedCode.cs.txt");
मैं उत्पन्न आईएल कोड की जाँच करने के DLL पैदा करते हैं। मैं वीएस में कोड डीबग कर सकता हूं। लेकिन जब मैं कवरेज चलाता हूं, तो जेनरेट असेंबली बस मिस होती है, अगर मैं टीईएमपी निर्देशिका का उपयोग करता हूं, या यदि मैं डीएलएल आउटपुट करता हूं (ऊपर की तरह) कोई फ़ाइल कवरेज में शामिल नहीं है (इसलिए मुख्य असेंबली भी नहीं)।
जब मैं रूपरेखा चलाने के लिए, मैं केवल आह्वान (प्रतिबिंब), लेकिन कुछ भी उत्पन्न कोड के बारे में देख सकते हैं। जब मैं विश्लेषण करता हूं (मुझे इंजेक्शन कोड में कुछ त्रुटियां हैं, उदाहरण के लिए स्थानीय लोगों का उपयोग नहीं किया जाता है, और सब कुछ के लिए विश्लेषण विश्लेषण), इंजेक्शन कोड से कोई समस्या नहीं होती है। इंजेक्शन कोड:
namespace CodeInjection
{
public static class DynConcatenateString
{
public static string Concatenate(string s1, string s2){
// System.Diagnostics.Debugger.Break(); // break here for debugger and also test comment output
int a = 1+2+3+4+5; // complicated math
int b = a+2;
int c = 0;
return s1 + " !"+b+"! " + s2;
}
}
}
मैं जेनरेट कोड (मुख्य रूप से कवरेज) पर कवरेज, प्रोफाइलिंग और विश्लेषण का उपयोग करना चाहता हूं।
भी छोड़ दिया गया (कोड कवरेज के बाद मेरी पहली कोशिश छोड़ दी गई थी)। जेटब्रेन कवर और अन्य टूल्स मिस भी। अब मैं इस विषय में गहराई से जा रहा हूं, उम्मीद है कि अगले हफ्ते के नतीजों के साथ, इसलिए मैं यहां भेजूंगा। कृपया मेरे प्रश्न को रेट करें, भले ही आपको लगता है कि यह उपयोगी है या नहीं। – cseppento