В проекте, над которым я работаю, FxCop показывает мне множество (я имею в виду более 400) ошибок в методах InitializeComponent (), созданных дизайнером Windows Forms. Большинство этих ошибок - это просто присвоение меткам свойства Text.
Я хотел бы подавить эти методы в исходном коде, поэтому я скопировал код подавления, созданный FxCop, в AssemblyInfo.cs, но он не работает.
Это атрибут, который FxCop скопировал в буфер обмена.
[module: SuppressMessage("Microsoft.Globalization",
"CA1303:DoNotPassLiteralsAsLocalizedParameters",
Scope = "member",
Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]
Кто-нибудь знает правильный атрибут для подавления этого сообщения?
PS: Я использую Visual Studio 2005, C#, FxCop 1.36 beta.





Вероятно, у вас есть правильный код, но вам также необходимо добавить CODE_ANALYSIS в качестве символа, определенного прекомпилятором, в свойствах проекта. Я думаю, что эти атрибуты SuppressMessage остаются в скомпилированных двоичных файлах только в том случае, если определен CODE_ANALYSIS.
Сообщения о подавлении на уровне модуля должны быть вставлены в тот же файл, что и код, вызывающий ошибку FxCop, перед объявлением пространства имен или в assemblyinfo.cs. Кроме того, вам потребуется, чтобы CODE_ANALYSIS был определен как символы условного компилятора (Проект> Свойства> Сборка). После этого выполните полную перестройку проекта, и в следующий раз, когда вы запустите FxCop, ошибка должна быть перемещена на вкладку «Исключено в источнике».
Кроме того, один небольшой совет, но если вы имеете дело с большим количеством исключений FxCop, может быть полезно обернуть их областью, чтобы вы могли убрать их с дороги.
В FxCop 1.36 есть опция проекта на вкладке «Орфография и анализ», которая подавляет анализ любого сгенерированного кода.
Если вы не хотите отключать анализ для всего сгенерированного кода, вам необходимо убедиться, что вы добавили символ CODE_ANALYSIS в список символов условной компиляции (свойства проекта, вкладка Build). Без определения этого символа атрибуты SupressMessage будут удалены из скомпилированного кода, поэтому FxCop их не увидит.
Другая проблема с вашим атрибутом SuppressMessage заключается в том, что вы перечисляете «Target» определенного имени метода (в данном случае WindowsClient.MainForm.InitializeComponent (): System.Void) и перечисляете конкретную «Scope». Вы можете попробовать удалить их; в противном случае вы должны добавить это SuppressMessage к каждому экземпляру метода.
Вам также следует перейти на RTM версия FxCop 1.36, бета-версия не обнаружит автоматически более новую версию.
У меня было решение с несколькими проектами. CODE_ANALYSIS необходимо добавлять для каждого проекта.