private static string GetNameFromNewObjMethodReference(Mono.Cecil.MethodReference methodReference) { string[] array = methodReference.ToString().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string[] array2 = array[1].Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries); return array2[0].Trim(); }
private static string GetCallNameFromAnalyzeMethodCalls(Mono.Cecil.MethodReference methodReference) { string[] array = methodReference.ToString().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); return array[1].Trim(); }
private Type ExtractClassType(Mono.Cecil.MemberReference operand) { Type type = null; string typeName = operand.ToString(); if (operand.DeclaringType != null) typeName = operand.DeclaringType.FullName.Replace('/', '+'); type = Type.GetType(typeName); if (type == null) //TODO: Not correct, the module refers to current module, not the declaring type's module type = Type.GetType(typeName + ", " + operand.DeclaringType.Module.Assembly.Name.ToString(), true); return type; }
public static string GetGenericAttributeDesc (Mono.Cecil.GenericParameterAttributes ga) { return ga.ToString (); }
void FillTree_Method(Mono.Cecil.MethodDefinition method) { treeView2.Tag = method; treeView2.Nodes.Clear(); TreeNode methodinfo = new TreeNode(method.ToString()); treeView2.Nodes.Add(methodinfo); if (method.HasParameters) { TreeNode paraminfo = new TreeNode("Params"); treeView2.Nodes.Add(paraminfo); for (int i = 0; i < method.Parameters.Count; i++) { TreeNode p = new TreeNode(method.Parameters[i].ParameterType + " " + method.Parameters[i].Name); paraminfo.Nodes.Add(p); } } TreeNode body = new TreeNode("Body"); treeView2.Nodes.Add(body); if (method.HasBody) { TreeNode variables = new TreeNode("Variables"); body.Nodes.Add(variables); if (method.Body.HasVariables) { foreach (var v in method.Body.Variables) { TreeNode var = new TreeNode(v.VariableType + " " + v.Name); variables.Nodes.Add(var); } } TreeNode eh = new TreeNode("ExceptionHandlers"); body.Nodes.Add(eh); if (method.Body.HasExceptionHandlers) { foreach (Mono.Cecil.Cil.ExceptionHandler v in method.Body.ExceptionHandlers) { TreeNode var = new TreeNode(v.ToString()); eh.Nodes.Add(v.HandlerType + " " + v.CatchType + "(" + v.HandlerStart + "," + v.HandlerEnd + ")"); } } TreeNode code = new TreeNode("Code"); body.Nodes.Add(code); foreach (Mono.Cecil.Cil.Instruction i in method.Body.Instructions) { string line = i.ToString(); //i.Offset if (i.SequencePoint != null) { LoadCodeFile(i.SequencePoint.Document.Url); line += " |(" + i.SequencePoint.StartLine + "," + i.SequencePoint.StartColumn + ")"; if (codes[i.SequencePoint.Document.Url] != null) { int lines = i.SequencePoint.StartLine; if (lines - 1 < codes[i.SequencePoint.Document.Url].Length) line += "| " + codes[i.SequencePoint.Document.Url][i.SequencePoint.StartLine - 1]; } } TreeNode op = new TreeNode(line); op.Tag = i; code.Nodes.Add(op); } } treeView2.ExpandAll(); }