private static bool TryDecodeSuppressMessageAttributeData(AttributeData attribute, out SuppressMessageInfo info) { info = default(SuppressMessageInfo); // We need at least the Category and Id to decode the diagnostic to suppress. // The only SuppressMessageAttribute constructor requires those two parameters. if (attribute.CommonConstructorArguments.Length < 2) { return(false); } // Ignore the category parameter because it does not identify the diagnostic // and category information can be obtained from diagnostics themselves. info.Id = attribute.CommonConstructorArguments[1].Value as string; if (info.Id == null) { return(false); } // Allow an optional human-readable descriptive name on the end of an Id. // See http://msdn.microsoft.com/en-us/library/ms244717.aspx var separatorIndex = info.Id.IndexOf(':'); if (separatorIndex != -1) { info.Id = info.Id.Remove(separatorIndex); } info.Scope = attribute.DecodeNamedArgument <string>("Scope", SpecialType.System_String); info.Target = attribute.DecodeNamedArgument <string>("Target", SpecialType.System_String); info.MessageId = attribute.DecodeNamedArgument <string>("MessageId", SpecialType.System_String); return(true); }
private static bool TryDecodeSuppressMessageAttributeData(AttributeData attribute, out SuppressMessageInfo info) { info = default(SuppressMessageInfo); // We need at least the Category and Id to decode the diagnostic to suppress. // The only SuppressMessageAttribute constructor requires those two parameters. if (attribute.CommonConstructorArguments.Length < 2) { return false; } // Ignore the category parameter because it does not identify the diagnostic // and category information can be obtained from diagnostics themselves. info.Id = attribute.CommonConstructorArguments[1].Value as string; if (info.Id == null) { return false; } // Allow an optional human-readable descriptive name on the end of an Id. // See http://msdn.microsoft.com/en-us/library/ms244717.aspx var separatorIndex = info.Id.IndexOf(':'); if (separatorIndex != -1) { info.Id = info.Id.Remove(separatorIndex); } info.Scope = attribute.DecodeNamedArgument<string>("Scope", SpecialType.System_String); info.Target = attribute.DecodeNamedArgument<string>("Target", SpecialType.System_String); info.MessageId = attribute.DecodeNamedArgument<string>("MessageId", SpecialType.System_String); return true; }