Пользовательское правило Stylecop для обеспечения использования спецификатора формата для двойных преобразований - PullRequest
1 голос
/ 05 декабря 2011

Как я могу написать собственное правило стиля, чтобы гарантировать, что двойные преобразования используют спецификатор формата. Например для double.Parse или double.TryParse

double val;
string str = "1.54";
double.TryParse(str, NumberStyles.AllowDecimalPoint, NumberFormatInfo.InvariantInfo, out val);

1 Ответ

3 голосов
/ 05 декабря 2011

Это звучит как правило FxCop, а не StyleCop.Основное отличие состоит в том, что FxCop работает со скомпилированной сборкой и имеет всю информацию о типах, но не знает об исходном коде.StyleCop работает с разобранным кодом C # (даже не скомпилирован), но знает все об исходном коде (например, и может отслеживать ваши отступы).

Именно поэтому StyleCop лучше ответить на вопрос "Как он написан"", а FxCop для" Что написано ".

Что касается вашего вопроса, в StyleCop вы можете найти все выражения в исходном файле.Затем отфильтруйте только выражения вызова метода.Затем отфильтруйте вызовы методов с именем «TryParse».Тогда вы бы проверили, что цель вызова «двойная» или «двойная», и можете проверить параметры вызова.

По моему совету - не делайте этого.Как вы понимаете, может быть множество примеров, когда ваше правило StyleCop не будет выполнено.Например, можно создать псевдоним (using D = System.Double;), указывающий на double, и вы не сможете его поймать.

...