public void ExceptionShouldBeThrownWhenNullOptions()
        {
            var mockFormatter  = new Mock <ICSVFormatter>();
            var detailedReport = new detailedreport();
            var sut            = new CSVAnalysisWriter(mockFormatter.Object);

            using var resultStream = new MemoryStream();
            using var resultWriter = new StreamWriter(resultStream);
            Should.Throw <ArgumentNullException>(() => sut.Write(resultWriter, detailedReport, null));
        }
示例#2
0
        public void ExceptionShouldBeThrownWhenNullWriter()
        {
            var mockFormatter = new Mock <ICSVFormatter>();
            var options       = new Options {
                OutputFileName = "output.csv"
            };
            var sut            = new CSVFlawWriter(mockFormatter.Object);
            var detailedReport = new detailedreport();

            Should.Throw <ArgumentNullException>(() => sut.Write(null, detailedReport, options));
        }
示例#3
0
        public void ShouldReturnFilenameFromXML()
        {
            var mockFormatter  = new Mock <ICSVFormatter>();
            var options        = new Options( );
            var sut            = new CSVFlawWriter(mockFormatter.Object);
            var detailedReport = new detailedreport {
                app_name = "app name"
            };

            sut.GetOutputFilename(detailedReport, options).ShouldBe("app name.csv");
        }
示例#4
0
        public void ShouldReturnFilenameIfSupplied()
        {
            var mockFormatter = new Mock <ICSVFormatter>();
            var options       = new Options {
                OutputFileName = "input.csv"
            };
            var sut            = new CSVFlawWriter(mockFormatter.Object);
            var detailedReport = new detailedreport();

            sut.GetOutputFilename(detailedReport, options).ShouldBe("input.csv");
        }
        public void ShouldReturnFilenameIfSupplied()
        {
            var mockFormatter = new Mock <ICSVFormatter>();
            var options       = new Options {
                OutputFileName = "bob.csv", GenerateAnalysis = true
            };
            var sut            = new CSVAnalysisWriter(mockFormatter.Object);
            var detailedReport = new detailedreport();

            sut.GetOutputFilename(detailedReport, options).ShouldBe("bob_sca.csv");
        }
示例#6
0
        public string GetOutputFilename(detailedreport detailedXml, Options options)
        {
            var baseFilename = options.OutputFileName ?? detailedXml.app_name + ".csv";

            // If we're generating flaws and SCA, add _sca
            var newFilename = Path.GetFileNameWithoutExtension(baseFilename) + "_sca"
                              + Path.GetExtension(
                baseFilename);

            return(Path.Combine(Path.GetDirectoryName(baseFilename), newFilename));
        }
        public void ShouldReturnFilenameFromXML()
        {
            var mockFormatter = new Mock <ICSVFormatter>();
            var options       = new Options {
                GenerateAnalysis = true
            };
            var sut            = new CSVAnalysisWriter(mockFormatter.Object);
            var detailedReport = new detailedreport {
                app_name = "sca app name"
            };

            sut.GetOutputFilename(detailedReport, options).ShouldBe("sca app name_sca.csv");
        }
示例#8
0
        protected void ValidateWriteParameters(TextWriter outFile, detailedreport detailedXml, Options options)
        {
            if (outFile == null)
            {
                throw new ArgumentNullException(nameof(outFile));
            }

            if (detailedXml == null)
            {
                throw new ArgumentNullException(nameof(detailedXml));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
        }
        public void Write(TextWriter outFile, detailedreport detailedXml, Options options)
        {
            ValidateWriteParameters(outFile, detailedXml, options);

            var includeFixed = options.IncludeFixedFlaws;

            WriteHeader(outFile);
            foreach (var severity in detailedXml.severity)
            {
                foreach (var category in severity.category)
                {
                    foreach (var cwe in category.cwe)
                    {
                        WriteFlaws(cwe.staticflaws, outFile, includeFixed);
                        WriteFlaws(cwe.dynamicflaws, outFile, includeFixed);
                        WriteFlaws(cwe.manualflaws, outFile, includeFixed);
                    }
                }
            }
        }
 public string GetOutputFilename(detailedreport detailedXml, Options options)
 {
     return(options.OutputFileName ?? (detailedXml.app_name == null ? null : detailedXml.app_name + ".csv"));
 }
示例#11
0
 public void Write(TextWriter outFile, detailedreport detailedXml, Options options)
 {
     ValidateWriteParameters(outFile, detailedXml, options);
     WriteHeader(outFile);
     WriteComponents(detailedXml.software_composition_analysis.vulnerable_components, outFile);
 }