Вопрос

В проекте, над которым я работаю, 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 1.36 на самом деле есть опция проекта в " Правописании & amp; Анализ & Quot; вкладка, которая будет подавлять анализ для любого сгенерированного кода.

Если вы не хотите отключать анализ для всего сгенерированного кода, вам необходимо убедиться, что вы добавили символ CODE_ANALYSIS в список символов условной компиляции (свойства проекта, вкладка «Сборка»). Без определения этого символа атрибуты SupressMessage будут удалены из скомпилированного кода, поэтому FxCop их не увидит.

Другая проблема с вашим атрибутом SuppressMessage заключается в том, что вы указываете " Target " с конкретным именем метода (в данном случае WindowsClient.MainForm.InitializeComponent (): System.Void) и перечислением определенного " Scope " ;. Вы можете попробовать удалить их; в противном случае вы должны добавить это SuppressMessage к каждому экземпляру метода.

Вам также следует перейти на RTM-версию FxCop 1.36, бета не будет автоматически обнаруживать более новую версию.

Сообщения подавления на уровне модуля должны быть вставлены в тот же файл, что и код, который вызывает ошибку FxCop перед объявлением пространства имен или в файле assemblyinfo.cs. Кроме того, вам необходимо определить CODE_ANALYSIS как условные символы компилятора (Project > Properties > Build). Как только это произойдет, выполните полную перестройку проекта, и в следующий раз, когда вы запустите FxCop, ошибка должна быть перемещена в " Исключено в источнике " Вкладка.

Кроме того, один небольшой совет, но если вы имеете дело с большим количеством исключений FxCop, может быть полезно обернуть область вокруг них, чтобы вы могли убрать их с пути.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top