MS代码分析规则CA1008的变通办法:枚举值应为零

Donotalo

我正在研究.NET 4.0 / C#项目。我为项目启用了一些基本的代码分析规则。我被CA1008打中了。我完全理解为什么需要CA1008

我正在使用的软件可以与其他设备通信。这些设备是可配置的。配置存储在内部EEPROM中。其中一种配置是AlarmType,在EEPROM中,其值可以为1到11。我将警报类型定义如下:

public enum AlarmType
{
    Type1 = 1,
    Type2 = 2,
    Type3 = 3,
    // ...
    Type10 = 10,
    Type11 = 11
}

配置设备时,我允许用户使用来获取警报值,从而选择一种警报类型Enum.GetValues()检查EEPROM中的值时,要求就像该值是从1到11,然后显示警报的名称,否则请考虑Type1

Visual Studio 2010会发出警告,指出其AlarmType值应等于零。我不想添加它,因为这将(1)违反AlarmTypeAlarmType不能是None的定义,并且(2)None枚举要呈现给用户的枚举值时,需要进行额外的检查以排除选项。

除了抑制CA1008,我还可以作为解决方法?我在设计中做错了什么吗?

马丁·利弗塞奇

的默认值AlarmType将为0。例如,在此行代码之后

AlaramType alarmType;

alarmType是0。但是,由于没有对应的枚举值,因此它现在具有无效值。这就是警告和您声明的原因

我不想添加它,因为这将(1)违反AlarmType的定义(AlarmType不能为None),并且(2)枚举要提供给用户的枚举值时,需要进行额外的检查以排除None选项。

是不正确的。实际上,AlarmType在分配到之前,所有的实例的值都为0,并且如果您要进行防御性编码,则必须验证该AlarmType是否有效。没有为值0定义名称在任何情况下都不会保护您免受AlarmType变量0的影响,因为它们没有被初始化。

我建议您定义一个0枚举值并调用它InvalidNone或者它描述枚举变量尚未初始化的名称。

或者,如果您不想这样做,则可以使用attribute抑制警告

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据CA1008的FXCop枚举规则,默认值应为零。这适用于C#吗?

来自分类Dev

根据CA1008的FXCop枚举规则,默认值应为零。这适用于C#吗?

来自分类Dev

javascript通过参考变通办法

来自分类Dev

MongoDB 2.6中的preserveNullAndEmptyArrays的变通办法

来自分类Dev

CSS初始字母变通办法

来自分类Dev

MongoDB 2.6中的preserveNullAndEmptyArrays的变通办法

来自分类Dev

是否有任何变通办法可以从readCsv()方法而不是未定义的方法中返回res的值?

来自分类Dev

成员函数指针的变通办法是错误的破解?

来自分类Dev

涉及模板参数的模板参数变通办法

来自分类Dev

测试某些字符时StringIndexOutOfBoundsException的变通办法

来自分类Dev

C#EPPLUS Excel数组公式变通办法

来自分类Dev

Phonegap iOS振动持续时间变通办法

来自分类Dev

LPTSTR丢失范围,变通办法不起作用(C ++)

来自分类Dev

jsdom document.readyState为readOnly的变通办法?

来自分类Dev

测试某些字符时StringIndexOutOfBoundsException的变通办法

来自分类Dev

保存解析对象仅适用于变通办法

来自分类Dev

使用泛型中的参数的new()约束的变通办法

来自分类Dev

Python LIRC阻止信号变通办法不起作用

来自分类Dev

Mono中的错误的变通办法:错误的Process.ProcessName

来自分类Dev

jsdom document.readyState为readOnly的变通办法?

来自分类Dev

第三方servelet的Guice Singleton Servlet绑定变通办法

来自分类Dev

GCC 4.8.1的变通办法:抱歉,未实现:修改arguments_pack_select

来自分类Dev

MSVC2015更新3可变参数模板变通办法

来自分类Dev

ORA-00997的变通办法:非法使用LONG数据类型

来自分类Dev

Groupby / Transform在14.1中要好得多,但仍然比变通办法慢

来自分类Dev

为什么在R中将强制双精度拆分为整数并有变通办法

来自分类Dev

Angular-跨源请求仅支持协议方案-需要变通办法以在本地运行$ http

来自分类Dev

是否有任何变通办法在Windows上安装Greenplum数据库

来自分类Dev

模块依赖于Terraform 0.11的变通办法不起作用

Related 相关文章

  1. 1

    根据CA1008的FXCop枚举规则,默认值应为零。这适用于C#吗?

  2. 2

    根据CA1008的FXCop枚举规则,默认值应为零。这适用于C#吗?

  3. 3

    javascript通过参考变通办法

  4. 4

    MongoDB 2.6中的preserveNullAndEmptyArrays的变通办法

  5. 5

    CSS初始字母变通办法

  6. 6

    MongoDB 2.6中的preserveNullAndEmptyArrays的变通办法

  7. 7

    是否有任何变通办法可以从readCsv()方法而不是未定义的方法中返回res的值?

  8. 8

    成员函数指针的变通办法是错误的破解?

  9. 9

    涉及模板参数的模板参数变通办法

  10. 10

    测试某些字符时StringIndexOutOfBoundsException的变通办法

  11. 11

    C#EPPLUS Excel数组公式变通办法

  12. 12

    Phonegap iOS振动持续时间变通办法

  13. 13

    LPTSTR丢失范围,变通办法不起作用(C ++)

  14. 14

    jsdom document.readyState为readOnly的变通办法?

  15. 15

    测试某些字符时StringIndexOutOfBoundsException的变通办法

  16. 16

    保存解析对象仅适用于变通办法

  17. 17

    使用泛型中的参数的new()约束的变通办法

  18. 18

    Python LIRC阻止信号变通办法不起作用

  19. 19

    Mono中的错误的变通办法:错误的Process.ProcessName

  20. 20

    jsdom document.readyState为readOnly的变通办法?

  21. 21

    第三方servelet的Guice Singleton Servlet绑定变通办法

  22. 22

    GCC 4.8.1的变通办法:抱歉,未实现:修改arguments_pack_select

  23. 23

    MSVC2015更新3可变参数模板变通办法

  24. 24

    ORA-00997的变通办法:非法使用LONG数据类型

  25. 25

    Groupby / Transform在14.1中要好得多,但仍然比变通办法慢

  26. 26

    为什么在R中将强制双精度拆分为整数并有变通办法

  27. 27

    Angular-跨源请求仅支持协议方案-需要变通办法以在本地运行$ http

  28. 28

    是否有任何变通办法在Windows上安装Greenplum数据库

  29. 29

    模块依赖于Terraform 0.11的变通办法不起作用

热门标签

归档