2016-08-31 7 views
1

私の解決方法ではdecimal.ToString()へのすべての呼び出しを受け取りたいと思います。 コンパイル時。(「オリジナル」と記されている質問は、実行時の解決策です)コンパイル時にdecimal.ToStringを呼び出す

これは何か手掛かりはありますか? ToStringのオーバーロードとObsoleteAttributeを使用していますか?

thisのようなコードでスキャンを(リフレクションで)1週間に1回実行するか、静的コードチェックを使用して何らかの種類のプログラムをインストールして設定することができます。しかし、この質問はコンパイル時です。

この理由は、decimal.ToStringがカルチャーを認識しており、私の場合は問題になる可能性があるためです。すなわち、誰かがローカライズされたサーバにソリューションをインストールした場合、出力が変わる可能性があります。
decimal.ToStringにはCultureInvariantを付けずに呼び出さないというルールがありますが、常に尊敬されるわけではありません。

+4

Roslynアナライザーを作成することができます。 – SLaks

+1

コードを(カスタムルールの定義を含めて)コーディング標準と照合できるようにする静的解析ツールがあります。そうすれば、一度にすべてのルールに対してコードをチェックすることができます。 – EJoshuaS

+0

@BartoszKPコンパイル時にリラックスして週に1回ツールを実行すると、かなり近づいて問題が解決するかもしれません。どうも。 – LosManos

答えて

4

マイクロソフトのCode Analysisルールは、string.Format()と文字列補間の使用を含む、さまざまな文化依存の文字列作成の問題に気付くように設定できます。これらのルールの重大度を「エラー」レベルに設定し、違反が発生したときにビルドに失敗するようにプロジェクトを設定することができます。

関連する問題