Exemplo n.º 1
0
        private static void FixReportPaths(JArray sonarReports, SonarOutputFormat outputFormat)
        {
            if (outputFormat == SonarOutputFormat.Roslyn)
            {
                return;
            }

            var primaryLocations = sonarReports.SelectTokens("[*].issues[*].primaryLocation");

            foreach (JToken primaryLocation in primaryLocations)
            {
                primaryLocation["filePath"] = primaryLocation.Value <string>("filePath").Replace("\\", "/");
            }
        }
Exemplo n.º 2
0
        public void SonarReportGenerator_WithValidInput_ShouldProduceCorrectReport(
            SonarOutputFormat outputFormat,
            string expectedResultFile)
        {
            Report reSharperReport;

            using (var reader = new StreamReader("Resources/ReSharperTestReport.xml"))
            {
                reSharperReport = (Report)ReSharperXmlSerializer.Deserialize(reader);
            }

            SonarConverter.ConvertToAbsolutePaths(reSharperReport);

            var reportGeneratorFactory = new SonarReportGeneratorFactory();
            var reportGenerator        = reportGeneratorFactory.GetGenerator(outputFormat);

            // JArray.FromObject is not used, because serializer settings cannot be provided
            var actualSonarReports = JArray.Parse(
                JsonConvert.SerializeObject(reportGenerator.Generate(reSharperReport), JsonSerializerSettings));

            FixReportPaths(actualSonarReports, outputFormat);

            var convertSourceRootFunc = outputFormat == SonarOutputFormat.Roslyn
                ? (Func <string, string>)FileUtils.FilePathToFileUrl : x => x.Replace("\\", "/");

            var sourceRoot = Directory.GetCurrentDirectory();
            var expectedSonarReportsAsString =
                File.ReadAllText(expectedResultFile)
                .Replace("{sourceRoot}", convertSourceRootFunc(sourceRoot));

            var expectedSonarReports = JArray.Parse(expectedSonarReportsAsString);

            try
            {
                Assert.True(JToken.DeepEquals(expectedSonarReports, actualSonarReports));
            }
            catch
            {
                _output.WriteLine($"Expected sonar reports:\n{expectedSonarReports}, actual: {actualSonarReports}.");
                throw;
            }
        }
Exemplo n.º 3
0
 public virtual ISonarReportGenerator GetGenerator(SonarOutputFormat format) =>
 format switch
 {