11

次のバグを検出する優れた Resharper パターンを考えられる人はいますか。

decimal? x = null;

decimal? y = 6M;

var total = x + y;

Console.WriteLine(total); // Result is null

パターンを作成しようとしましたが、すべての種類の算術演算 (+、-、​​ など) と null 許容型 ( ) をすばやく処理する方法がわかりませんe.g. Nullable<int>, Nullable<decimal>, Nullable<double> etc。また、可換性を処理できません (たとえば、x + yy + xを検出する必要があります)。

xが実際に nullかどうかを検出する必要は必ずしもないことに注意してください。xが null 許容型であるかどうかだけです。開発者に x.Value + y.Value.

4

1 に答える 1

3

これは完全な答えではありませんが、これは私がこれまでに思いついた最高のものです。

パターンは次のとおりです。

$obj$ + $nullableObj$

objが " System.Object 型の式であるか、その派生型の 1 つ nullableObjが " System.Nullable 型の式" です (nullableObj に派生型を含めたくないことに注意してください)。

パターンは可換性を処理しないため、これはあまり良い解決策ではありません。そのため、コピーして貼り付け、式を逆にする必要があります。

$nullableObj$ + $obj$

また、このパターンは 10 進数のみを処理するため、関心のある型ごとにコピーして貼り付ける必要があります (そうです、潜在的に多くのパターンがあります)。

+記号は足し算と引き算の両方を処理するので、引き算について心配する必要はありません。

于 2012-07-24T04:33:03.793 に答える