Example #1
0
        private static SarifLog ConvertConsoleOutputToSarifLog(string consoleOutput)
        {
            var sb        = new StringBuilder();
            var converter = new MSBuildConverter(verbose: true);

            using (var input = new MemoryStream(Encoding.UTF8.GetBytes(consoleOutput)))
                using (var outputTextWriter = new StringWriter(sb))
                    using (var outputJson = new JsonTextWriter(outputTextWriter))
                        using (var output = new ResultLogJsonWriter(outputJson))
                        {
                            converter.Convert(input, output, OptionallyEmittedData.None);
                        }
            return(JsonConvert.DeserializeObject <SarifLog>(sb.ToString()));
        }
        private static SarifLog RunAnalyzeCommand(TestAnalyzeOptions options, IFileSystem fileSystem = null, int expectedReturnCode = 0)
        {
            // If no log file is specified, we will convert the console output into a log file
            bool captureConsoleOutput = string.IsNullOrEmpty(options.OutputFilePath);

            var command = new TestAnalyzeCommand(fileSystem)
            {
                _captureConsoleOutput = captureConsoleOutput
            };

            command.DefaultPlugInAssemblies = new Assembly[] { typeof(AnalyzeCommandBaseTests).Assembly };

            try
            {
                HashUtilities.FileSystem = fileSystem;
                command.Run(options).Should().Be(expectedReturnCode);
            }
            finally
            {
                HashUtilities.FileSystem = null;
            }

            SarifLog sarifLog = null;

            if (captureConsoleOutput)
            {
                var converter = new MSBuildConverter(verbose: true);

                var sb = new StringBuilder();

                using (var input = new MemoryStream(Encoding.UTF8.GetBytes(command._consoleLogger.CapturedOutput)))
                    using (var outputTextWriter = new StringWriter(sb))
                        using (var outputJson = new JsonTextWriter(outputTextWriter))
                            using (var output = new ResultLogJsonWriter(outputJson))
                            {
                                converter.Convert(input, output, OptionallyEmittedData.None);
                            }
                sarifLog = JsonConvert.DeserializeObject <SarifLog>(sb.ToString());
            }
            else
            {
                sarifLog = JsonConvert.DeserializeObject <SarifLog>(File.ReadAllText(options.OutputFilePath));
            }

            return(sarifLog);
        }