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