Я ищу использование SupressMessage, чтобы есть некоторые предупреждения CA. Документ для SupressMessage говорит, чтобы убедиться, что его нет в релизе. Соответственно, должен ли атрибут SupressMessage быть заключен в #if DEBUG следующим образом?Анализ кода и SupressMessage - Если вы оберните атрибут с помощью #if DEBUG
public class Class1
{
#if DEBUG
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "args")]
#endif
static void Main(string[] args) { }
#if DEBUG
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage",
"CA1806:DoNotIgnoreMethodResults", MessageId = "System.Guid")]
#endif
public static bool IsValidGuid(string guid)
{
try
{
new Guid(guid); //Causes CA1806: DoNotIgnoreMethodResults
return true;
}
catch (ArgumentNullException) { }
catch (OverflowException) { }
catch (FormatException) { }
return false;
}
}
Ссылки: Для получения дополнительной информации см https://msdn.microsoft.com/en-us/library/ms244717.aspx
Вы не должны использовать в истоке подавлений по выпуску строит, чтобы предотвратить доставку метаданных подавления в истоке случайно. Из-за стоимости обработки подавления в исходном состоянии производительность вашего приложения также может быть снижена за счет включения метаданных подавления источника.
В документации также указывается, что класс атрибута присваивается '[ConditionalAttribute (" CODE_ANALYSIS ")]', никогда не беспокоился об этом, но, возможно, он не находится в релизе? –