JetBrains Rider 2024.1 ヘルプ

コード検査: テキスト引数でシンボルを解決できません

このコードインスペクションは、さまざまな .NET フレームワーク規約に従って文字列リテラルで使用される識別子名を検証します。たとえば、System.Diagnostics.DebuggerDisplayAttribute または System.ArgumentException のコンストラクターパラメーターとその継承子です。

System.ArgumentException とその継承との連携方法を見てみましょう。System.ArgumentException およびその派生物(たとえば、System.ArgumentNullExceptionSystem.ArgumentOutOfRangeException など)のコンストラクターの paramName パラメーターは、問題の原因をすばやく見つけるのに役立つスタックトレースに表示されるため、例外の原因となったパラメーターの名前を予期します。引数のリテラルが、例外がスローされるメソッドのパラメーターのいずれにも対応しない場合、JetBrains Rider は警告を発行します。さらに、JetBrains Rider は、以下の例に示すように、さまざまなシグネチャー内の paramName パラメーターの位置を認識しています。

public void Foo(object value) { if(value == null) // Warning for unresolved symbol, where paramName is the first argument throw new ArgumentNullException("bad value", "value is null"); if(!(value is string)) // Warning for unresolved symbol, where paramName is the second argument throw new ArgumentException("bad value", "value is not string"); // do something }