public override Result VisitResult(Result node) { if (node.Fingerprints == null || !node.Fingerprints.TryGetValue(SearchSkimmer.ValidationFingerprint, out string fingerprint)) { return(node); } ReportingDescriptor rule = node.GetRule(_run); ValidationMethodPair validationPair = ValidatorsCache.GetValidationMethodPair(rule.Name, _validators.RuleNameToValidationMethods); if (validationPair.IsValidDynamic != null) { // Our validation messages currently look like so. // {0:scanTarget}' contains {1:validationPrefix}{2:encoding}{3:secretKind}{4:validationSuffix}{5:validatorMessage} string message = null; FailureLevel level = node.Level; Validation state = ValidatorsCache.ValidateDynamicHelper(validationPair.IsValidDynamic, ref fingerprint, ref message); string validationPrefix = node.Message.Arguments[1]; string validationSuffix = node.Message.Arguments[4]; SearchSkimmer.SetPropertiesBasedOnValidationState(state, context: null, ref level, ref validationPrefix, ref validationSuffix, ref message, pluginSupportsDynamicValidation: true); node.Level = level; node.Message.Arguments[1] = validationPrefix; node.Message.Arguments[4] = validationSuffix; node.Message.Arguments[5] = SearchSkimmer.NormalizeValidatorMessage(message); } return(node); }
public ValidatingVisitor(ValidatorsCache validators) { _validators = validators; }