コードインスペクション:'CancellationToken' の誤用の可能性
このインスペクションは、メソッドまたは関数が引数として渡されたものの代わりに外部コンテキストからの CancellationToken を使用するシナリオを検出します。
誤った使用箇所:
public void Bar(CancellationToken methodToken)
{
LocalFunction(methodToken);
// do something
void LocalFunction(CancellationToken localFuncToken)
{
Foo(methodToken); // Incorrect: should use 'localFuncToken'.
}
}
public void Foo(CancellationToken unused) => throw new Exception();
ここで、 LocalFunction はパラメーター CancellationToken localFuncToken を宣言していますが、それを使用する代わりに、外側の methodToken が Foo に渡されるため、一貫性のないキャンセル動作が発生する可能性があります。
メソッドまたは関数に渡されるトークンが一貫して使用されていることを確認します。
public void Bar(CancellationToken methodToken)
{
LocalFunction(methodToken);
// do something
void LocalFunction(CancellationToken localFuncToken)
{
Foo(localFuncToken); // Correct: respects the token passed to the function.
}
}
public void Foo(CancellationToken unused) => throw new Exception();
CancellationToken を誤って使用すると、操作のキャンセルが失敗したり、誤ってキャンセルされたりするなど、予期しない動作が発生する可能性があります。 このインスペクションは、一貫性のある正しいトークンの使用を強制することで、こうした微妙なバグを防ぐのに役立ちます。
2026 年 6 月 12 日