/// <summary> /// Run the report (validates settings against the generator given) /// </summary> /// <param name="report">The report object to perform the analysis</param> /// <param name="generator">Generator type given</param> /// <param name="outputXml">Output XML file name/path</param> /// <param name="quiet">Indicates if any console output should be available</param> /// <param name="violations">True to report each violation encountered</param> private static void RunReport(ReportBuilder report, string generator, string outputXml, bool quiet, bool violations) { var generatorType = Generator.Default; if (generator != null) { generatorType = (Generator)Enum.Parse(typeof(Generator), generator, true); } FileRunner runner; switch (generatorType) { case Generator.Xml: report = report.WithOutputEventHandler( (x, y) => { violationCount++; if (!quiet) { OutputGenerated(x, y); } }); runner = new XmlRunner(); break; default: EventHandler<StyleCop.ViolationEventArgs> callback = HadViolation; if (!quiet) { if (violations) { callback = ViolationEncountered; } else { report = report.WithOutputEventHandler(OutputGenerated); } } report = report.WithViolationEventHandler(callback); runner = new ConsoleRunner(); break; } runner.OutputFile = string.IsNullOrEmpty(outputXml) ? null : string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}.xml", System.IO.Path.GetFileNameWithoutExtension(outputXml)); report.Create(runner); }
public void XmlWriterTest() { var report = new ReportBuilder() .WithFiles(new List<string>() { DirectoryPath + "ClassOne.cs", DirectoryPath + "SubNamespace" + Path.DirectorySeparatorChar + "ClassTwo.cs" }); var result = new List<string>(); report.WithOutputEventHandler((x, y) => { result.Add(((StyleCop.OutputEventArgs)y).Output); }); var runner = new XmlRunner(); report.Create(runner); // Only 1 item should be reported Assert.AreEqual(1, result.Count, BasePath); Assert.AreEqual("Violations were encountered.", result[0]); }