2016-08-31 1 views
1

Я хотел бы поймать все вызовы decimal.ToString() в моем решении. Во время компиляции. (вопрос, обозначенный как «оригинал», относится к решению времени выполнения)Поймать вызовы decimal.ToString во время компиляции

Есть ли какой-либо трюк для этого? например, перегрузка ToString и использование ObsoleteAttribute?

Я могу решить выполнить сканирование (путем отражения) один раз в неделю с помощью кода, например this, или установить и настроить какую-то программу со статической проверкой кода. Но этот вопрос касается времени компиляции.

Причина в том, что decimal.ToString - это культура, известная и которая в моем случае может быть проблемой; то есть, если кто-то установит решение на локальном сервере, выход может измениться.
У нас есть правило не звонить decimal.ToString без его принятия CultureInvariant, но оно не всегда учитывается.

+4

Вы можете сделать анализатор Roslyn. – SLaks

+1

Существуют инструменты статического анализа, которые позволяют проверять ваш код на соответствие стандартам кодирования (включая определение пользовательских правил). Таким образом, вы можете сразу проверить свой код на все ваши правила. – EJoshuaS

+0

@BartoszKP Достаточно близко и может решить мою проблему, если я расслаблюсь от времени компиляции, чтобы вместо этого запускать инструмент один раз в неделю. Спасибо. – LosManos

ответ

4

В правилах Microsoft Code Analysis можно установить различные проблемы создания строки, зависящие от культуры, включая использование string.Format() и интерполяцию строк. Вы можете установить степень серьезности этих правил на уровень «Ошибка», а затем настроить свой проект для сбоя сборки, когда они будут нарушены.

Смежные вопросы