public void ParseTypes_Test() { var code = @"class A { void Add() { int a = 1; int b = 2; int c = a + b; } }"; var types = _cSharpService.ParseTypes(code); Assert.AreEqual("A", types[0].Name); CollectionAssert.AreEqual(new[] { 0, 1, 8 }, types[0].Lines); Assert.AreEqual("Add", types[0].Methods[0].Name); CollectionAssert.AreEqual(new[] { 2, 3, 7 }, types[0].Methods[0].Lines); }
public ActionResult Parse(string csCode) { if (_cSharpService.IsValid(csCode)) { List <PEType> peTypes; using (Stream peStream = new MemoryStream(), pdbStream = new MemoryStream()) { _cSharpService.Compile(csCode, peStream, pdbStream); peTypes = _peService.ParseTypes(peStream, pdbStream); } var csharpTypes = _cSharpService.ParseTypes(csCode); var model = csharpTypes.Select(d => new TypeViewModel { Name = d.Name, Lines = d.Lines, Methods = d.Methods.Select(m => new Method { Name = m.Name, Lines = m.Lines, BodyLines = peTypes.First(i => i.Name == d.Name) .Methods.First(pem => pem.Name == m.Name) .BodyLines.Select(b => new BodyLine { Line = b.Line, Instructions = b.Instructions }) }) }); return(Json(model)); } return(Json("error")); }