internal static RuleVersionOne CreateRuleVersionOne(ReportingDescriptor v2ReportingDescriptor) { RuleVersionOne rule = null; if (v2ReportingDescriptor != null) { rule = new RuleVersionOne { FullDescription = v2ReportingDescriptor.FullDescription?.Text, HelpUri = v2ReportingDescriptor.HelpUri, Id = v2ReportingDescriptor.Id, MessageFormats = ConvertToV1MessageStringsDictionary(v2ReportingDescriptor.MessageStrings), Name = v2ReportingDescriptor.Name, Properties = v2ReportingDescriptor.Properties, ShortDescription = v2ReportingDescriptor.ShortDescription?.Text }; if (v2ReportingDescriptor.DefaultConfiguration != null) { rule.Configuration = v2ReportingDescriptor.DefaultConfiguration.Enabled ? RuleConfigurationVersionOne.Enabled : RuleConfigurationVersionOne.Disabled; rule.DefaultLevel = Utilities.CreateResultLevelVersionOne(v2ReportingDescriptor.DefaultConfiguration.Level); } } return(rule); }
internal RuleVersionOne CreateRule(Rule v2Rule) { RuleVersionOne rule = null; if (v2Rule != null) { rule = new RuleVersionOne { FullDescription = v2Rule.FullDescription?.Text, HelpUri = v2Rule.HelpUri, Id = v2Rule.Id, MessageFormats = v2Rule.MessageStrings, Name = v2Rule.Name?.Text, Properties = v2Rule.Properties, ShortDescription = v2Rule.ShortDescription?.Text }; if (v2Rule.Configuration != null) { rule.Configuration = v2Rule.Configuration.Enabled ? RuleConfigurationVersionOne.Enabled : RuleConfigurationVersionOne.Disabled; rule.DefaultLevel = Utilities.CreateResultLevelVersionOne(v2Rule.Configuration.DefaultLevel); } } return(rule); }
internal ResultVersionOne CreateResultVersionOne(Result v2Result) { ResultVersionOne result = null; if (v2Result != null) { result = new ResultVersionOne { BaselineState = Utilities.CreateBaselineStateVersionOne(v2Result.BaselineState), Fixes = v2Result.Fixes?.Select(CreateFixVersionOne).ToList(), Id = v2Result.InstanceGuid, Level = Utilities.CreateResultLevelVersionOne(v2Result.Level, v2Result.Kind), Locations = v2Result.Locations?.Select(CreateLocationVersionOne).ToList(), Message = v2Result.Message?.Text, Properties = v2Result.Properties, RelatedLocations = v2Result.RelatedLocations?.Select(CreateAnnotatedCodeLocationVersionOne).ToList(), Snippet = v2Result.Locations?[0]?.PhysicalLocation?.Region?.Snippet?.Text, Stacks = v2Result.Stacks?.Select(CreateStackVersionOne).ToList(), SuppressionStates = Utilities.CreateSuppressionStatesVersionOne(v2Result.SuppressionStates) }; if (result.Fixes != null) { // Null Fixes will be present in the case of unsupported encoding (result.Fixes as List <FixVersionOne>).RemoveAll(f => f == null); if (result.Fixes.Count == 0) { result.Fixes = null; } } if (v2Result.AnalysisTarget != null) { foreach (LocationVersionOne location in result.Locations) { location.AnalysisTarget = CreatePhysicalLocationVersionOne(v2Result.AnalysisTarget); } } result.RuleId = v2Result.RuleId; string ruleKey = GetV1RuleKeyFromV2Index(v2Result.RuleIndex, _v2RuleIndexToV1KeyMap); // If the rules dictionary key is the same as the rule id, don't set result.RuleKey; // leave it null. This way, we don't unnecessarily persist ruleKey in the v1 SARIF file. // That is, we persist // // "ruleId": "TST0001" // // instead of // // "ruleId": "TST0001", // "ruleKey": "TST0001" // if (ruleKey != result.RuleId) { result.RuleKey = ruleKey; } if (!string.IsNullOrWhiteSpace(v2Result.Message?.MessageId)) { result.FormattedRuleMessage = new FormattedRuleMessageVersionOne { Arguments = v2Result.Message?.Arguments, FormatId = v2Result.Message.MessageId }; } } return(result); }
internal ResultVersionOne CreateResult(Result v2Result) { ResultVersionOne result = null; if (v2Result != null) { result = new ResultVersionOne { BaselineState = Utilities.CreateBaselineStateVersionOne(v2Result.BaselineState), Fixes = v2Result.Fixes?.Select(CreateFix).ToList(), Id = v2Result.InstanceGuid, Level = Utilities.CreateResultLevelVersionOne(v2Result.Level), Locations = v2Result.Locations?.Select(CreateLocation).ToList(), Message = v2Result.Message?.Text, Properties = v2Result.Properties, RelatedLocations = v2Result.RelatedLocations?.Select(CreateAnnotatedCodeLocation).ToList(), Snippet = v2Result.Locations?[0]?.PhysicalLocation?.Region?.Snippet?.Text, Stacks = v2Result.Stacks?.Select(CreateStack).ToList(), SuppressionStates = Utilities.CreateSuppressionStatesVersionOne(v2Result.SuppressionStates) }; if (result.Fixes != null) { // Null Fixes will be present in the case of unsupported encoding (result.Fixes as List <FixVersionOne>).RemoveAll(f => f == null); if (result.Fixes.Count == 0) { result.Fixes = null; } } if (v2Result.AnalysisTarget != null) { foreach (LocationVersionOne location in result.Locations) { location.AnalysisTarget = CreatePhysicalLocation(v2Result.AnalysisTarget); } } if (_currentV2Run.Resources?.Rules != null) { IDictionary <string, Rule> rules = _currentV2Run.Resources.Rules; Rule v2Rule; if (v2Result.RuleId != null && rules.TryGetValue(v2Result.RuleId, out v2Rule) && v2Rule.Id != v2Result.RuleId) { result.RuleId = v2Rule.Id; result.RuleKey = v2Result.RuleId; } else { result.RuleId = v2Result.RuleId; } } else { result.RuleId = v2Result.RuleId; } if (!string.IsNullOrWhiteSpace(v2Result.Message?.MessageId)) { result.FormattedRuleMessage = new FormattedRuleMessageVersionOne { Arguments = v2Result.Message?.Arguments, FormatId = v2Result.Message.MessageId }; } } return(result); }