Beispiel #1
0
        internal static bool TryGetIdentifierAndRegisteredName(ArgumentSyntax callback, SemanticModel semanticModel, CancellationToken cancellationToken, out IdentifierNameSyntax identifier, out string registeredName)
        {
            registeredName = null;
            if (!ValidateValueCallback.TryGetName(callback, semanticModel, cancellationToken, out identifier, out string _))
            {
                return(false);
            }

            return(ValidateValueCallback.TryGetRegisteredName(callback, semanticModel, cancellationToken, out registeredName));
        }
        private static void HandleInvocation(SyntaxNodeAnalysisContext context)
        {
            var invocation = context.Node as InvocationExpressionSyntax;

            if (invocation == null || invocation.IsMissing)
            {
                return;
            }

            ArgumentSyntax callback;

            if (!ValidateValueCallback.TryGetValidateValueCallback(
                    invocation,
                    context.SemanticModel,
                    context.CancellationToken,
                    out callback))
            {
                return;
            }

            IdentifierNameSyntax nameExpression;
            string registeredName;

            if (TryGetIdentifierAndRegisteredName(
                    callback,
                    context.SemanticModel,
                    context.CancellationToken,
                    out nameExpression,
                    out registeredName))
            {
                if (!nameExpression.Identifier.ValueText.IsParts(registeredName, "ValidateValue"))
                {
                    context.ReportDiagnostic(Diagnostic.Create(Descriptor, nameExpression.GetLocation(), nameExpression, $"{registeredName}ValidateValue"));
                }
            }
        }