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 |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per