private static void WriteStats(StreamWriter sw, IDictionary<File, string> files, TypeDefinition[] types, int total) { var stats = files.SelectMany(x => x.Key.Annotations).Select(x => x.Type) .GroupBy(x => x) .Select(x => new {Type = types.First(y => y.Name == x.Key).Display, Count = x.Count()}) .OrderBy(x => x.Type) .ToArray(); foreach (var stat in stats) { sw.WriteLine("<tr><th>{0}:</th><td>{1}</td></tr>", WebUtility.HtmlEncode(stat.Type), stat.Count); } if (stats.Length != 1) { sw.WriteLine("<tr><th>Total:</th><td>{0}</td></tr>", total); } }
private void WriteHeader(StreamWriter sw, File file, TypeDefinition[] types) { var encodedfilename = WebUtility.HtmlEncode(file.Name); var total = file.Annotations.Length; sw.WriteLine("<html>"); sw.WriteLine("<head>"); sw.WriteLine("<meta charset='utf-8' />"); sw.WriteLine("<title>{0} Report</title>", encodedfilename); sw.WriteLine("<link rel='stylesheet' type='text/css' href='report.css' />"); sw.WriteLine("</head><body><div class='container'>"); sw.WriteLine("<h1>Summary</h1>"); sw.WriteLine("<table class='overview'>"); sw.WriteLine("<colgroup>"); sw.WriteLine("<col width='160' />"); sw.WriteLine("<col />"); sw.WriteLine("</colgroup>"); sw.WriteLine("<tbody>"); sw.WriteLine("<tr><th>File:</th><td>" + encodedfilename + "</td></tr>"); var stats = file.Annotations.Select(x => x.Type) .GroupBy(x => x) .Select(x => new {Type = types.First(y => y.Name == x.Key).Display, Count = x.Count()}) .OrderBy(x => x.Type) .ToArray(); foreach (var stat in stats) { sw.WriteLine("<tr><th>{0}:</th><td>{1}</td></tr>", WebUtility.HtmlEncode(stat.Type), stat.Count); } if (stats.Length != 1) { sw.WriteLine("<tr><th>Total:</th><td>" + total + "</td></tr>"); } sw.WriteLine("</tbody>"); sw.WriteLine("</table>"); sw.WriteLine("<h1>Sourcode</h1>"); }