Ho seguente metodo di estensione per le stringhe:analisi del codice comportamento regola CA1062
public static bool IsNullOrEmpty(this string target)
{
return string.IsNullOrEmpty(target);
}
... e nel codice lo uso come segue:
public static string DoSomethingOnString(this string target)
{
if (target.IsNullOrEmpty())
return target;
target = target.Trim(); //This line causes CA1062 violation
return target;
}
Ora, se corro analisi del codice su questo, ricevo una violazione della regola CA1062. Ma se cambio il codice per:
public static string DoSomethingOnString(this string target)
{
if (string.IsNullOrEmpty(target)) //CHANGED LINE
return target;
target = target.Trim(); //This line DOES NOT cause CA1062 violation anymore
return target;
}
... allora va bene.
Perché pensa che non sto verificando la condizione nulla nel primo esempio? Controlla solo string.IsNullOrEmpty o string.IsNullOrWhiteSpace? C'è un modo per far sì che CA riconosca il mio metodo di estensione o dovrò sopprimere questa regola?
UPDATE: Se avete lo stesso problema si può votare sulla voce feedback che ho presentato su MS Connect: Code Analysis rule CA1062 raises false alarm
* Dove * è la violazione? Nel metodo di estensione? Nella chiamata * al * metodo di estensione? O dopo? Ogni volta che menzioni un errore/avvertimento in una domanda, * per favore * mostra dove si verifica. –
Guarda il codice IL, l'analisi del codice non funziona sul codice che vedi nel tuo IDE, quindi forse questo sarà di aiuto. – Gorgsenegger
Si potrebbe usare il 'ValidatedNotNullAttribute' per far sapere a FxCop. Più qui: http://esmithy.net/2011/03/15/suppressing-ca1062/ –