2009-07-29 2 views
2

Если у меня есть следующие:ReSharper, неиспользуемые параметры и DbC, утверждает и т. Д.?

void Foo(Bar bar, Baz baz) 
{ 
    // Do something with bar, but not with baz. 
} 

... то ReSharper предупреждает меня "'Базем Parameter никогда не используется." и окрашивает его в серый цвет. Это полезный намек на то, что я могу избавиться от него.

С другой стороны, если у меня есть следующие:

void Foo(Bar bar, Baz baz) 
{ 
    Require.ArgumentNotNull(bar); 
    Require.ArgumentNotNull(baz); 

    // Some code that used to do something with bar and baz, 
    // but has been changed to no longer use baz. 
} 

... то ReSharper думает, что используется «Баз», и не предупреждает меня. Есть ли аннотация ReSharper, которую я могу использовать в ArgumentNotNull, чтобы сообщить ReSharper, что этот метод действительно не «использует» этот параметр и все еще выдаёт подсказку?

+0

Если тело метода не использует baz, почему вы требуете, чтобы оно не было нулевым? Семантически нетрудно утверждать, что требование непустоты * есть * 'с использованием' baz. – AakashM

+0

... потому что он использовал baz, но не больше; обновил вопрос. –

ответ

3

Если вы аннотируете метод Require.ArgumentNotNull с помощью атрибута [AssertionMethod] (из библиотеки аннотаций ReSharper), то ReSharper выдаст предупреждение «Параметр используется только при предварительных проверках».

Похоже, это решает вашу проблему.

Примечание: Это применимо к ReSharper 7.0, необходимо проверить, как устаревшая версия справится с этим.