private ICallGraphNode CreateCallGraphNode(string name) { var info = CallInfo.CreateFake( new AssemblyInfo(UTF8String.Empty, AssemblyInfo.EmptyVersion), MethodUniqueSignature.Create(name)); return(new CallInfoNode(info)); }
public void MethodUniqueNameGenericTest() { var name = MethodUniqueSignature.Create( "YamlDotNet.Serialization.BuilderSkeleton`1<YamlDotNet.Serialization.DeserializerBuilder>::.ctor()"); Assert.That(name.ToString(), Is.EqualTo("YamlDotNet.Serialization.BuilderSkeleton::.ctor()")); var name2 = MethodUniqueSignature.Create("System.Collections.Generic.IDictionary`2<System.String,System.Object> YamlDotNet.Serialization.Deserializer::Deserialize<System.Collections.Generic.IDictionary`2<System.String,System.Object>>(System.String)"); Assert.That(name2.ToString(), Is.EqualTo("System.Collections.Generic.IDictionary YamlDotNet.Serialization.Deserializer::Deserialize(System.String)")); }
private CallGraphNode CreateCallGraphNode(string name) { var info = new CallInfo( new AssemblyInfo(UTF8String.Empty, AssemblyInfo.EmptyVersion), MethodUniqueSignature.Create(name), OpCodes.Call, true, new List <MethodUniqueSignature>(0)); return(new CallGraphNode(info)); }
//[Ignore("for debugging only, change type and methodName vars for your case")] public void SingleCase() { var type = typeof(KnowledgeBase.Cases.XslCompiledTransformPatterns); var methodName = nameof(KnowledgeBase.Cases.XslCompiledTransformPatterns.XsltLoadWithPayload); var context = Context.CreateToAnalyze(); var method = type.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance); var errors = Loader.ExecuteCase(context, type, new[] { method }); //var patternGroup = Loader.GetPatternGroup(type, methodName); Assert.That(errors, Is.Empty); Assert.That(context.Patterns.Count, Is.GreaterThan(0)); var builder = new CallGraphBuilder(index); var graph = builder.CreateGraph(context.Patterns); Assert.That(graph.EntryNodes.Count, Is.GreaterThan(0)); Assert.That(graph.EntryNodes.Keys .Contains(MethodUniqueSignature.Create($"{type.FullName}::{methodName}()"))); }
public void AllCases() { foreach (var type in Loader.GetCaseTypes()) { Console.WriteLine($"{type}:"); foreach (var method in Loader.GetCaseMethods(type)) { Console.WriteLine($" {method}"); var context = Context.CreateToAnalyze(); var errors = Loader.ExecuteCase(context, type, new[] { method }); Assert.That(errors, Is.Empty); Assert.That(context.Patterns.Count, Is.GreaterThan(0)); var builder = new CallGraphBuilder(index); var graph = builder.CreateGraph(context.Patterns); Assert.That(graph.EntryNodes.Count, Is.GreaterThan(0)); Assert.That(graph.EntryNodes.Keys .Contains(MethodUniqueSignature.Create($"{type.FullName}::{method.Name}()"))); } } }