的MSDN documentation为Flag
属性的电源标志枚举说,你应该:没有两个值
定义枚举常数的两个大国,也就是1,2,4,8, 等。这意味着组合枚举 常量中的各个标志不会重叠。
...当然,我总是试图记住这样做。然而,没有任何强制执行,如果你只是创建一个枚举的“基本”的方式像...
[Flags]
public enum BrokenEnum
{
None,
FirstOption,
SecondOption,
ThirdOption
}
...如预期不会做人。为了解决这个问题,我正在寻找某种类型的静态代码分析(如FxCop),当我的代码中存在像上面这样的枚举时,可以发出警告。我能找到的最接近的这种警告是'CA1008: Enums should have zero value' - 这对设计正确的枚举标志也很有帮助,但还不够。
什么是在我的代码中查找错误设计的标志枚举的最佳方法?解决方案越自动化越好。
我想我不应该一直在思考静态代码分析的“盒子里面”。像这样的单元测试应该很容易,并且给我几乎相同的最终结果。 –