Могу ли я подавить все сообщения анализа кода для определенного класса? - PullRequest
9 голосов
/ 26 марта 2012

Всякий раз, когда я вызываю свой регистратор в методе, например

_logger.Debug("Connecting to database...");

Я получаю предупреждение:

CA1303 : Microsoft.Globalization: 
Method 'Database.Connect()' passes a literal 
string as parameter  'message' of a call to 'ILogger.Debug(string)'. 
Retrieve the following string(s) from a resource table instead: 
"Connecting to database...".

Есть ли способ подавить это предупреждение каждый раз, когда я использую функцию ILogger? Я действительно не хочу подавлять это в каждом методе, который я использую.

Ответы [ 4 ]

14 голосов
/ 26 марта 2014

Если вы управляете интерфейсом ILogger, вы можете использовать атрибут Localizable со значением false, чтобы указать, что это значение не локализуемо.

Например:

void Info([Localizable(false)] string message);
3 голосов
/ 26 марта 2013

Я столкнулся с этой проблемой и обнаружил, что самым простым решением было переименовать параметр моего метода ведения журнала из «message» во что-то другое.

CA1303 будет срабатывать только в том случае, если соответствующий параметр илиИмя свойства содержит «Текст», «Сообщение» или «Заголовок».Если параметр передан в Console.Write или Console.WriteLine, параметр также не может называться «value» или «format».

3 голосов
/ 27 марта 2012

Ни анализ кода FxCop / VS, ни правило CA1303 не могут быть настроены таким образом, чтобы игнорировать конкретные цели.В основном у вас есть три варианта:

  1. Подавить нарушения индивидуально,
  2. Отключить правило или
  3. Заменить пользовательское правило, которое ведет себя так, как вы предпочитаете.

Я склонен склоняться к # 3 для такого рода вещей, но ммм ... Кроме того, если вы твердо уверены, что должны иметь возможность контролировать поведение CA1303, это то, что нужно рассмотреть, запрашиваяв https://connect.microsoft.com/VisualStudio или http://visualstudio.uservoice.com/forums/121579-visual-studio.

1 голос
/ 20 сентября 2012

Если вы примените атрибут GeneratedCode к классу, Code Analysis не будет анализировать ваш класс.

...