支持库和应用程序可靠性(例如正确使用内存和线程)的可靠性规则。 可靠性规则包括:
规则
描述
CA2000:丢失范围之前释放对象
由于可能发生异常事件,导致对象的终结器无法运行,因此,应显式释放对象,以避免对该对象的所有引用超出范围。
CA2002:不要锁定具有弱标识的对象
当可以跨应用程序域边界直接进行访问对象时,则认为该对象具有弱标识。 对于尝试获取对具有弱标识的对象的锁的线程,该线程可能会被其他应用程序域中持有对同一对象的锁的另一线程所阻止。
CA2007:不直接等待任务
异步方法 直接等待 。
CA2008:不要在未传递 TaskScheduler 的情况下创建任务
任务创建或延续操作使用未指定 TaskScheduler 参数的方法重载。
CA2009:请勿对 ImmutableCollection 值调用 ToImmutableCollection
没有必要在 System.Collections.Immutable 命名空间的不可变集合上调用 ToImmutable 方法。
CA2011:请勿在其资源库中分配属性
属性在自身的 set 访问器中被意外赋值。
CA2012:正确使用 ValueTask
从成员调用中返回的 ValueTasks 旨在直接等待。 多次尝试使用 ValueTask 或在已知完成之前直接访问其结果可能会导致异常或损坏。 忽略此类 ValueTask 可能指示出现功能 Bug,还可能降低性能。
CA2013:请勿将 ReferenceEquals 与值类型结合使用
使用 System.Object.ReferenceEquals 比较值时,如果 objA 和 objB 是值类型,则在将其传递给 ReferenceEquals 方法之前将它们装箱。 这意味着,即使 objA 和 objB 都表示值类型的同一个实例,ReferenceEquals 方法也会返回 false。
CA2014:请勿在循环中使用 stackalloc。
仅在当前方法调用结束时,Stackalloc 分配的堆栈空间才会释放。 在循环中使用此方法可能导致无限堆栈增长,最终出现堆栈溢出的情况。
CA2015:请勿为派生自 MemoryManagerT> 的类型定义终结器
将终结器添加到派生自 MemoryManager<T> 的类型可能使内存在仍被 Span<T> 使用时得到释放。
CA2016:将 CancellationToken 参数转发到采用一个该参数的方法
将 CancellationToken 参数转发给方法来确保操作取消通知得到正确传播,或者在 CancellationToken.None 中显式传递,以指示有意不传播令牌。
CA2017:参数计数不匹配
日志记录消息模板中提供的参数数与命名占位符的数量不匹配。
CA2018:Buffer.BlockCopy 的 参数应指定要复制的字节数
使用 Buffer.BlockCopy 时,count 参数指定要复制的字节数。 应仅对元素大小正好为一个字节的数组将 Array.Length 用于 count 参数。 byte、sbyte 和 bool 数组具有大小为一个字节的元素。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。