您可以使用「Microsoft 最小建議規則」規則集,將焦點放在程式碼中最重要的問題,包括潛在的安全性漏洞、應用程式損毀,以及其他重要的邏輯和設計錯誤等等。您應在任何為專案建立的自訂規則集內包含此規則集。
規則 |
描述 |
|---|---|
具有可處置欄位的型別應該是可處置的 |
|
正確宣告事件處理常式 |
|
以 AssemblyVersionAttribute 標記組件 |
|
介面方法應該要可以由子型別呼叫 |
|
擁有原生資源的型別應為可處置 |
|
將 P/Invokes 移到 NativeMethods 類別 |
|
不要隱藏基底類別方法 |
|
必須正確實作 IDisposable |
|
不要在非預期的位置中引發例外狀況 |
|
避免使用重複的快速鍵 |
|
P/Invoke 進入點應該要存在 |
|
P/Invokes 不應該為可見的 |
|
自動配置型別不應該是 COM 可見的 |
|
必須在 P/Invoke 之後立即呼叫 GetLastError |
|
COM 可見型別的基底型別應該是 COM 可見的 |
|
應該符合 COM 註冊方法 |
|
P/Invokes 必須正確宣告 |
|
必須移除空的完成項 |
|
實值型別欄位應該為可移植的 |
|
P/Invoke 宣告應該是可移植的 |
|
請勿鎖定具有弱式識別的物件 |
|
必須檢視 SQL 查詢中是否有安全性弱點 |
|
必須指定 P/Invoke 字串引數的封送處理 |
|
必須檢查實值型別上的宣告式安全性 |
|
指標不應該為可見的 |
|
受保護型別不應公開欄位 |
|
方法安全性應該是型別的超集合 |
|
APTCA 方法應該只呼叫 APTCA 方法 |
|
APTCA 型別應該只擴充 APTCA 基底型別 |
|
不要間接公開具有連結要求的方法 |
|
覆寫連結要求應該與基底相同 |
|
必須將有弱點的 finally 子句包裝在外層 try 中 |
|
必須同時具有型別連結要求和繼承要求 |
|
安全性關鍵型別可能未參與型別等價 |
|
預設建構函式至少必須和基底型別的預設建構函式一樣關鍵 |
|
委派必須繫結至透明度一致的方法 |
|
覆寫基底方法時,方法必須保持一致的透明度 |
|
透明方法必須只包含可驗證的 IL |
|
透明方法不可以使用 SuppressUnmanagedCodeSecurity 屬性呼叫方法 |
|
透明程式碼不可以參考安全性關鍵項目 |
|
透明方法不可以滿足 LinkDemand |
|
型別至少必須和基底型別與介面一樣關鍵 |
|
透明的方法不可以使用安全性判斷提示 |
|
透明方法不可以呼叫機器碼 |
|
請重新擲回以保存堆疊詳細資料 |
|
不要多次處置物件 |
|
必須初始化實值型別的靜態內嵌欄位 |
|
不要以 WebMethod 標記 Serviced 元件 |
|
可處置的欄位應該受到處置 |
|
不要呼叫建構函式中的可覆寫方法 |
|
可處置型別應該宣告完成項 |
|
完成項應該呼叫基底類別完成項 |
|
請實作序列化建構函式 |
|
覆寫 ValueType.Equals 時必須一併多載等號比較運算子 |
|
以 STAThread 標記 Windows Form 進入點 |
|
必須標記所有不可序列化的欄位 |
|
必須呼叫 ISerializable 型別上的基底類別方法 |
|
必須以 SerializableAttribute 標記 ISerializable 型別 |
|
請正確實作序列化方法 |
|
必須正確實作 ISerializable |
|
必須提供格式化方法的正確引數 |
|
必須正確地測試 NaN |