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;
 }