Condividi tramite


Set di regole base di correttezza per codice gestito

Il set di regole base di correttezza riguarda gli errori comuni e di logica che si commettono utilizzando le API del framework.Il set di regole base di correttezza include le regole contenute nel set Regole minime consigliate.Per ulteriori informazioni, vedere Set di regole consigliate gestite per codice gestito Includere questo set di regole per estendere l'elenco degli avvisi segnalati dalle regole minime consigliate.

Nella tabella seguente vengono descritte tutte le regole del set di regole base di correttezza 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 i 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 l'eventuale vulnerabilità di sicurezza delle 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 non possono partecipare all'equivalenza del tipo

CA2132

I costruttori predefiniti devono essere Critical almeno come i costruttori predefiniti del tipo base

CA2133

Delegati devono essere associati ai metodi con trasparenza consistente

CA2134

I metodi devono conservare 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 i LinkDemand

CA2146

I tipi devono essere Critical almeno come le interfacce e i tipi base relativi

CA2147

I metodi Transparent non possono utilizzare asserzioni di sicurezza

CA2149

I metodi Transparent non devono effettuare chiamate nel codice nativo

CA2200

Eseguire il rethrow per conservare i dettagli dello stack

CA2202

Non eliminare oggetti più volte

CA2207

Inizializzare i campi statici dei tipi di valore inline

CA2212

Non contrassegnare componenti serviti con WebMethod

CA2213

I campi Disposable devono essere eliminati

CA2214

Non chiamare metodi sottoponibili a override nei costruttori

CA2216

I tipi Disposable devono dichiarare un finalizzatore

CA2220

I finalizzatori devono chiamare il finalizzatore della classe 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 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

Fornire argomenti corretti ai metodi di formattazione

CA2242

Testare i valori NaN in modo corretto

CA1008

Gli enum 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 utilizzando la lunghezza di stringa

CA1903

Utilizzare solo API della versione di .NET Framework di destinazione

CA2004

Rimuovere le chiamate a GC.KeepAlive

CA2006

Utilizzare 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 in sola lettura

CA2106

Asserzioni protette

CA2115

Chiamare GC.KeepAlive durante l'utilizzo 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

Utilizzare equivalenti gestiti dell'API Win32

CA2215

I metodi Dispose devono chiamare il metodo Dispose della classe 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'override dell'operatore

CA2226

Gli operatori devono avere overload simmetrici

CA2227

Le proprietà di raccolta devono essere in sola lettura

CA2239

Fornire metodi di deserializzazione per i campi facoltativi