static int Main(string[] raw) { ArgumentList args = new ArgumentList(raw); using (Log.AppStart(Environment.CommandLine)) { if (args.Count == 0 || args.Unnamed.Count == 0 || args.Contains("?")) { return(DoHelp()); } if (args.Contains("nologo") == false) { Console.WriteLine("CSharpTest.Net.CoverageReport.exe"); Console.WriteLine("Copyright 2009 by Roger Knapp, Licensed under the Apache License, Version 2.0"); Console.WriteLine(""); } try { List <string> filesFound = new List <string>(); FileList files = new FileList(); files.RecurseFolders = args.Contains("s"); files.Add(new List <string>(args.Unnamed).ToArray()); XmlParser parser = new XmlParser(args.SafeGet("exclude").Values); foreach (System.IO.FileInfo file in files) { filesFound.Add(file.FullName); using (Log.Start("parsing file: {0}", file.FullName)) parser.Parse(file.FullName); } parser.Complete(); if (args.Contains("module")) { using (Log.Start("Creating module report.")) using (XmlReport rpt = new XmlReport(OpenText(args["module"]), parser, "Module Summary", filesFound.ToArray())) new MetricReport(parser.ByModule).Write(rpt); } if (args.Contains("namespace")) { using (Log.Start("Creating namespace report.")) using (XmlReport rpt = new XmlReport(OpenText(args["namespace"]), parser, "Namespace Summary", filesFound.ToArray())) new MetricReport(parser.ByNamespace).Write(rpt); } if (args.Contains("class")) { using (Log.Start("Creating class report.")) using (XmlReport rpt = new XmlReport(OpenText(args["class"]), parser, "Module Class Summary", filesFound.ToArray())) new MetricReport(parser.ByModule, parser.ByNamespace, parser.ByClass).Write(rpt); } if (args.Contains("unused")) { using (Log.Start("Creating unused statement report.")) using (UnusedReport rpt = new UnusedReport(OpenText(args["unused"]), parser)) new MetricReport(parser.ByModule, parser.ByMethod).Write(rpt); } if (args.Contains("combine")) { using (Log.Start("Creating combined coverage file.")) using (XmlCoverageWriter wtr = new XmlCoverageWriter(OpenText(args["combine"]), parser)) new MetricReport(parser.ByModule, parser.ByMethod).Write(wtr); } //foreach (ModuleInfo mi in parser) // Console.WriteLine("{0} hit {1} of {2} for {3}", mi.Name, mi.VisitedPoints, mi.SequencePoints, mi.CoveragePercent); } catch (Exception e) { Log.Error(e); Console.Error.WriteLine(); Console.Error.WriteLine("Exception: {0}", e.Message); Console.Error.WriteLine(); Environment.ExitCode = -1; } } if (args.Contains("wait")) { Console.WriteLine("Press [Enter] to continue..."); Console.ReadLine(); } return(Environment.ExitCode); }