Mam projekt demonstracyjny, który tworzy zespół i używa go. Mogę również debugować kod wstrzyknięty. Ale jeśli prowadzę zasięg, analizę lub profilowanie, to się liczy, ale chcę to zmierzyć.Pokrycie kodu, analiza i profilowanie dynamicznie generowanego kodu
Kod:
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");
tworzę DLL, aby sprawdzić wygenerowany kod IL. Mogę debugować kod w VS. Ale kiedy uruchamiam zasięg, wygenerowany zestaw jest po prostu pominięty, jeśli korzystam z katalogu TEMP, lub jeśli wyprowadzam bibliotekę DLL (jak wyżej), NO FILE jest uwzględnione w zasięgu (a więc nawet w głównym zespole).
Po uruchomieniu profilowania widzę tylko wywołanie (odbicie), ale nic na temat wygenerowanego kodu. Kiedy wykonuję analizę (mam pewne błędy we wstrzykniętym kodzie, np. Nieużywane locale i analiza ofc dla wszystkiego), nie zgłoszono żadnych problemów z wstrzykniętego kodu. Wstrzykiwany kod:
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;
}
}
}
Chciałbym użyć zasięgu, profilowania i analizy wygenerowanego kodu (głównie pokrycia).
Pominięto również (była to moja pierwsza próba po pomijaniu pokrycia kodu). Brakuje również osłonek jetbrains i innych narzędzi. Teraz idę głębiej w temacie, mam nadzieję, że z wynikami w przyszłym tygodniu, więc wyślę tutaj. Proszę ocenić moje pytanie, czy uważasz, że jest użyteczne czy nie. – cseppento