Il MSDN documentation per l'attributo Flag
dice che si dovrebbe:enumerazioni Flag senza potenza di due valori
definire costanti di enumerazione in potenze di due, vale a dire, 1, 2, 4, 8, e così via . Ciò significa che i singoli flag nelle costanti combinate di enumerazione non si sovrappongono.
... e naturalmente cerco sempre di ricordare di farlo. Tuttavia, nulla far rispettare questo e se si crea un'enumerazione il modo in cui 'base' come ...
[Flags]
public enum BrokenEnum
{
None,
FirstOption,
SecondOption,
ThirdOption
}
... non si comporterà come previsto. Per combatterlo, sto cercando una specie di analisi del codice statico (come FxCop) che può avvisarmi quando esiste un enum simile a quello sopra nel mio codice. L'avvertimento più simile che ho trovato è stato 'CA1008: Enums should have zero value', che è anche utile per progettare correttamente l'enumerazione delle bandiere ma non è sufficiente.
Qual è il modo migliore per trovare enumerazioni di bandiere progettate in modo errato nel mio codice? Più la soluzione è automatizzata, meglio è.
Suppongo che non avrei dovuto pensare "dentro la scatola" dell'analisi statica del codice. Un test unitario come questo dovrebbe essere abbastanza semplice e mi darà quasi lo stesso risultato finale. –