Condividi tramite


Set di regole base di correttezza per codice gestito

Il set di regole di correttezza di base è incentrato sugli errori logici e sugli errori comuni nell'uso delle API del framework. Le regole di correttezza di base includono le regole nel set di regole consigliate gestite.

Nella tabella seguente vengono descritte tutte le regole del set di regole di correttezza di base di Microsoft.

Regola Descrizione
CA1001 I tipi proprietari di campi Disposable devono essere Disposable
CA1009 Dichiarare correttamente i gestori eventi
CA1016 Contrassegnare gli assembly con AssemblyVersionAttribute
CA1033 I metodi di interfaccia devono essere richiamabili dai tipi figlio
CA1049 I tipi delle risorse native devono essere disposable
CA1060 Spostare P/Invoke nella classe NativeMethods
CA1061 Non nascondere i metodi di una classe base
CA1063 Implementare IDisposable correttamente
CA1065 Non generare eccezioni in posizioni non previste
CA1301 Evitare tasti di scelta rapida duplicati
CA1400 I punti di ingresso P/Invoke devono esistere
CA1401 I P/Invoke non devono essere visibili
CA1403 I tipi layout automatici non devono essere visibili a COM
CA1404 Chiamare GetLastError immediatamente dopo P/Invoke
CA1405 I tipi di base del tipo visibile a COM devono essere visibili a COM
CA1410 I metodi di registrazione COM devono corrispondere
CA1415 Dichiarare correttamente i P/Invoke
CA1821 Rimuovere i finalizzatori vuoti
CA1900 I campi dei tipi di valore devono essere portabili
CA1901 Le dichiarazioni P/Invoke devono essere portabili
CA2002 Non bloccare oggetti con identità debole
CA2100 Controllare la vulnerabilità della sicurezza nelle query SQL
CA2101 Specificare il marshalling per gli argomenti di stringa P/Invoke
CA2108 Controllare la sicurezza dichiarativa sui tipi di valori
CA2111 I puntatori non devono essere visibili
CA2112 I tipi protetti non devono esporre campi
CA2114 La sicurezza del metodo deve essere un superset del tipo
CA2116 I metodi APTCA devono chiamare solo metodi APTCA
CA2117 I tipi APTCA devono estendere solo tipi di base APTCA
CA2122 Non esporre in modo indiretto metodi con richieste di collegamento
CA2123 Le richieste di collegamento negli override devono essere identiche a quelle nei metodi di base
CA2124 Eseguire il wrapping delle clausole finally vulnerabili in un try esterno
CA2126 Per le richieste di collegamento dei tipi sono necessarie richieste di ereditarietà
CA2131 I tipi SecurityCritical possono non partecipare all'equivalenza del tipo
CA2132 I costruttori predefiniti devono essere Critical almeno come i costruttori predefiniti del tipo base
CA2133 I delegati devono essere associati ai metodi con trasparenza consistente
CA2134 I metodi devono mantenere trasparenza consistente durante l'override dei metodi base
CA2137 I metodi Transparent devono contenere solo IL verificabile
CA2138 I metodi Transparent non devono chiamare i metodi con l'attributo SuppressUnmanagedCodeSecurity
CA2140 Il codice Transparent non deve far riferimento a elementi SecurityCritical
CA2141 I metodi Transparent non devono soddisfare LinkDemands
CA2146 I tipi devono essere Critical almeno come le interfacce e i tipi base relativi
CA2147 I metodi Transparent non possono usare asserzioni di sicurezza
CA2149 I metodi Transparent non devono effettuare chiamate nel codice nativo
CA2200 Eseguire il rethrow per mantenere i dettagli dello stack
CA2202 Non eliminare gli oggetti più volte
CA2207 Inizializzare i campi statici dei tipi di valore inline
CA2212 Non contrassegnare componenti serviti con WebMethod
CA2213 I campi eliminabili devono essere eliminati
CA2214 Non chiamare metodi sottoponibili a override nei costruttori
CA2216 I tipi eliminabili devono dichiarare un finalizzatore
CA2220 I finalizzatori devono chiamare il finalizzatore della classe di base
CA2229 Implementare costruttori di serializzazione
CA2231 Eseguire l'overload dell'operatore "uguale a" all'override di ValueType.Equals
CA2232 Contrassegnare i punti di ingresso del Windows Form con STAThread
CA2235 Contrassegnare tutti i campi non serializzabili
CA2236 Chiamare metodi della classe di base su tipi ISerializable
CA2237 Contrassegnare i tipi ISerializable con SerializableAttribute
CA2238 Implementare correttamente i metodi di serializzazione
CA2240 Implementare ISerializable in modo corretto
CA2241 Specificare argomenti corretti ai metodi di formattazione
CA2242 Testare i valori NaN in modo corretto
CA1008 Le enumerazioni devono avere valore zero
CA1013 Eseguire l'overload dell'operatore "uguale a" all'overload degli operatori di addizione e sottrazione
CA1303 Non passare valori letterali come parametri localizzati
CA1308 Normalizzare le stringhe in lettere maiuscole
CA1806 Non ignorare i risultati dei metodi
CA1816 Chiamare GC.SuppressFinalize correttamente
CA1819 Le proprietà non devono restituire matrici
CA1820 Testare le stringhe vuote usando la lunghezza di stringa
CA1903 Usare solo API della versione di .NET Framework di destinazione
CA2004 Rimuovere le chiamate a GC.KeepAlive
CA2006 Usare SafeHandle per incapsulare le risorse native
CA2102 Individuare le eccezioni non CLSCompliant nei gestori generali
CA2104 Non dichiarare tipi di riferimento modificabili in sola lettura
CA2105 I campi di matrici non devono essere di sola lettura
CA2106 Asserzioni protette
CA2115 Chiamare GC.KeepAlive durante l'uso di risorse native
CA2119 Impostare come sealed i metodi che soddisfano interfacce private
CA2120 Proteggere i costruttori di serializzazione
CA2121 I costruttori statici devono essere privati
CA2130 Le costanti SecurityCritical devono essere Transparent
CA2205 Usare equivalenti gestiti dell'API Win32
CA2215 I metodi Dispose devono chiamare Dispose della classe di base
CA2221 I finalizzatori devono essere protetti
CA2222 Non diminuire la visibilità di membri ereditati
CA2223 La differenza tra membri non deve limitarsi al tipo restituito
CA2224 Eseguire l'override di Equals all'overload dell'operatore "uguale a"
CA2226 Gli operatori devono avere overload simmetrici
CA2227 Le proprietà di raccolte devono essere in sola lettura
CA2239 Specificare metodi di deserializzazione per i campi facoltativi