演练:对托管代码进行代码缺陷分析
在本演练中,使用代码分析工具对托管项目进行代码缺陷分析。
本演练将引导您逐步完成使用代码分析工具分析 .NET 托管代码程序集是否符合 Microsoft .NET Framework 设计准则的过程。
在本演练中,您:
- 分析并更正代码缺陷警告。
系统必备
- Visual Studio 高级专业版.
创建类库
创建类库 |
|
分析项目
分析托管项目是否存在代码缺陷
在**“解决方案资源管理器”**中选择 CodeAnalysisManagedDemo 项目。
在**“项目”菜单上,单击“属性”**。
此时将显示 CodeAnalysisManagedDemo 属性页。
单击**“代码分析”**。
确保检查 启用代码分析在创建时 (定义 CODE_ANALYSIS 常量)。
在**“运行此规则集”下拉列表中,选择“Microsoft 的所有规则”**。
在**“文件”菜单上,单击“保存选定项”**,然后关闭 ManagedDemo 属性页。
在**“生成”菜单上,单击“生成 ManagedDemo”**。
CodeAnalysisManagedDemo 项目生成的警告在**“错误列表”和“输出”**窗口中报告。
如果 代码分析 窗口未显示,请在 分析 菜单上,选择 窗口 和 选择代码分析。
更正代码分析问题
更正代码分析规则冲突
在**“视图”菜单上,单击“错误列表”**。
根据选择的开发人员配置文件,您可能必须指向**“视图”菜单上的“其他窗口”,然后单击“错误列表”**。
在**“解决方案资源管理器”中,单击“显示所有文件”**。
下一步,展开“属性”节点,然后打开 AssemblyInfo.cs 文件。
使用下表更正警告:
警告 |
更正警告 |
---|---|
CA1014:用 CLSCompliantAttribute 标记程序集:Microsoft.Design:应使用 CLSCompliantAttribute 来标记“demo”,其值应为 true。 |
|
CA1032:实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:public demo(String) |
|
CA1032:实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:public demo(String, Exception) |
|
CA1032:实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:protected demo(SerializationInfo, StreamingContext) |
|
CA1032:实现标准异常构造函数:Microsoft.Design:向此类添加下面的构造函数:public demo() |
|
CA1709:标识符的大小写应当正确:Microsoft.Naming:通过将命名空间名称“testCode”更改为“TestCode”来更正大小写。 |
|
CA1709:标识符的大小写应当正确:Microsoft.Naming:通过将命名空间名称“demo”更改为“Demo”来更正大小写。 |
|
CA1709:标识符的大小写应当正确:Microsoft.Naming:通过将成员名称“item”更改为“Item”来更正大小写。 |
|
CA1710:标识符应具有正确的后缀:Microsoft.Naming:重命名“testCode.demo”使其以“Exception”结尾。 |
|
CA2210:程序集应具有有效的强名称:用强名称密钥对“ManagedDemo”进行签名。 |
|
CA2237:以 SerializableAttribute 标记 ISerializable 类型:Microsoft.Usage:将 [Serializable] 特性添加到类型“demo”,原因是此类型实现了 ISerializable。 |
|
在完成更改后, Class1.cs 文件应如下所示:
//CodeAnalysisManagedDemo
//Class1.cs
using System;
using System.Runtime.Serialization;
namespace TestCode
{
[Serializable()]
public class DemoException : Exception
{
public DemoException () : base() { }
public DemoException(String s) : base(s) { }
public DemoException(String s, Exception e) : base(s, e) { }
protected DemoException(SerializationInfo info, StreamingContext context) : base(info, context) { }
public static void Initialize(int size) { }
protected static readonly int _item;
public static int Item { get { return _item; } }
}
}
排除代码分析警告
排除代码缺陷警告
对于每一个剩余警告,请执行以下操作:
在代码分析窗口,选择此警告。
选择 操作,然后选择 抑制消息,然后选择 在项目中抑制文件。
有关更多信息,请参阅如何:使用菜单项禁止显示警告。
重新生成项目。
将生成项目,并且不出现任何警告或错误。