依據 CheckId 列出 Managed 程式碼的程式碼分析警告
下表依照警告的 CheckId 識別項列出 Managed 程式碼的程式碼分析警告。
警告
CheckId |
警告 |
描述 |
---|---|---|
CA1000 |
呼叫泛型型別的靜態成員時,必須為型別指定型別引數。 呼叫不支援介面的泛型執行個體 (Instance) 成員時,必須為成員指定型別引數。 在上述兩種情況下,指定型別引數的語法不同且容易混淆。 |
|
CA1001 |
類別會宣告及實作型別為 System.IDisposable 的執行個體欄位,且該類別不會實作 IDisposable。 宣告 IDisposable 欄位的類別會間接擁有 Unmanaged 資源,且應實作 IDisposable 介面。 |
|
CA1002 |
System.Collections.Generic.List<(Of <(T>)>) 是專為效能而非繼承所設計的泛型集合。 因此,List 不包含任何虛擬成員。 應該改為公開專為繼承所設計的泛型集合。 |
|
CA1003 |
型別包含會傳回 void 的委派,其簽章包含兩個參數 (第一個參數是物件,第二個參數則是可指派給 EventArgs 的型別),而包含組件則會以 Microsoft .NET Framework 2.0 為目標。 |
|
CA1004 |
推斷是指如何利用傳遞到泛型方法的引數型別,而不是利用型別引數的明確規格,來決定泛型方法的型別引數。 若要啟用推斷,泛型方法的參數簽章必須包含與方法之型別參數具有相同型別的參數。 在上述情形中,不必指定型別引數。 使用所有型別參數的推斷時,呼叫泛型和非泛型執行個體方法之語法是相同的;這簡化泛型方法的可用性。 |
|
CA1005 |
泛型型別所包含的型別參數越多,就越難了解並記住每個型別參數所代表的含意。 若是只包含一種型別參數 (如 List<T>),以及包含兩個型別參數的某些特定情況 (如 Dictionary<TKey, TValue>),這些通常都清楚易懂。 不過,如果存在兩個以上的型別參數,則對大多數使用者而言都會變得難以理解。 |
|
CA1006 |
巢狀型別引數就是也是泛型型別的型別引數。 若要呼叫其簽章含有巢狀型別引數的成員,則使用者必須具現化 (Instantiate) 一個泛型型別,並將這個型別傳遞給第二個泛型型別的建構函式。 必要程序及語法十分複雜,且應予以避免。 |
|
CA1007 |
外部可見的方法包含 System.Object 型別的參考參數。 使用泛型方法可讓所有型別 (遵守條件約束) 傳遞給方法,而不需要先將型別轉型為參考參數型別。 |
|
CA1008 |
如同其他實值型別一般,未初始化的列舉其預設值為零。 非旗標屬性的列舉應該要使用零值來定義成員,讓預設值成為列舉的有效值。 如果已套用 FlagsAttribute 屬性的列舉定義零值成員,則其名稱應該是 "None",以表示列舉中未設定任何值。 |
|
CA1009 |
事件處理常式方法會採用兩個參數。 第一個的型別為 System.Object 且名稱為 "sender"。 這是引發事件的物件。 第二個參數的型別為 System.EventArgs 且名稱為 "e"。 這是與事件相關聯的資料。 事件處理常式方法不應該傳回值;在 C# 程式設計語言中,這是由 void 傳回型別所表示。 |
|
CA1010 |
若要放寬集合的可用性,請實作其中一個泛型集合介面。 接著,使用該集合填入泛型集合型別。 |
|
CA1011 |
當方法宣告將基底型別指定為參數,則從此基底型別衍生的任何型別都可以當做對應引數傳遞給方法。 如果不需要以衍生參數型別提供額外的功能,則使用基底型別可以更廣泛地運用此方法。 |
|
CA1012 |
只有衍生型別 (Derived Type) 可以呼叫抽象型別上的建構函式。 因為公用建構函式會建立型別的執行個體,而且您無法建立抽象型別的執行個體,因此具有公用建構函式的抽象型別設計不正確。 |
|
CA1013 |
公用或保護的型別會實作加法或減法運算,但不會實作等號比較運算子。 |
|
CA1014 |
Common Language Specification (CLS) 會定義命名限制、資料型別及組件必須遵守的規則 (如果組件會使用於跨程式設計語言時)。 良好的設計會要求所有組件使用 CLSCompliantAttribute 明確表示 CLS 符合性。 如果這個屬性未出現於組件中,則表示組件不符合標準。 |
|
CA1016 |
.NET Framework 會使用版本號碼以便唯一識別組件,並繫結至強式名稱組件中的型別。 版本號碼會與版本和發行者 (Publisher) 原則一起使用。 應用程式預設只會與建置它們的組件版本一起執行。 |
|
CA1017 |
ComVisibleAttribute 會判斷 COM 用戶端如何存取 Managed 程式碼。 良好的設計會要求組件明確表示 COM 的可視性。 COM 的可視性可以針對整個組件進行設定,然後針對個別型別及型別成員進行覆寫。 如果這個屬性不存在,則 COM 用戶端可以看到組件的內容。 |
|
CA1018 |
當您定義自訂屬性時,請使用 AttributeUsageAttribute 標記它,以指出可以在原始程式碼的哪個位置套用自訂屬性。 屬性的意義和預期的用法將決定它在程式碼中的有效位置。 |
|
CA1019 |
屬性可以定義必須在將屬性套用至目標時指定的強制引數。 這些引數也稱為位置引數,因為它們會當做位置參數提供給屬性建構函式。 對於每個強制引數而言,屬性 (Attribute) 還須提供對應的唯讀屬性 (Property),才可以在執行時期擷取引數值。 屬性也可以定義選擇性引數,也稱為具名引數。 這些引數會依照名稱提供給屬性 (Attribute) 建構函式,且必須有對應的讀取/寫入屬性 (Property)。 |
|
CA1020 |
請確定每個命名空間都有邏輯組織,而且存在合理的理由可以將型別置於沒有嚴密填入的命名空間中。 |
|
CA1021 |
以傳址方式傳遞型別時 (使用 out 或 ref),您需要擁有使用指標的經驗、了解實值型別和參考型別之間的差異,並處理具有多個傳回值的方法。 此外,out 和 ref 參數之間的差異一般人不甚了解。 |
|
CA1023 |
索引子 (也就是索引屬性) 應使用單一索引。 多維索引子可能會大幅降低程式庫的可用性。 |
|
CA1024 |
公用或保護的方法具有以 "Get" 開頭的名稱,該名稱不採用任何參數並且會傳回不是陣列的值。 此方法可能是成為屬性的不錯候選者。 |
|
CA1025 |
當引數的正確數目未知,而且變數引數都是相同的型別 (或可以相同的型別傳遞) 時,需使用參數陣列而不是重複的引數。 |
|
CA1026 |
允許使用預設參數的方法受制於 CLS。不過,CLS 允許編譯器 (Compiler) 忽略已指派給這些參數的值。 若要在程式語言之間維護您要的行為,則必須以提供預設參數的方法多載來取代使用預設參數的方法。 |
|
CA1027 |
列舉型別是一種實值型別 (Value Type),用以定義一組相關的具名常數。 當列舉的具名常數可以有意義地加以結合時,會將 FlagsAttribute 套用至此列舉。 |
|
CA1028 |
列舉型別是一種實值型別 (Value Type),用以定義一組相關的具名常數。 根據預設,System.Int32 資料型別會用於儲存常數值。 雖然您可以變更這個基礎型別,但是大多數情節中仍不需要或不建議進行變更。 |
|
CA1030 |
此規則會偵測具有事件常用名稱的方法。 如果方法因回應清楚定義的狀態變更而被呼叫,應該由事件處理常式叫用該方法。 呼叫方法的物件應該要引發事件,而不是直接呼叫方法。 |
|
CA1031 |
不應該攔截一般例外狀況。 請攔截較明確的例外狀況,或重新擲回一般例外狀況當做 catch 區塊中的最後一個陳述式。 |
|
CA1032 |
無法提供整組的建構函式會導致難以正確地處理例外狀況。 |
|
CA1033 |
非密封外部可見的型別會提供公用介面的明確方法實作,但未提供同名的替代外部可見方法。 |
|
CA1034 |
巢狀型別是在其他型別範圍內宣告的型別。 巢狀型別可用來封裝包含型別 (Containing Type) 私用的 (Private) 實作細節。 因為有這樣的用途,所以巢狀型別不應為外部可見的。 |
|
CA1035 |
這項規則要求 ICollection 實作提供強型別成員,讓使用者在使用介面所提供的功能時,不需將引數轉換為 Object 型別。 這項規則假設實作 ICollection 的型別會這樣做,以管理效力比 Object 還強之型別的執行個體集合。 |
|
CA1036 |
公用或受保護的型別實作 System.IComparable 介面。 它不會覆寫 Object.Equals,也不會多載等號、不等、小於或大於的語言特定比較運算子。 |
|
CA1038 |
此規則要求 IEnumerator 實作同時也提供 Current 屬性的強型別版本,如此當使用者使用介面提供的功能時,就不需要將傳回值轉型為強型別。 |
|
CA1039 |
這項規則要求 IList 實作提供強型別成員,讓使用者在使用介面所提供的功能時,不需將引數轉換為 System.Object 型別。 |
|
CA1040 |
介面是用來定義一組可提供行為或程式使用合約的成員。 不論型別出現在繼承階層架構 (Inheritance Hierarchy) 中的何處,任何型別都可以採用介面所描述的功能。 型別會實作介面,方法是提供介面成員的實作。 空白介面不會定義任何成員,因此也不會定義能夠實作的合約。 |
|
CA1041 |
型別或成員是使用並未指定其 ObsoleteAttribute.Message 屬性 (Property) 的 System.ObsoleteAttribute 屬性 (Attribute) 來標記。 編譯使用 ObsoleteAttribute 來標記的型別或成員之後,會顯示屬性 (Attribute) 的 Message 屬性 (Property), 以便提供使用者有關過時型別或成員的資訊。 |
|
CA1043 |
索引子 (也就是索引的屬性) 應該使用整數型別或字串型別的索引。 這些型別通常會用於資料結構的索引,可以提升程式庫的可用性。 Object 型別的使用應限制於無法在設計階段指定特定整數型別或字串型別的情況。 |
|
CA1044 |
雖然它是可接受並經常需要具有唯讀屬性,設計方針會禁止使用唯寫屬性的屬性。 這是因為讓使用者,設定一個值,然後防止使用者檢視值並不會提供任何安全性。 同時,如果沒有讀取權限,則無法檢視共用物件的狀態,進而限制這些物件的使用性。 |
|
CA1045 |
以傳址方式傳遞型別時 (使用 out 或 ref),您需要擁有使用指標的經驗、了解實值型別和參考型別之間的差異,並處理具有多個傳回值的方法。 目標為一般使用者的程式庫架構設計人員不應預期使用者會熟練地運用 out 或 ref 參數。 |
|
CA1046 |
對參考型別而言,等號比較運算子的預設實作 (Implementation) 永遠都是正確的。 根據預設,只有當兩項參考都指向相同物件時才會相等。 |
|
CA1047 |
型別會宣告 protected 成員,如此繼承的型別即可存取或覆寫成員。 根據定義,密封型別無法被繼承,這表示無法呼叫密封型別上的受保護方法。 |
|
CA1048 |
型別會將方法宣告為 virtual,讓繼承型別可以覆寫 virtual 方法的實作。 根據預設,密封型別無法被繼承。 這會讓密封型別上的虛擬方法失去意義。 |
|
CA1049 |
配置 Unmanaged 資源的型別應實作 IDisposable,讓呼叫端視需要釋放這些資源,並且縮短持有資源之物件的存留期。 |
|
CA1050 |
型別會在命名空間之內宣告以防止名稱衝突,而且可當做組織物件階層架構中相關型別的一種方法。 |
|
CA1051 |
欄位的主要用法應該是當做實作詳細資料。 欄位應該是私用或內部的,而且應使用屬性公開。 |
|
CA1052 |
公用或受保護的型別只包含靜態成員,因此不會利用 sealed (C# 參考) (NotInheritable) 修飾詞宣告它們。 預定不會繼承的型別應該使用 sealed 修飾詞來標記,以禁止使用它做為基底型別。 |
|
CA1053 |
公用或巢狀公用型別只宣告靜態成員,而且具有公用或保護的預設建構函式。 建構函式不是必要的,因為呼叫靜態成員不需型別的執行個體。 為了安全,字串多載應該使用字串引數來呼叫統一資源識別項 (URI) 多載。 |
|
CA1054 |
如果方法使用 URI 字串表示,應該提供採用 URI 類別的對應多載,這樣就可以透過安全的方式提供這些服務。 |
|
CA1055 |
這項規則假設方法會傳回 URI。 URI 的字串表示方式容易發生剖析和編碼錯誤,並且可能因此產生安全性弱點。 System.Uri 類別以安全的方式提供這些服務。 |
|
CA1056 |
此規則假設屬性代表統一資源識別元 (URI)。 URI 的字串表示方式容易發生剖析和編碼錯誤,並且可能因此產生安全性弱點。 System.Uri 類別以安全的方式提供這些服務。 |
|
CA1057 |
型別會宣告方法多載,這些方法多載的差別只在於以 System.Uri 參數取代字串參數。 接受字串參數的多載不會呼叫接受 URI 參數的多載。 |
|
CA1058 |
外部可見的型別會延伸某些基底型別 (Base Type)。 請使用其他作法。 |
|
CA1059 |
具象型別就是具有完整實作 (Implementation) 且因此能加以具現化 (Instantiated) 的型別。 若要讓成員能廣泛使用,請使用建議的介面來取代具象型別。 |
|
CA1060 |
平台引動方法 (例如使用 System.Runtime.InteropServices.DllImportAttribute 屬性標記的方法,或在 Visual Basic 中使用 Declare 關鍵字定義的方法) 都會存取 Unmanaged 程式碼。 這些方法應該是 NativeMethods、SafeNativeMethods 或 UnsafeNativeMethods 類別。 |
|
CA1061 |
只有在衍生方法的參數簽章因型別衍生時比基底方法參數簽章中的型別還要弱時,基底型別中的方法才會被衍生型別中的相同具名方法所隱藏。 |
|
CA1062 |
所有傳遞至外部可見方法的參考引數都應經過 null 檢查。 |
|
CA1063 |
所有 IDisposable 型別都應該正確實作 Dispose 模式。 |
|
CA1064 |
內部例外狀況只會在自己的內部範圍內顯示。 當例外狀況超出內部範圍後,只能使用基本例外狀況來攔截例外狀況。 如果內部例外狀況是繼承自 T:System.Exception、T:System.SystemException 或 T:System.ApplicationException,外部程式碼就沒有足夠的資訊可以知道應該如何處理此例外狀況。 |
|
CA1065 |
不可擲回例外狀況 (Exception) 的方法卻擲回例外狀況。 |
|
CA1300 |
若要對使用由右至左讀取順序的文化特性 (Culture) 正確顯示訊息方塊,MessageBoxOptions 列舉型別的 RightAlign 和 RtlReading 成員必須傳遞至 Show 方法。 |
|
CA1301 |
便捷鍵也稱為快速鍵,可讓鍵盤使用 ALT 鍵存取控制項。 當多個控制項具有重複的便捷鍵時,就無法妥善定義便捷鍵的行為。 |
|
CA1302 |
System.Environment.SpecialFolder 列舉 (Enumeration) 包含參考特殊系統資料夾的成員。 這些資料夾的位置在不同的作業系統上可有不同的值,使用者可以變更某些位置,而且位置會當地語系化。 Environment.GetFolderPath 方法會傳回與 Environment.SpecialFolder 列舉相關聯、已當地語系化且適用於目前執行中之電腦的位置。 |
|
CA1303 |
外部可見的方法會將字串常值當做參數傳遞至 .NET Framework 類別庫中的建構函式或方法,並且該字串應該可以當地語系化。 |
|
CA1304 |
方法或建構函式會呼叫具有接受 System.Globalization.CultureInfo 參數之多載的成員,且方法或建構函式未呼叫採用 CultureInfo 參數的多載。 未提供 CultureInfo 或 System.IFormatProvider 物件時,多載成員所提供的預設值可能不會有您希望在所有地區設定中都有的效果。 |
|
CA1305 |
方法或建構函式所呼叫的一個或多個成員具有可接受 System.IFormatProvider 參數的多載,但該方法或建構函式並未呼叫可接受 IFormatProvider 參數的多載。 未提供 System.Globalization.CultureInfo 或 IFormatProvider 物件時,多載成員所提供的預設值可能不會有您希望在所有地區設定中都有的效果。 |
|
CA1306 |
地區設定會決定資料的文化特性特定展示項目,例如用於數值、貨幣符號和排序次序的格式。 當您建立 DataTable 或 DataSet 時,您應該明確設定地區設定。 |
|
CA1307 |
字串比較作業會使用未設定 StringComparison 參數的方法多載。 |
|
CA1308 |
字串應該標準化為大寫字母。 當一小組的字元轉換成小寫字母時,它們無法構成來回行程。 |
|
CA1309 |
非語言的字串比較作業未將 StringComparison 參數設定為 Ordinal 或 OrdinalIgnoreCase。 藉由明確地將參數設定為 StringComparison.Ordinal 或 StringComparison.OrdinalIgnoreCase,您的程式碼通常可以提升速度、更為正確,也更加可靠。 |
|
CA1400 |
公用或受保護的方法是使用 System.Runtime.InteropServices.DllImportAttribute 屬性來標記。 有可能是找不到 Unmanaged 程式庫,或是方法不符合程式庫中的函式。 |
|
CA1401 |
公用型別中公用或保護的方法具有 System.Runtime.InteropServices.DllImportAttribute 屬性 (也會由 Visual Basic 中的 Declare 關鍵字實作)。 但不得公開 (Expose) 此類方法。 |
|
CA1402 |
當多載方法會對 COM 用戶端公開 (Expose) 時,只有第一個方法多載會保留它的名稱。 後續的多載則會透過將名稱附加至底線字元 (_) 和對應於多載宣告之順序的整數,重新命名為唯一的名稱。 |
|
CA1403 |
COM 可見實值型別是使用設為 LayoutKind.Auto 的 System.Runtime.InteropServices.StructLayoutAttribute 屬性來標記。 這些型別的配置可能會在 .NET Framework 的版本之間變更,進而中斷必須有特定配置的 COM 用戶端。 |
|
CA1404 |
系統會對 Marshal.GetLastWin32Error 方法或對等 Win32 GetLastError 函式進行呼叫,而且緊接在前的呼叫並不是作業系統叫用方法。 |
|
CA1405 |
COM 可見型別會衍生自不是 COM 可見的型別。 |
|
CA1406 |
Visual Basic 6 COM 用戶端無法存取 64 位元整數。 |
|
CA1407 |
COM 不支援靜態方法。 |
|
CA1408 |
使用雙重介面 (Dual Interface) 的型別可讓用戶端繫結至特定的介面配置。 在未來版本中,若型別或任何基底型別 (Base Type) 的配置有所變更,將會中斷繫結至此介面的 COM 用戶端。 根據預設,如果未指定 ClassInterfaceAttribute 屬性,則會使用分派介面。 |
|
CA1409 |
特別標示為 COM 可見的參考型別 (Reference Type) 包含公用參數化建構函式,但不包含公用預設 (無參數) 建構函式。 COM 用戶端無法建立沒有公用預設建構函式的型別。 |
|
CA1410 |
型別會宣告使用 System.Runtime.InteropServices.ComRegisterFunctionAttribute 屬性來標記的方法,但是不會宣告使用 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 屬性來標記的方法,反之亦然。 |
|
CA1411 |
使用 System.Runtime.InteropServices.ComRegisterFunctionAttribute 屬性或 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 屬性來標記的方法為外部可見。 |
|
CA1412 |
型別是使用 System.Runtime.InteropServices.ComSourceInterfacesAttribute 屬性來標記,而且至少其中一個指定的介面不是使用設為 ComInterfaceType.InterfaceIsIDispatch 的 System.Runtime.InteropServices.InterfaceTypeAttribute 屬性來標記。 |
|
CA1413 |
COM 可見實值型別的非公用執行個體欄位對 COM 用戶端而言是可見的。 請檢閱不應該公開之資訊的欄位內容,或是會造成未預期的設計或安全性結果的欄位內容。 |
|
CA1414 |
布林資料型別在 Unmanaged 程式碼中有多種表示。 |
|
CA1415 |
此規則會尋找以 Win32 函式為目標 (具有指向 OVERLAPPED 結構參數的指標) 的作業系統叫用方法宣告,而且相對應的 Managed 參數不是指向 System.Threading.NativeOverlapped 結構的指標。 |
|
CA1500 |
執行個體方法宣告參數或區域變數,而其名稱符合宣告型別的執行個體欄位,因此導致錯誤。 |
|
CA1501 |
型別在其繼承階層架構 (Inheritance Hierarchy) 中超過四個層級的深度。 太深的巢狀型別階層架構可能會難以依循、了解和維護。 |
|
CA1502 |
這個規則會測量整個方法中線性獨立路徑的數目,此數目是由條件分支的數目與複雜度決定。 |
|
CA1504 |
執行個體欄位名稱的開頭為 "s_",或是 static (在 Visual Basic 中為 Shared) 欄位名稱的開頭為 "m_"。 |
|
CA1505 |
型別或方法的維護性指標值很低。 維護性指標很低代表型別或方法很可能會難以維護,而應該列為需要重新設計的候選目標。 |
|
CA1506 |
這個規則會測量類別的耦合,方法是計算型別或方法包含的唯一型別參考數目。 |
|
CA1600 |
請勿將處理序優先權設定為 Idle。 具有 System.Diagnostics.ProcessPriorityClass.Idle 的處理序會在應該閒置的時候佔用 CPU,因而阻礙 CPU 待命。 |
|
CA1601 |
更高頻率的週期性活動會使 CPU 始終處於忙碌狀態,並且會干擾用於關閉顯示器和硬碟的省電閒置計時器。 |
|
CA1700 |
這項規則假設名稱中包含 "reserved" 的列舉成員目前並未使用,但是在未來版本會是重新命名或移除的替代符號 (Placeholder)。 重新命名或移除成員是中斷變更。 |
|
CA1701 |
資源字串中的每個字都可依大小寫分割成語彙基元 (Token)。 連續兩個語彙基元的組合都由 Microsoft 拼字檢查程式庫進行檢查。 如果可以辨識,這個字便會產生規則違規。 |
|
CA1702 |
識別項的名稱包含多個單字,而其中至少有一個單字是大小寫不正確的複合字。 |
|
CA1703 |
資源字串包含一個或多個 Microsoft 拼字檢查程式庫無法辨識的字。 |
|
CA1704 |
外部可見識別項的名稱包含一個或多個 Microsoft 拼字檢查程式庫無法辨識的字。 |
|
CA1707 |
根據慣例,識別項名稱不包含底線 (_) 字元。 此規則會檢查命名空間、型別、成員和參數。 |
|
CA1708 |
因為以 Common Language Runtime 為目標的語言不需要區分大小寫,因此,命名空間、型別、成員和參數的識別項不能只有大小寫的不同。 |
|
CA1709 |
依照慣例,參數名稱是使用 Camel 命名法的大小寫慣例,而命名空間、型別和成員名稱則使用 Pascal 命名法的大小寫慣例。 |
|
CA1710 |
依照慣例,擴充某些基底型別或實作某些介面的型別名稱,或從這些型別衍生的型別,都具有與基底型別或介面關聯的後置字元。 |
|
CA1711 |
依照慣例,只有擴充特定基底型別或實作特定介面的型別名稱,或是從這些型別衍生的型別名稱,應以特定保留的後置字元結尾。 其他型別名稱不得使用這些保留的後置字元。 |
|
CA1712 |
因為開發工具應該提供型別資訊,所以列舉成員的名稱不能以型別名稱做為開頭。 |
|
CA1713 |
事件的名稱會以 "Before" 或 "After" 為開頭。 若要命名在特定序列 (Sequence) 中引發的相關事件,請使用現在式或過去式表示動作序列相對的位置。 |
|
CA1714 |
公用的列舉具有 System.FlagsAttribute 屬性,而且其名稱不能以 "s" 做結尾。 使用 FlagsAttribute 來標記的型別具有複數的名稱,因為這個屬性表示可以指定一個以上的值。 |
|
CA1715 |
外部可見介面的名稱沒有以大寫 "I" 開頭。 外部可見型別或方法上泛型型別參數的名稱沒有以大寫 "T" 開頭。 |
|
CA1716 |
命名空間 (Namespace) 名稱或型別名稱符合程式語言中的保留關鍵字。 命名空間和型別的識別項不應該符合語言所定義的關鍵字,而這些語言的目標為 Common Language Runtime。 |
|
CA1717 |
依照命名規範的要求,列舉的複數名稱代表可以同時指定多個列舉值。 |
|
CA1719 |
參數名稱應該要能傳達參數的意義,而成員名稱應該要能傳達成員的意義。 兩者相同屬罕見的設計。 如果將參數命名為與成員名稱相同的名稱,則不僅會不容易了解,也會讓程式庫難以使用。 |
|
CA1720 |
外部可見成員中的參數名稱包含資料型別名稱,或外部可見成員的名稱包含語言特定的資料型別名稱。 |
|
CA1721 |
公用或保護之成員的名稱是以 "Get" 開頭,否則需符合公用或保護之屬性的名稱。 「 Get" 方法和屬性應該具有能清楚區分函式的名稱。 |
|
CA1722 |
根據慣例,只有特定程式設計項目的名稱會以特定的前置字元做為開頭。 |
|
CA1724 |
型別名稱不得符合 .NET Framework Class Library 中定義的命名空間名稱。 違反此規則會降低程式庫的可用性。 |
|
CA1725 |
在覆寫階層架構中一致的參數命名方式,會增加方法覆寫的可用性。 與基底宣告中的名稱不同之衍生方法中的參數名稱,可能會造成方法為基底方法的覆寫或為方法的新多載而混淆。 |
|
CA1726 |
外部可見的識別項名稱包含有替代慣用詞彙存在的詞彙。 或者該名稱包含 "Flag" 或 "Flags" 一詞。 |
|
CA1800 |
重複轉型會降低效能,尤其是在精簡型態的反覆運算陳述式中執行轉型時。 |
|
CA1801 |
方法簽章包括不用於方法主體中的參數; |
|
CA1802 |
欄位宣告為 static 和 read-only (在 Visual Basic 中為 Shared 和 ReadOnly),並使用編譯時期能計算的值進行初始化。 因為指派給目標欄位的值可在編譯時期進行計算,所以將宣告變更為 const (在 Visual Basic 中為 Const) 欄位,其值便可於編譯時期進行計算,而不是在執行階段計算。 |
|
CA1804 |
未使用的區域變數和不必要的設定,會增加組件的大小並降低效能。 |
|
CA1806 |
已建立但從未使用新物件、已呼叫會建立並傳回新字串的方法,而新字串從未使用過,或者 COM 或 P/Invoke 方法傳回從未使用的 HRESULT 或錯誤碼。 |
|
CA1809 |
常見的效能最佳化作法是在處理器暫存器中儲存值,而非記憶體,這稱為「註冊 (Enregistering) 值」。 若要增加所有區域變數都能註冊的機率,請將區域變數的數目限制為 64。 |
|
CA1810 |
當型別宣告明確的靜態建構函式時,Just-In-Time (JIT) 編譯器會將檢查加入至型別的每個靜態方法和執行個體建構函式,確保之前已呼叫該靜態建構函式。 靜態建構函式檢查會降低效能。 |
|
CA1811 |
私用或內部 (組件層級) 成員在組件中沒有呼叫端、不會由 Common Language Runtime 叫用,而且委派也未叫用該成員。 |
|
CA1812 |
組件層級型別的執行個體不是由組件中的程式碼所建立。 |
|
CA1813 |
.NET Framework Class Library 會提供擷取自訂屬性的方法。 根據預設,這些方法會搜尋屬性繼承階層架構。 密封屬性會減少對整個繼承階層架構的搜尋,並且可以改進效能。 |
|
CA1814 |
不規則陣列是一種陣列,其元素也是陣列。 組成元素的陣列大小可以不相同,對於某些資料集而言較不會浪費空間。 |
|
CA1815 |
對於實值型別而言,Equals 的繼承實作會使用 Reflection 程式庫,並比較所有欄位的內容。 但是 Reflection 相當耗費運算資源,而且可能不需要比較每個欄位是否相等。 如果希望使用者比較或排序執行個體,或是使用執行個體做為雜湊資料表索引鍵,則您的實值型別應實作 Equals。 |
|
CA1816 |
屬於 Dispose 實作的方法不會呼叫 GC.SuppressFinalize,或不屬於 Dispose 實作的方法會呼叫 GC.SuppressFinalize,或呼叫 GC.SuppressFinalize 並傳遞非 this (在 Visual Basic 中為 Me) 的方法。 |
|
CA1819 |
即使屬性是唯讀,所傳回的陣列不會是寫入保護。 若要保持陣列為防止遭他人修改,屬性必須傳回陣列複本。 一般而言,使用者不了解呼叫這類屬性所造成的不良效能影響。 |
|
CA1820 |
使用 String.Length 屬性或 String.IsNullOrEmpty 方法比較字串,明顯地會比使用 Equals 還快。 |
|
CA1821 |
請盡可能避免使用完成項,因為追蹤物件存留期 (Lifetime) 時將會產生額外的效能負荷。 空白完成項只會增加額外負荷,而沒有任何好處。 |
|
CA1822 |
不會存取執行個體資料或不會呼叫執行個體方法的成員,可以標記為 static (在 Visual Basic 中為 Shared)。 將方法標記為 static 之後,編譯器將對這些成員發出非虛擬呼叫位置。 這麼做可以讓重視效能的程式碼獲得可觀的效能。 |
|
CA1823 |
偵測到似乎不能在組件內存取的私用欄位。 |
|
CA1824 |
NeutralResourcesLanguage 屬性 (Attribute) 會告知 ResourceManager,用來顯示組件之中性文化特性 (Culture) 資源的語言。 這可改善載入第一個資源的查詢效能,而且可以減少您的工作集。 |
|
CA1900 |
這項規則會檢查在 64 位元作業系統上封送處理至 Unmanaged 程式碼時,使用明確配置所宣告的結構是否會正確地對齊。 |
|
CA1901 |
這項規則會評估每個參數的大小和 P/Invoke 的傳回值,並且在 32 位元和 64 位元作業系統上封送處理至 Unmanaged 程式碼時驗證參數的大小是否正確。 |
|
CA1903 |
某一個成員或型別使用的是 Service Pack 中所導入的成員或型別,但是專案的目標 Framework 中卻沒有包含該成員或型別。 |
|
CA2000 |
因為可能會發生例外事件以防止執行物件的完成項,所以應在物件的所有參考都超出範圍之前,明確處置物件。 |
|
CA2001 |
成員呼叫了可能有危險或問題的方法。 |
|
CA2002 |
可以跨應用程式定義域範圍直接存取的物件,即所謂具有弱式識別的物件。 嘗試取得具有弱式識別之物件鎖定的執行緒,可以被不同應用程式定義域中具有相同物件鎖定的第二個執行緒所封鎖。 |
|
CA2003 |
Managed 執行緒已視為 Win32 執行緒。 |
|
CA2004 |
如果轉換成 SafeHandle 用法,則會移除對 GC.KeepAlive (物件) 的所有呼叫。 在這種情況下,類別應該不需要呼叫 GC.KeepAlive。 這是假設它們沒有完成項,但會根據 SafeHandle 最終處理其 OS 控制代碼。 |
|
CA2006 |
在 Managed 程式碼中使用 IntPtr,可能會有潛在的安全性和可靠性問題。 必須檢閱所有使用 IntPtr 的情況,判斷是否需要在該處使用 SafeHandle (或類似技術)。 |
|
CA2100 |
方法會使用透過字串引數所建置的字串,將 System.Data.IDbCommand.CommandText 屬性設定為方法。 這項規則假設字串引數包含使用者輸入。 從使用者輸入所建置的 SQL 命令字串很容易遭到 SQL 插入 (SQL Injection) 攻擊。 |
|
CA2101 |
平台叫用成員允許部分信任的呼叫端、具有字串參數,並且未明確封送處理字串。 這樣會造成安全性弱點。 |
|
CA2102 |
組件中不是使用 RuntimeCompatibilityAttribute 來標記或是以 RuntimeCompatibility(WrapNonExceptionThrows = false) 標記的成員包含處理 System.Exception 的 catch 區塊,同時不包含緊接其後的一般 catch 區塊。 |
|
CA2103 |
方法會使用命令式安全性,而且可能會利用只要要求正在使用中就可能變更的狀態資訊或傳回值建構權限。 請盡可能使用宣告式安全性。 |
|
CA2104 |
外部可見型別包含了可變動參考型別的外部可見唯讀欄位。 可變動型別是可以修改執行個體 (Instance) 資料的型別。 |
|
CA2105 |
當您將唯讀 (在 Visual Basic 中為 ReadOnly) 修飾詞套用至包含陣列的欄位時,欄位就不能變更為參考不同的陣列。 但是,儲存在唯讀欄位的陣列元素則可以變更。 |
|
CA2106 |
方法會判斷提示使用權限,而且不會在呼叫端上執行安全性檢查。 判斷提示安全性權限但未執行任何安全性檢查,會在您的程式碼中留下可能遭利用的安全性弱點。 |
|
CA2107 |
只有相當了解 .NET Framework 安全性的人員才能執行 PermitOnly 方法和 CodeAccessPermission.Deny 安全性動作。 而使用這些安全性動作的程式碼應該接受安全性檢閱。 |
|
CA2108 |
公用或受保護的實值型別受到資料存取或連結要求保護。 |
|
CA2109 |
偵測到公用或保護的事件處理方法。 除非有絕對的必要性,否則不應該公開 (Expose) 事件處理方法。 |
|
CA2111 |
指標不為私用、內部或唯讀。 惡意的程式碼可變更指標值,進而可能會允許存取記憶體中的任意位置,或是造成應用程式或系統失敗。 |
|
CA2112 |
公用或受保護的型別包含公用欄位,而且受到連結要求保護。 如果程式碼可存取受連結要求保護的型別執行個體,則程式碼不必滿足連結要求即可存取型別的欄位。 |
|
CA2114 |
方法不應該同時具有相同動作的方法層級和型別層級宣告式安全性。 |
|
CA2115 |
此規則所偵測的錯誤,可能是因為在 Unmanaged 程式碼仍在使用 Unmanaged 資源時,就完成 Unmanaged 資源所致。 |
|
CA2116 |
當完全信任的組件中出現 APTCA (AllowPartiallyTrustedCallersAttribute) 屬性,並且組件在不允許部分信任呼叫端的另一個組件中執行程式碼時,可能會發生安全性弱點攻擊。 |
|
CA2117 |
當完全受信任的組件中含有 APTCA,並且組件中的型別會繼承自不允許部分信任之呼叫端的型別時,就可能會產生安全性弱點。 |
|
CA2118 |
對於執行使用 COM Interop 或作業系統引動過程之 Unmanaged 程式碼的成員,SuppressUnmanagedCodeSecurityAttribute 會變更安全性系統的預設行為。 這個屬性主要是用於增加效能,不過,效能提升會伴隨顯著的安全性風險。 |
|
CA2119 |
可繼承的公用型別會提供內部 (在 Visual Basic 中為 Friend) 介面的可覆寫方法實作。 若要修正此規則的違規情形,請避免在組件外覆寫方法。 |
|
CA2120 |
這個型別有接受 System.Runtime.Serialization.SerializationInfo 物件和 System.Runtime.Serialization.StreamingContext 物件 (序列化建構函式的簽章) 的建構函式。 這個建構函式未受到安全性檢查的保護,但型別中有一個或多個規則建構函式是受到保護的。 |
|
CA2121 |
系統會在建立型別的第一個執行個體 (Instance) 或參考任何靜態成員之前呼叫靜態建構函式。 如果靜態建構函式不是私用的,則可由系統以外的程式碼呼叫。 視建構函式中執行的作業而定,這會造成非預期的行為。 |
|
CA2122 |
公用或受保護的成員具有連結要求,而且是由未執行任何安全性檢查的成員所呼叫。 連結要求只會檢查立即呼叫端的使用權限。 |
|
CA2123 |
這項規則會使方法符合它的基底方法,即另一個型別中的介面或虛擬方法,然後比較每個方法上的連結要求。 如果違反這項規則,則惡意呼叫端只需呼叫不安全的方法,就可以略過連結要求。 |
|
CA2124 |
公用或受保護的方法包含 try/finally 區塊。 finally 區塊似乎會重設安全性狀態,而且不會封入 finally 區塊中。 |
|
CA2126 |
公用 unsealed 型別是使用連結要求提供保護,並且具有可以覆寫的方法。 此型別或方法都不是使用繼承要求提供保護。 |
|
CA2127 |
關鍵程式碼不能出現在 100% 透明的組件中。 這項規則會分析 100% 透明組件中型別、欄位和方法層級的任何 SecurityCritical 附註。 |
|
CA2128 |
此規則會分析 100% 透明或混合透明/關鍵之組件中的所有方法和型別,並將 Assert 的任何宣告式或必要用法加上旗標。 |
|
CA2129 |
由 SecurityTransparentAttribute 標記的方法可呼叫標記為 SecurityCritical 的非公用成員。 此規則會分析混合透明/關鍵之組件中的所有方法和型別,而且如果從透明程式碼對非公用關鍵程式碼所做的任何呼叫未標記為 SecurityTreatAsSafe,也會將這些呼叫加上旗標。 |
|
CA2130 |
因為編譯器內嵌常數的值,所以沒有針對常數值強制透明度,因此在執行階段不需要查詢。 常數欄位應該具備安全性透明,程式碼檢閱者才不會假設透明程式碼無法存取常數。 |
|
CA2131 |
型別會參與使用 SecurityCriticalAttribute 屬性標記的型別等價或型別本身,或是型別的成員或欄位。 當任何關鍵型別包含的關鍵方法或欄位有參與型別等價時,就會針對此型別引發此規則。 當 CLR 偵測到這種型別時,它不會在執行階段使用 TypeLoadException 載入此型別。 一般而言,當使用者手動實作型別等價 (而非依賴 tlbimp 而由編譯器執行型別等價) 時,會引發此規則。 |
|
CA2132 |
Silverlight 應用程式的程式碼不能使用內含 SecurityCriticalAttribute 的型別和成員。 安全性關鍵型別和成員只能由信任的程式碼在 .NET Framework for Silverlight 類別庫中使用。 由於衍生類別中的公用或受保護建構所具有的透明度必須大於或等於其基底類別,因此應用程式中的類別不可衍生自標記為 SecurityCritical 的類別。 |
|
CA2133 |
當方法會將使用 SecurityCriticalAttribute 標記的委派繫結到透明方法,或繫結到使用 SecuritySafeCriticalAttribute 標記的方法時,就會針對此方法發出警告。 此警告也會針對將透明或安全關鍵性的委派繫結至關鍵方法的方法引發。 |
|
CA2134 |
當使用 SecurityCriticalAttribute 標記的方法覆寫透明方法,或覆寫使用 SecuritySafeCriticalAttribute 標記的方法時,就會引發此規則。 當透明或使用 SecuritySafeCriticalAttribute 來標記的方法覆寫使用 SecurityCriticalAttribute 來標記的方法時,也會引發此規則。 覆寫虛擬方法或實作介面時會套用此規則。 |
|
CA2135 |
在層級 2 安全性規則集中,LinkDemand 已被取代。 不使用 LinkDemand 在 JIT 編譯時期強制執行安全性,改為使用 SecurityCriticalAttribute 屬性來標記方法、型別和欄位。 |
|
CA2136 |
透明度屬性會從較大範圍的程式碼項目套用至較小範圍的項目。 範圍較大之程式碼項目的透明度屬性優先於第一個項目中所包含之程式碼項目的透明度屬性。 例如,使用 SecurityCriticalAttribute 屬性來標記的類別不得包含使用 SecuritySafeCriticalAttribute 屬性來標記的方法。 |
|
CA2137 |
方法包含無法驗證的程式碼,或以傳址方式傳回型別。 當安全性透明程式碼嘗試執行無法驗證的 Microsoft Intermediate Language (MISL) 時,就會引發此規則。 不過,此規則不包含完整的 IL 驗證器,並是使用啟發式來擷取多數的 MSIL 驗證違規情形。 |
|
CA2138 |
安全性透明方法會呼叫使用 SuppressUnmanagedCodeSecurityAttribute 屬性標記的方法。 |
|
CA2139 |
此規則是由任何透明並且嘗試使用 HandleProcessCorruptedStateExceptionsAttribute 屬性來處理處理序損毀例外狀況的方法所引發。 處理序損毀例外狀況是 AccessViolationException 這類例外狀況的 CLR 4.0 版例外狀況分類。 HandleProcessCorruptedStateExceptionsAttribute 屬性只能供安全性關鍵方法使用,若套用至透明方法則會被忽略。 |
|
CA2140 |
使用 SecurityCriticalAttribute 屬性來標記的程式碼項目就是安全性關鍵。 透明方法不能使用安全性關鍵項目。 如果透明型別嘗試使用安全性關鍵型別,就會引發 TypeAccessException、MethodAccessException 或 FieldAccessException。 |
|
CA2141 |
安全性透明方法會呼叫未使用 APTCA 標記之組件中的方法,或是安全性透明方法會滿足型別或方法的 LinkDemand。 |
|
CA2142 |
此規則會針對需要 LinkDemand 才能存取的透明方法引發。 安全性透明程式碼不應負責驗證作業的安全性,因此,不應要求權限。 |
|
CA2143 |
安全性透明程式碼不應負責驗證作業的安全性,因此,不應要求權限。 安全性透明程式碼應使用完整的要求做出安全性決策,而且安全關鍵程式碼不應依賴透明程式碼提出完全要求。 |
|
CA2144 |
透明程式碼的安全性檢閱不如關鍵性程式碼的安全性檢閱完整,因為透明程式碼無法執行安全性敏感動作。 透明程式碼中可能不會注意到從位元組陣列載入的組件,而該位元組陣列可能包含需要稽核之重大或更重要的安全關鍵性程式碼。 |
|
CA2145 |
以 SuppressUnmanagedCodeSecurityAttribute 屬性裝飾的方法會在任何方法呼叫它時放置隱含的 LinkDemand。 這個 LinkDemand 要求呼叫程式碼必須是安全性關鍵。 使用 SecurityCriticalAttribute 屬性來標記使用 SuppressUnmanagedCodeSecurity 的方法會使方法呼叫端的這個需求更為明顯。 |
|
CA2146 |
當衍生型別有安全性透明屬性,且該屬性的重要性不如基底型別或已實作之介面時,就會引發這個規則。 只有關鍵型別可以衍生自關鍵基底型別或實作關鍵介面,而且只有關鍵或安全關鍵型別可以衍生自安全關鍵基底型別或實作安全關鍵介面。 |
|
CA2147 |
標記為 SecurityTransparentAttribute 的程式碼並未具備足夠的使用權限可以進行判斷提示 (Assert)。 |
|
CA2149 |
在任何直接呼叫進入機器碼的透明方法上 (例如,透過 P/Invoke),都會引發此規則。 違反此規則會導致層級 2 透明度模型出現 MethodAccessException,而在層級 1 透明度模型會出現對 UnmanagedCode 的完整要求。 |
|
CA2200 |
例外狀況遭到重新擲回,而且已在 throw 陳述式中明確指定此例外狀況。 如果例外狀況是透過在陳述式中指定例外狀況而重新擲回,則會遺失在擲回例外狀況之原始方法和目前方法之間呼叫的方法清單。 |
|
CA2201 |
這將使原始錯誤變得難以偵測及偵錯。 |
|
CA2202 |
方法實作包含程式碼路徑,可在相同物件上造成多個 System.IDisposable.Dispose 呼叫或 Dispose 對等用法 (例如,部分型別上的 Close() 方法)。 |
|
CA2204 |
方法主體中的常值 (Literal) 字串包含一個或多個 Microsoft 拼字檢查程式庫無法辨識的字。 |
|
CA2205 |
已定義作業系統叫用方法,而且具有同等功能的方法位於 .NET Framework Class Library 中。 |
|
CA2207 |
實值型別會宣告明確的靜態建構函式。 若要修正此規則的違規情形,請在宣告所有靜態資料時將靜態資料初始化,並移除靜態建構函式。 |
|
CA2208 |
對例外狀況型別為 (或衍生自) ArgumentException 的預設 (無參數) 建構函式進行呼叫,或將錯誤的字串引數傳遞至例外狀況型別為 (或衍生自) ArgumentException 的參數化建構函式。 |
|
CA2210 |
強式名稱可避免用戶端在不知情的狀況下,載入已遭他人修改的組件。 除了極少數的案例以外,您都應該避免部署沒有強式名稱的組件。 如果您共用或散發未正確簽署的組件,表示這個組件或許已遭他人修改,Common Language Runtime 可能不會載入組件,或是使用者可能必須停用電腦上的驗證作業。 |
|
CA2211 |
既非常數,亦非唯讀的靜態欄位不是安全執行緒。 必須小心控制對這類欄位的存取,而且需要進階的程式設計技巧來同步處理對類別物件的存取。 |
|
CA2212 |
型別中繼承自 System.EnterpriseServices.ServicedComponent 的方法是使用 System.Web.Services.WebMethodAttribute 來標記。 因為 WebMethodAttribute 和 ServicedComponent 方法具有衝突的內容和交易流程的行為及需求,所以方法的行為在某些情節中會是不正確的。 |
|
CA2213 |
實作 System.IDisposable 的型別宣告了也實作 IDisposable 之型別的欄位。 宣告型別的 Dispose 方法不會呼叫欄位的 Dispose 方法。 |
|
CA2214 |
當建構函式呼叫虛擬方法時,叫用此方法之執行個體的建構函式可能尚未執行。 |
|
CA2215 |
如果型別會繼承自可處置的型別,則必須從本身的 Dispose 方法呼叫基底型別的 Dispose 方法。 |
|
CA2216 |
實作 System.IDisposable 且具有建議 Unmanaged 資源用法之欄位的型別,未實作如 Object.Finalize 所述的完成項。 |
|
CA2217 |
從外部可見的列舉會使用 FlagsAttribute 來標記,並且有一個或多個不是二的次方,或組合列舉上其他定義值之次方的值。 |
|
CA2218 |
GetHashCode 會依據目前執行個體傳回值,適用於雜湊演算法和資料結構,如雜湊資料表。 兩個型別相同且相等的物件必須傳回相同的雜湊程式碼。 |
|
CA2219 |
在 finally 或 fault 子句中引發例外狀況時,新的例外狀況會隱藏作用中的例外狀況。 在 filter 子句中引發例外狀況時,執行階段會以無訊息模式攔截例外狀況。 這將使原始錯誤變得難以偵測及偵錯。 |
|
CA2220 |
最終化必須透過繼承階層架構 (Inheritance Hierarchy) 進行傳播。 若要確保這一點,則型別必須在它們自己的 Finalize 方法中呼叫基底類別 Finalize 方法。 |
|
CA2221 |
完成項必須使用系列存取修飾詞 (Modifier)。 |
|
CA2222 |
您不得變更繼承成員的存取修飾詞 (Modifier)。 將繼承成員變更為私用不會防止呼叫端存取方法的基底類別 (Base Class) 實作。 |
|
CA2223 |
雖然 Common Language Runtime 允許使用傳回型別區分其他部分都相同的成員,但這個功能不屬於 Common Language Specification,也不是 .NET 程式語言共通的功能。 |
|
CA2224 |
公用型別會實作等號比較運算子,但不會覆寫 Object.Equals。 |
|
CA2225 |
偵測到運算子多載,且找不到預期的具名替代方法。 具名的替代成員會提供與運算子相同的功能存取,並且可供以不支援多載運算子 (Overloaded Operator) 的語言設計程式的開發人員使用。 |
|
CA2226 |
型別實作等號比較運算子或不等比較運算子,但未實作相反的運算子。 |
|
CA2227 |
可寫入的集合屬性允許使用者以不同的集合來取代該集合。 唯讀屬性會從取代過程中停止集合,但是仍然允許設定個別成員。 |
|
CA2228 |
使用 .NET Framework 發行前版本建置的資源檔,可能無法讓 .NET Framework 的支援版本使用。 |
|
CA2229 |
若要修正此規則的違規情形,請實作序列化建構函式。 針對密封類別,讓建構函式成為 private,否則為 protected。 |
|
CA2230 |
公用或保護的型別包含使用 VarArgs 呼叫慣例之公用或保護的方法,而不是 params 關鍵字。 |
|
CA2231 |
實值型別會覆寫 Object.Equals,但不會實作等號比較運算子。 |
|
CA2232 |
STAThreadAttribute 表示應用程式的 COM 執行緒模型為單一執行緒 Apartment。 在使用 Windows Form 的任何應用程式之進入點上必須有此屬性。如果省略的話,Windows 元件就無法正常運作。 |
|
CA2233 |
您不應該在沒有先驗證運算元的情況下,執行算術運算。 這樣做可確保運算結果不會超過所包含之資料型別的可能值範圍。 |
|
CA2234 |
呼叫字串參數名稱包含 "uri"、"URI"、"urn"、"URN"、"url" 或 "URL", 而且此方法的宣告型別會包含具有 System.Uri 參數的對應方法多載。 |
|
CA2235 |
可序列化之型別中所宣告之型別的執行個體 (Instance) 欄位是不可序列化的。 |
|
CA2236 |
若要修正此規則的違規情形,請從對應的衍生型別方法或建構函式,呼叫基底型別 GetObjectData 方法或序列化建構函式。 |
|
CA2237 |
若要讓 Common Language Runtime 辨認為可序列化,即使型別透過 ISerializable 介面的實作使用自訂序列化常式,型別仍必須使用 SerializableAttribute 屬性來標記。 |
|
CA2238 |
處理序列化事件的方法沒有正確的簽章、傳回型別或可視性。 |
|
CA2239 |
型別具有使用 System.Runtime.Serialization.OptionalFieldAttribute 屬性來標記的欄位,而且型別不提供還原序列化事件處理方法。 |
|
CA2240 |
若要修正此規則的違規情形,請將 GetObjectData 方法設為可見和可覆寫的,並確定所有執行個體欄位都加入序列化處理序中,或已使用 NonSerializedAttribute 屬性來明確標記。 |
|
CA2241 |
傳遞至 System.String.Format 的格式引數不包含對應至每個物件引數的格式項目,反之亦然。 |
|
CA2242 |
此運算式針對 Single.Nan 或 Double.Nan 測試值。 使用 Single.IsNan(Single) 或 Double.IsNan(Double) 即可測試值。 |
|
CA2243 |
屬性的字串常值參數未針對 URL、GUID 或版本進行正確剖析。 |