Проверка формата строки для .NET2.0
После некоторых исследований я обнаружил, что FxCop уже содержит правило для проверки формата строки (Usage Rules\Provide correct arguments to formatting methods
).Это даже идентифицирует пример в ответе @Sklivvz.К сожалению:
- Правило существует только в старой версии 1.35 , но не в 1.36 (см .: Прерванные правила FxCop в V1.36 ).
- Существующие в коде лямбда-выражения не выдают никаких ошибок правил или сообщений об исключениях. Он просто останавливает проверку, не сообщая .Я предполагаю, что это потому, что V1.35 использует .NET runtime 2.0.
- Правило охватывает только вызовы для
Console.Write
, Console.WriteLine
, string.Format
& StringBuilder.AppendFormat
. Мне удалось настроить его (используя Reflector), чтобы также охватить Common.Logging.ILog.DebugFormat
, но я почти уверен, что это противоречит MS EULA ( ". Вы не можете перепроектировать, декомпилировать или разбирать ... ").
Таким образом, вы можете безопасно использовать FxCop для тестирования форматирования строк в ваших приложениях .NET2.0.
Но как насчет новых версий .NET?
Для всех, кто работает с более современными версиями, я написал правило StyleCop , которое проверяет строковые литералы для commonшаблоны ошибок формата .Он далек от совершенства и дает много ложных срабатываний, но все еще покрывает много.
Я хотел бы проверить новый FxCop SDK для более комплексного решения.
Я опубликую свои выводы здесь.