public void UnrecognizedReflectionAccessPattern(IMemberDefinition source, Instruction sourceInstruction, IMetadataTokenProvider accessedItem, string message)
        {
            MessageOrigin origin;
            string        location = string.Empty;
            var           method   = source as MethodDefinition;

            if (sourceInstruction != null && method != null)
            {
                origin = MessageOrigin.TryGetOrigin(method, sourceInstruction.Offset);
            }
            else
            {
                origin = new MessageOrigin(source);
            }

            if (origin.FileName == null)
            {
                if (method != null)
                {
                    location = method.DeclaringType.FullName + "::" + GetSignature(method) + ": ";
                }
                else
                {
                    location = source.DeclaringType?.FullName + "::" + source.Name;
                }
            }

            _context.LogMessage(MessageContainer.CreateWarningMessage(_context, location + message, 2006, origin, "Unrecognized reflection pattern"));
        }
        static Attribute ProcessRequiresUnreferencedCodeAttribute(LinkContext context, MethodDefinition method, CustomAttribute customAttribute)
        {
            if (customAttribute.HasConstructorArguments)
            {
                string message = (string)customAttribute.ConstructorArguments[0].Value;
                string url     = null;
                foreach (var prop in customAttribute.Properties)
                {
                    if (prop.Name == "Url")
                    {
                        url = (string)prop.Argument.Value;
                    }
                }

                return(new RequiresUnreferencedCodeAttribute(message)
                {
                    Url = url
                });
            }

            context.LogMessage(MessageContainer.CreateWarningMessage(context,
                                                                     $"Attribute '{typeof (RequiresUnreferencedCodeAttribute).FullName}' on '{method}' doesn't have a required constructor argument.",
                                                                     2028, MessageOrigin.TryGetOrigin(method, 0)));

            return(null);
        }
 public void UnrecognizedReflectionAccessPattern(MethodDefinition sourceMethod, Instruction reflectionMethodCall, IMetadataTokenProvider accessedItem, string message)
 {
     _context.LogMessage(MessageContainer.CreateWarningMessage(message, 2006, "Unrecognized reflection pattern",
                                                               reflectionMethodCall != null ? MessageOrigin.TryGetOrigin(sourceMethod, reflectionMethodCall.Offset) : null));
 }