筛选过的 Code rule

Code Rule Note

Microfost.Design

CA1001:具有可释放字段的类型应该是可释放的

using System;

using System.IO;

 

namespace DesignLibrary

{

   // This class violates the rule.

   public class NoDisposeMethod

   {

      FileStream newFile;

 

      public NoDisposeMethod()

      {

         newFile = new FileStream(@"c:\temp.txt", FileMode.Open);

      }

   }

 

   // This class satisfies the rule.

   public class HasDisposeMethod: IDisposable

   {

      FileStream newFile;

 

      public HasDisposeMethod()

      {

         newFile = new FileStream(@"c:\temp.txt", FileMode.Open);

      }

 

      protected virtual void Dispose(bool disposing)

      {

         if (disposing)

            {

               // dispose managed resources

               newFile.Close();

            }

          // free native resources

      }

 

      public void Dispose()

      {

         Dispose(true);

             GC.SuppressFinalize(this);

      }

   }

}

CA1008:枚举应具有零值

CA1011:考虑将基类型作为参数传递

CA1016:用 AssemblyVersionAttribute 标记程序集

CA1017:用 ComVisibleAttribute 标记程序集

CA1018:用 AttributeUsageAttribute 标记特性

CA1023:索引器不应是多维的

CA1024:在适用处使用属性

在大多数情况下,属性代表数据,而方法执行操作。访问属性的方式与访问字段的方式相似,因此使用它们更容易。如果存在下列条件之一,方法就很适于成为属性:

  • 不采用任何参数并返回对象的状态信息。
  • 接受单个参数来设置对象的部分状态。

属性的表现应当与字段一样;如果该方法不是这样,则不应将其更改为属性。在下列情况下,方法比属性更好:

  • 方法执行耗时的操作。与设置或获取字段值所需的时间相比,此方法的速度明显较慢。
  • 方法执行转换。访问字段不会返回它所存储的数据的转换版本。
  • Get 方法会产生明显副作用。检索字段的值不会产生任何副作用。
  • 执行的顺序很重要。设置字段的值并不依赖于其他操作的发生。
  • 连续调用两次方法会产生不同的结果。
  • 方法是静态的,但返回了调用方可更改的对象。调用方不能通过检索某字段的值来更改该字段存储的数据。
  • 方法返回数组。

CA1025:用形参数组替换重复的实参

CA1034:嵌套类型不应是可见的

CA1040:避免使用空接口

CA1044:属性不应是只写的

CA1049:拥有本机资源的类型应是可释放的

CA1051:不要声明可见实例字段

CA1053:静态容器类型不应具有构造函数

CA1060:将 P/Invoke 移动到 NativeMethods 类

CA1062:验证公共方法的参数

CA1063:正确实现 IDisposable

CA1065:不要在意外的位置引发异常

Microsoft.Globalization

CA1307:指定 StringComparison

CA1308:将字符串规范化为大写

CA1309:使用序号 StringComparison

CA2101:指定对 P/Invoke 字符串参数进行封送处理

  // Violates rule: SpecifyMarshalingForPInvokeStringArguments.
        [DllImport("advapi32.dll", CharSet=CharSet.Auto)]
        internal static extern int RegCreateKey(IntPtr key, String subKey, out IntPtr result);
 
        // Satisfies rule: SpecifyMarshalingForPInvokeStringArguments.
        [DllImport("advapi32.dll", CharSet = CharSet.Unicode)]
        internal static extern int RegCreateKey2(IntPtr key, String subKey, out IntPtr result);

 

Microsoft.Maintainability

CA1500:变量名不应与字段名相同

CA1504:检查令人误解的字段名

CA1505:避免编写无法维护的代码

Microsoft.Mobility

CA1601:不要使用阻止电源状态更改的计时器

Microsoft.Naming

CA1700:不要命名“Reserved”枚举值

CA1701:资源字符串复合词应采用正确的大小写

CA1702:复合词应采用正确的大小写

CA1703:资源字符串应正确拼写

CA1704:标识符应正确拼写

CA1707:标识符不应包含下划线

CA1709:标识符的大小写应当正确

CA1710:标识符应具有正确的后缀

CA1711:标识符应采用正确的后缀

CA1712:不要将类型名用作枚举值的前缀

CA1715:标识符应具有正确的前缀

CA1716:标识符不应与关键字冲突

CA1717:只有 FlagsAttribute 枚举应采用复数形式的名称

CA1719:参数名不应与成员名冲突

CA1720:标识符不应包含类型名称

CA1721:属性名不应与 get 方法冲突

CA1722:标识符应采用正确的前缀

CA1724:类型名不应与命名空间冲突

CA1725:参数名应与基方法中的声明保持一致

CA1726:使用首选词条

CA2204:应正确拼写文本

Microsoft.Performance

CA1800:避免进行不必要的强制转换

CA1802:在合适的位置使用文本

CA1804:移除未使用的局部变量

CA1809:避免过多的局部变量

CA1811:避免使用未调用的私有代码

CA1812:避免未实例化的内部类

CA1815:重写值类型上的 Equals 和相等运算符

CA1819:属性不应返回数组

CA1820:使用字符串长度测试是否有空字符串

CA1822:将成员标记为 static

CA1823:避免未使用的私有字段

Microsoft.Portability

CA1900:值类型字段应为可移植字段

CA1903:仅使用目标框架中的 API

Microsoft.Reliability

CA2000:超出范围前释放对象

CA2001:避免调用有问题的方法

Microsoft.Usage

CA1801:检查未使用的参数

CA1806:不要忽略方法结果

CA1816:正确调用 GC.SuppressFinalize

CA2200:再次引发以保留堆栈详细信息

CA2201:不要引发保留的异常类型

CA2202:不要多次释放对象

CA2205:使用 Win32 API 的托管等效项

CA2208:正确实例化参数异常

CA2211:非常量字段不应是可见的

CA2213:应释放可释放的字段

CA2215:Dispose 方法应调用基类的 Dispose

CA2216:可释放类型应声明终结器

CA2224:重载相等运算符时重写 Equals 方法

CA2227:集合属性应为只读

CA2229:实现序列化构造函数

CA2230:对可变数量的参数使用 params

CA2234:传递 System.Uri 对象,而不传递字符串

CA2241:为格式化方法提供正确的参数

CA2242:正确测试 NaN

 

posted @ 2012-12-21 09:40  xiaokang088  阅读(1195)  评论(0编辑  收藏  举报