public static void NotUndefined(this CodeAnalysisReport value, string parameterName) { if (value == CodeAnalysisReport.Undefined) { throw new ArgumentOutOfRangeException(parameterName); } }
/// <summary> /// Creates a report from a MsBuild logfile. /// </summary> /// <param name="fileSystem">Cake file system instance.</param> /// <param name="logFile">Path of the MsBuild logfile.</param> /// <param name="report">Type of report which should be created.</param> /// <param name="outputFile">Path of the generated report file.</param> public static void CreateCodeAnalysisReport( IFileSystem fileSystem, FilePath logFile, CodeAnalysisReport report, FilePath outputFile) { fileSystem.NotNull(nameof(fileSystem)); logFile.NotNull(nameof(logFile)); report.NotUndefined(nameof(report)); outputFile.NotNull(nameof(outputFile)); var xmlFile = fileSystem.GetFile(logFile); var resultFile = fileSystem.GetFile(outputFile); using (Stream xmlStream = xmlFile.OpenRead(), resultStream = resultFile.OpenWrite()) { var xslReader = XmlReader.Create(new StringReader(EmbeddedResourceHelper.GetReportStyleSheet(report.GetStyleSheetResourceName()))); var xmlReader = XmlReader.Create(xmlStream); var resultWriter = XmlWriter.Create( resultStream, GetSettings()); Transform(xslReader, xmlReader, resultWriter); } }
public void Should_Return_Stylesheet_Resource_Name(CodeAnalysisReport report, string expectedResult) { // When var result = report.GetStyleSheetResourceName(); // Then result.ShouldBe(expectedResult); }
/// <summary> /// Returns the name of the embedded stylesheet for a specific report. /// </summary> /// <param name="report">Report for which the stylesheet should be returned.</param> /// <returns>Content of the stylesheet.</returns> public static string GetStyleSheetResourceName(this CodeAnalysisReport report) { switch (report) { case CodeAnalysisReport.MsBuildXmlFileLoggerByAssembly: return("msbuild-xmlfilelogger-by-assembly.xsl"); case CodeAnalysisReport.MsBuildXmlFileLoggerByRule: return("msbuild-xmlfilelogger-by-rule.xsl"); default: throw new ArgumentOutOfRangeException(nameof(report)); } }
public static void CreateMsBuildCodeAnalysisReport( this ICakeContext context, FilePath logFile, CodeAnalysisReport report, FilePath outputFile) { context.NotNull(nameof(context)); logFile.NotNull(nameof(logFile)); report.NotUndefined(nameof(report)); outputFile.NotNull(nameof(outputFile)); MsBuildCodeAnalysisReporter.CreateCodeAnalysisReport( context.FileSystem, logFile, report, outputFile); }
public void Should_Return_Report(string logfileResourceName, CodeAnalysisReport report) { // Given var logFileName = Path.GetTempFileName(); var environment = FakeEnvironment.CreateWindowsEnvironment(); var fileSystem = new FakeFileSystem(environment); using (var ms = new MemoryStream()) using (var stream = this.GetType().Assembly.GetManifestResourceStream("Cake.CodeAnalysisReporting.Tests.Testfiles." + logfileResourceName)) { stream.CopyTo(ms); var data = ms.ToArray(); fileSystem.CreateFile(logFileName, data); } var outputFileName = Path.GetTempFileName(); try { // When MsBuildCodeAnalysisReporter.CreateCodeAnalysisReport( fileSystem, logFileName, report, outputFileName); // Then File.Exists(outputFileName).ShouldBe(true); } finally { if (File.Exists(outputFileName)) { File.Delete(outputFileName); } } }