El MSDN documentation para el atributo Flag
dice que usted debe:enumeraciones bandera sin poder de dos valores
definir constantes de enumeración en potencias de dos, es decir, 1, 2, 4, 8, etc. . Esto significa que los indicadores individuales en las constantes de enumeración combinada no se superponen.
... y, por supuesto, siempre trato de recordar hacer eso. Sin embargo, no hay nada que hacer cumplir y si usted acaba de crear una enumeración el camino 'básico' como ...
[Flags]
public enum BrokenEnum
{
None,
FirstOption,
SecondOption,
ThirdOption
}
... no se comportará como se espera. Para combatir esto, estoy buscando algún tipo de análisis de código estático (como FxCop) que pueda avisarme cuando haya una enumeración como la anterior en mi código. La advertencia más cercana que pude encontrar fue 'CA1008: Enums should have zero value', que también es útil para diseñar la enumeración de indicadores correctamente, pero no es suficiente.
¿Cuál es la mejor forma de encontrar enumeraciones de banderas incorrectamente diseñadas en mi código? Cuanto más automatizada sea la solución, mejor.
supongo que no debería haber estado pensando 'dentro de la caja' de análisis de código estático. Una prueba de unidad como esta debería ser bastante fácil y darme casi el mismo resultado final. –