演练:对托管代码进行代码缺陷分析

更新:2007 年 11 月

在本演练中,使用代码分析工具对托管项目进行代码缺陷分析。

本演练将引导您逐步完成使用代码分析工具分析 .NET 托管代码程序集是否符合 Microsoft .NET Framework 设计准则的过程。

在本演练中,您:

  • 分析并更正代码缺陷警告。

先决条件

分析托管项目是否存在代码缺陷

  1. 在 Development Edition 中,打开 ManagedDemo 解决方案。

  2. 在“解决方案资源管理器”中选择 ManagedDemo 项目。

  3. 在“项目”菜单上单击“属性”。

    将显示 ManagedDemo 属性页。

  4. 单击“代码分析”。

  5. 选择“启用代码分析”(定义 CODE_ANALYSIS 常数)。

  6. 在“文件”菜单上,单击“保存选定项”,然后关闭 ManagedDemo 属性页。

  7. 在“生成”菜单上单击“生成 ManagedDemo”。

    ManagedDemo 项目生成警告在“错误列表”和“输出”窗口中报告。

更正代码分析规则冲突

  1. 在“视图”菜单上单击“错误列表”。

    根据选择的开发人员配置文件,您可能必须指向“视图”菜单上的“其他窗口”,然后单击“错误列表”。

  2. 在“解决方案资源管理器”中,单击“显示所有文件”。

  3. 下一步,展开“配置”节点,然后打开 AssemblyInfo.cs 文件。

  4. 使用下表更正警告:

警告

更正警告

用 CLSCompliantAttribute 标记程序集:Microsoft.Design:应使用 CLSCompliantAttribute 来标记“ManagedDemo”,其值应为 true。

  1. 向 AssemblyInfo.cs 文件添加代码 usingSystem;。

  2. 下一步,在 AssemblyInfo.cs 文件的末尾添加代码 [assembly: CLSCompliant(true)]。

  3. 重新生成项目。

编译器警告(等级 1)CS3008.

  1. 将字段 _item 的名称更改为 ItemCount。

  2. 修改 public static int item { get { return _item; } } 以返回 ItemCount。

  3. 重新生成项目。

用 SerializableAttribute 标记 ISerializable 类型:Microsoft.Usage:将 [Serializable] 属性添加到类型“demo”,原因是此类型实现了 ISerializable。

  1. 向类 demo 添加 [Serializable ()] 属性。

  2. 重新生成项目。

实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:public demo(String)

  • 向类 demo 添加构造函数 public demo (String s) : base(s) { }。

实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:public demo(String, Exception)

  • 向类 demo 添加构造函数 public demo (String s, Exception e) : base(s, e) { }。

实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:protected demo(SerializationInfo, StreamingContext)

  1. 在 Class1.cs 文件的开头添加代码 using System.Runtime.Serialization; 。

  2. 下一步,添加构造函数 protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } to the class demo.

  3. 重新生成项目。

实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:public demo()

  1. 向类 demo 添加构造函数 public demo () : base() { }。

  2. 重新生成项目。

标识符应具有正确的后缀:Microsoft.Naming:重命名“testCode.demo”使其以“Exception”结尾。

  • 将类及其构造函数的名称更改为 DemoException。

标识符的大小写应该正确:Microsoft.Naming:更正命名空间名称“testCode”的大小写

  • 将命名空间 testCode 的大小写更改为 TestCode。

标识符的大小写应该正确:Microsoft.Naming:更正成员名称“item”的大小写。

  • 将成员的名称更改为 Item。

程序集应具有有效的强名称:用强名称密钥对“ManagedDemo”进行签名。

  1. 在“项目”菜单上单击“ManagedDemo 属性”。

    将显示项目属性。

  2. 单击“签名”。

  3. 选择“为程序集签名”复选框。

  4. 在“选择强名称密钥文件”列表中,选择“<新建…>”。

    将显示“创建强名称密钥”对话框。

  5. 在“密钥文件名称”中,键入 TestKey。

  6. 输入密码,然后单击“确定”。

  7. 在“文件”菜单上,单击“保存选定项”,然后关闭属性页。

  8. 重新生成项目。

排除代码分析警告

排除代码缺陷警告

  1. 在“错误列表”中选择其余的警告,然后右击并选择“禁止显示消息”。

  2. 重新生成项目。

    将生成项目,并且不出现任何警告或错误。