Exemplo n.º 1
0
 /// <summary>The entry point for the SARIF multi utility.</summary>
 /// <param name="args">Arguments passed in from the tool's command line.</param>
 /// <returns>0 on success; nonzero on failure.</returns>
 public static int Main(string[] args)
 {
     return(Parser.Default.ParseArguments <
                ConvertOptions,
                RewriteOptions,
                MergeOptions,
                RebaseUriOptions,
                AbsoluteUriOptions,
                BaselineOptions>(args)
            .MapResult(
                (ConvertOptions convertOptions) => ConvertCommand.Run(convertOptions),
                (RewriteOptions rewriteOptions) => RewriteCommand.Run(rewriteOptions),
                (MergeOptions mergeOptions) => MergeCommand.Run(mergeOptions),
                (RebaseUriOptions rebaseOptions) => RebaseUriCommand.Run(rebaseOptions),
                (AbsoluteUriOptions absoluteUriOptions) => AbsoluteUriCommand.Run(absoluteUriOptions),
                (BaselineOptions baselineOptions) => BaselineCommand.Run(baselineOptions),
                errs => 1));
 }
Exemplo n.º 2
0
        private string RunRebaseUriCommand(string testFilePath, RebaseUriOptions options)
        {
            string inputSarifLog = Extractor.GetResourceText($"RebaseUriCommand.{testFilePath}");

            string        logFilePath         = @"c:\logs\mylog.sarif";
            StringBuilder transformedContents = new StringBuilder();

            options.TargetFileSpecifiers = new string[] { logFilePath };

            Mock <IFileSystem> mockFileSystem = ArrangeMockFileSystem(inputSarifLog, logFilePath, transformedContents);

            var rebaseUriCommand = new RebaseUriCommand(mockFileSystem.Object);

            int    returnCode   = rebaseUriCommand.Run(options);
            string actualOutput = transformedContents.ToString();

            returnCode.Should().Be(0);

            return(actualOutput);
        }
Exemplo n.º 3
0
 /// <summary>The entry point for the SARIF multi utility.</summary>
 /// <param name="args">Arguments passed in from the tool's command line.</param>
 /// <returns>0 on success; nonzero on failure.</returns>
 public static int Main(string[] args)
 {
     return(Parser.Default.ParseArguments <
                ValidateOptions,
                ConvertOptions,
                RewriteOptions,
                TransformOptions,
                MergeOptions,
                RebaseUriOptions,
                AbsoluteUriOptions,
                ResultMatchingOptions>(args)
            .MapResult(
                (ValidateOptions validateOptions) => new ValidateCommand(new FileSystem()).Run(validateOptions),
                (ConvertOptions convertOptions) => ConvertCommand.Run(convertOptions),
                (RewriteOptions rewriteOptions) => RewriteCommand.Run(rewriteOptions),
                (TransformOptions transformOptions) => TransformCommand.Run(transformOptions),
                (MergeOptions mergeOptions) => MergeCommand.Run(mergeOptions),
                (RebaseUriOptions rebaseOptions) => RebaseUriCommand.Run(rebaseOptions),
                (AbsoluteUriOptions absoluteUriOptions) => AbsoluteUriCommand.Run(absoluteUriOptions),
                (ResultMatchingOptions baselineOptions) => ResultMatchingCommand.Run(baselineOptions),
                errs => 1));
 }
Exemplo n.º 4
0
        public void RebaseUriCommand_InjectsRegions()
        {
            string productDirectory = FileDiffingFunctionalTests.GetProductDirectory();
            string analysisFile     = Path.Combine(productDirectory, @"ReleaseHistory.md");

            File.Exists(analysisFile).Should().BeTrue();

            var sarifLog = new SarifLog
            {
                Runs = new[]
                {
                    new Run {
                        Results = new[] {
                            new Result {
                                Locations = new [] {
                                    new Location {
                                        PhysicalLocation = new PhysicalLocation {
                                            Region = new Region {
                                                StartLine = 7
                                            },
                                            ArtifactLocation = new ArtifactLocation
                                            {
                                                Uri = new Uri(analysisFile)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            string inputSarifLog = JsonConvert.SerializeObject(sarifLog);

            string        logFilePath         = @"c:\logs\mylog.sarif";
            StringBuilder transformedContents = new StringBuilder();

            RebaseUriOptions options = CreateDefaultOptions();

            options.TargetFileSpecifiers = new string[] { logFilePath };

            options.DataToInsert = new[]
            {
                OptionallyEmittedData.RegionSnippets |
                OptionallyEmittedData.ContextRegionSnippets
            };

            Mock <IFileSystem> mockFileSystem = ArrangeMockFileSystem(inputSarifLog, logFilePath, transformedContents);

            // Test snippet injection.
            var rebaseUriCommand = new RebaseUriCommand(mockFileSystem.Object);

            int returnCode = rebaseUriCommand.Run(options);

            returnCode.Should().Be(0);

            SarifLog actualLog = JsonConvert.DeserializeObject <SarifLog>(transformedContents.ToString());

            actualLog.Runs[0].Results[0].Locations[0].PhysicalLocation.Region.Snippet.Should().NotBeNull();
            actualLog.Runs[0].Results[0].Locations[0].PhysicalLocation.ContextRegion.Snippet.Should().NotBeNull();

            // Now test that this data is removed.
            inputSarifLog = JsonConvert.SerializeObject(actualLog);
            transformedContents.Length = 0;
            mockFileSystem             = ArrangeMockFileSystem(inputSarifLog, logFilePath, transformedContents);
            rebaseUriCommand           = new RebaseUriCommand(mockFileSystem.Object);

            options.DataToRemove = options.DataToInsert;
            options.DataToInsert = null;

            returnCode = rebaseUriCommand.Run(options);
            returnCode.Should().Be(0);

            actualLog = JsonConvert.DeserializeObject <SarifLog>(transformedContents.ToString());
            actualLog.Runs[0].Results[0].Locations[0].PhysicalLocation.Region.Snippet.Should().BeNull();
            actualLog.Runs[0].Results[0].Locations[0].PhysicalLocation.ContextRegion.Snippet.Should().BeNull();
        }