Exemple #1
0
 public static void NotUndefined(this CodeAnalysisReport value, string parameterName)
 {
     if (value == CodeAnalysisReport.Undefined)
     {
         throw new ArgumentOutOfRangeException(parameterName);
     }
 }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
            public void Should_Return_Stylesheet_Resource_Name(CodeAnalysisReport report, string expectedResult)
            {
                // When
                var result = report.GetStyleSheetResourceName();

                // Then
                result.ShouldBe(expectedResult);
            }
Exemple #4
0
        /// <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);
        }
Exemple #6
0
            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);
                    }
                }
            }