整数値の分析 (積分演算)
ReSharper は、コード内の整数値のフローを追跡し、冗長または場合によっては誤ったステートメントを報告できます。すべての C# 整数数値型 — int
、uint
、byte
、sbyte
、short
、ushort
、long
、ulong
— をサポートし、次の問題について警告します。
常に
true
またはfalse
に評価される関係 / 等式演算子int
値をチェックする到達不能なswitch
ケース1
による乗算や0
の加算など、意味のない算術演算(リテラルまたは定数を除く): ReSharper は、x + 0
のような式が意図的なものであると想定しています)int
オーバーフローの可能性0
による除算の可能性System.Math
メソッドの呼び出しで発生する可能性のあるエラー。対応する基になる型を持つ列挙型での上記の問題。
整数値分析を切り替える
整数値の分析はデフォルトで有効になっています。必要に応じて、ReSharper オプション Alt+R, O の ページで整数演算を分析するチェックボックスをオフにして無効にすることができます。
使い方
ReSharper は、その整数を生成または影響を与える可能性のあるすべてのステートメントおよび式の考えられる結果に従って、各整数の可能な値の範囲を絞り込みます。いくつかの例を考えてみましょう。
ReSharper は、Math.Abs が常に非負の値を返すため、以下の例の temp < 0
は常に false
と評価されると推測できます。
次の例では、ReSharper は、最後の return
までに、input
の値が -100 ... 100
の範囲内にあり、より大きな divider
で除算すると、ゼロに向かって切り捨てられると推測します。
アノテーションを使用して分析を絞り込む
整数値の分析には、2 つの JetBrains.Annotations 属性([NonNegativeValue]
と [ValueRange(from, to)]
)があります。
これらの属性を int
を返す型メンバーおよび int
パラメーターで使用して、既知の制約を指定し、分析の精度を向上させることができます。
これは、メソッドパラメーターに [NonNegativeValueAttribute] でアノテーションを付けて、メソッド本体内の分析を改善する例です。パラメーターが負ではないことを知っている ReSharper は、そのパラメーターに対するすべての冗長操作を報告できます。
次の例は、メソッドにアノテーションを付けると、その使用箇所に関する冗長なチェックを見つけるのにどのように役立つかを示しています。
関連ページ:
アノテーションを使用してコードインスペクションを改善する
コード検査や他の多くの ReSharper の機能は、問題を検出し、改善を提案し、他の方法であなたを手助けするために、言語構成の動作を知ることに主に依存しています。ただし、この種の分析ではすべてを検出できるわけではありません。例: メソッドがフォーマットメソッドとして設計されている場合、メソッドの呼び出しに必要な引数が含まれていない場合、構造解析では潜在的な問題は見つかりません。この場合や他の多くの場合、ReSharper のは非常に役立ちます。このフレームワークで宣言された属性を使用することに...
価値と無効性の分析
ReSharper は、可能な「null」逆参照、重複ブール比較および null ・チェックを見つけるのに役立つ値分析を実行します。Null 許容値を分析するさまざまな方法:ReSharper は、いくつかの方法で値を分析できます。言語構成体の動作を理解します。次の例では、パラメーターが明示的に null 可能性をチェックされたという事実に基づいて、ReSharper はの値が実際に 'null' であると合理的に想定し、対応する警告を表示します。null 許容参照型が無効になっている場合、コ...
コレクションアクセス分析
ReSharper は、コレクションアイテムの値を分析するだけでなく、使用する各コレクション全体も分析します。このコレクションへの読み取りアクセスがあっても、コレクションが満たされない、変更されない場合は警告しますコレクションが決して読み込まれない場合すべての標準コレクションタイプは、デフォルトでこの方法で分析されます。必要に応じて、この分析をから派生したカスタムコレクションに適用することもできます。この場合、ReSharper に、コレクションの public メソッドの呼び出しがコレクション...