Нужна помощь в создании пользовательского правила FxCop для string.Format (...) - PullRequest
2 голосов
/ 14 сентября 2011

Скажите, пожалуйста, как написать пользовательское правило FxCOP для следующей проверки параметров метода «String.Format ()».

1.string.Format («{0} aaaa {1} bbb», x);// {1} не имеет замены заполнителя

2.string.Format («aaaa {1} bbb», x);// {1} не имеет замены заполнителя.Внутри строкового литерала он должен был быть {0} вместо {1}.

С уважением,

Ranjeet.

Ответы [ 3 ]

3 голосов
/ 22 сентября 2011

Было правило для проверки этого в FxCop 1.35, CA2241 - Предоставить правильные аргументы для методов форматирования.Он был удален из FxCop 1.36 «из-за удаления механизма потоков данных» согласно этой записи блога .

Правило, похоже, было восстановлено для анализа кода для Visual Studio 2010.(см. ответ Николь Калиною), но, как я уже упоминал в комментарии, Code Analyis доступен только в выпусках Premium и Ultimate.

Итак, если вы хотите проверить свои сборки на предмет неправильных вызовов String.Format,и у вас нет Visual Studio 2010 Premium или Ultimate, вам нужно будет использовать FxCop 1.35.Я использую FxCop 1.35 и FxCop 10.0 бок о бок на моем компьютере с Windows 7 без каких-либо проблем.

1 голос
/ 14 сентября 2011

Есть ли какая-то особая причина, по которой вы хотите использовать для этого собственное правило?Правило ProvideCorrectArgumentsToFormattingMethods , поставляемое с FxCop, уже проверяет аргументы String.Format.

1 голос
/ 14 сентября 2011

При чтении документации MSDN string.Format() не должны ли оба эти сценария вызывать ошибки FormatException во время выполнения?

Насколько я понимаю, FxCop предназначен не для проверки правильности кода на наличие ошибок времени выполнения, а для анализа сборок на предмет потенциальных проблем безопасности / производительности / именования / и т. Д. И составления отчетов по ним. Ошибки времени выполнения выходят за пределы его возможностей.

...