Если я подавляю CA2204: Литералы должны быть записаны правильно?

Я недавно обновил свой проект из Visual Studio 2008 к Visual Studio 2010.

Путем включения Анализа кода я добираюсь, много предупреждений привело к правилу CA2204: Литералы должны быть записаны правильно.

Править:

Скажем, мне назвали метод GetResult(), и в нем я хочу выдать исключение по некоторым причинам. Я хочу, чтобы исключение сказало "GetResult() has failed for some reason". Это даст мне предупреждение, так как GetResult не является словом. Я не получу предупреждение на имени метода GetResult(), только если я поместил его в строку. Это вызвано тем, что Добираются, и Результат легальные слова.

Я не верю той записи GetResult() has failed for some reason решение.

Править: В MSDN это говорит:

Это правило анализирует литеральную строку в слова, маркируя сложные слова, и проверяет написание каждого слова/маркера.

Не делает это означает, что GetResult должен быть проверен как два слова: "Добраться" и "Результат"?

Я должен подавить CA2204?

5
задан brickner 19 May 2010 в 12:52
поделиться

3 ответа

«Не удается инициализировать MyClass» - не лучшее сообщение для разработчика, которое следует вводить в код. Он редко помогает при отладке и только сбивает с толку конечного пользователя, если когда-либо отображается.

В общем, я бы посоветовал не подавлять сообщение, потому что орфографическая ошибка заставляет выглядеть намного глупее, чем они есть на самом деле, и это не то сообщение, которое вы хотите передать своим приложением.

В этом конкретном экземпляре это действительно предупреждение о плохом сообщении об ошибке - либо сообщите пользователю, как исправить это, исправьте автоматически, либо укажите фактическую причину, по которой оно не инициализируется в вашем журнал ошибок.

РЕДАКТИРОВАТЬ: Включая правки OP
Из этого предупреждения вы можете понять, что вы не должны раскрывать детали кода как часть сообщения об ошибке (в первую очередь потому, что они будут включены в стек вызовов при регистрации исключения).

GetResult () не удалось по какой-то причине
Скажем, «какая-то причина» - это разрешения. Сообщение может выглядеть так:

У вас нет разрешения на просмотр этих результатов.

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

5
ответ дан 13 December 2019 в 05:31
поделиться

Один из способов исправить это - не добавлять имя типа напрямую в строку. Вместо этого передайте его как параметр. Например

var msg = String.Format("Can't initialize {0}", typeof(MyClass).Name);

Это дает преимущество как обойти правило FxCop, так и быть безопасным для рефакторинга.

4
ответ дан 13 December 2019 в 05:31
поделиться

Может быть, вам не следует помещать имя класса в литерал? Что насчет использования или определения исключения, которое может быть брошено вот так:

throw new CantInitializeClassException(innerException, typeof(MyClass);

Моя идея заключалась в том, чтобы перенести больше информации на более конкретные исключения из более общих. Я предлагаю использовать пример выше вместо throw new ApplicationException("Cant initialize MyClass");

2
ответ дан 13 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: