Исключение правила анализа кода в исходном коде

В проекте, над которым я работаю, 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.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
19
0
6 619
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вероятно, у вас есть правильный код, но вам также необходимо добавить CODE_ANALYSIS в качестве символа, определенного прекомпилятором, в свойствах проекта. Я думаю, что эти атрибуты SuppressMessage остаются в скомпилированных двоичных файлах только в том случае, если определен CODE_ANALYSIS.

У меня было решение с несколькими проектами. CODE_ANALYSIS необходимо добавлять для каждого проекта.

Diizzy 23.10.2014 14:44

Сообщения о подавлении на уровне модуля должны быть вставлены в тот же файл, что и код, вызывающий ошибку 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, бета-версия не обнаружит автоматически более новую версию.

Другие вопросы по теме