Condividi tramite


Set di regole Regole estese delle linee guida di progettazione per codice gestito

Il set di regole Regole estese delle linee guida di progettazione Microsoft amplia le regole base delle linee guida di progettazione per aumentare i problemi di usabilità e manutenibilità segnalati.Particolare attenzione è rivolta alle linee guida di denominazione.È necessario considerare di includere questo set di regole se il progetto include codice di libreria o se si desidera applicare gli standard più elevati per la scrittura di codice di facile manutenibilità.

Le Regole estese delle linee guida di progettazione Microsoft includono tutte le Regole base delle linee guida di progettazione Microsoft.Le Regole base delle linee guida di progettazione Microsoft includono tutte le Regole minime consigliate Microsoft.Per ulteriori informazioni, vedere Set di regole Regole base delle linee guida di progettazione per codice gestito e Set di regole consigliate gestite per codice gestito.

Nella tabella seguente vengono descritte tutte le regole del set Regole estese delle linee guida di progettazione 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

CA1000

Non dichiarare membri statici su tipi generici

CA1002

Non esporre elenchi generici

CA1003

Utilizzare istanze di gestori eventi generici

CA1004

I metodi generici devono fornire parametri di tipo

CA1005

Evitare un uso eccessivo di parametri nei tipi generici

CA1006

Non annidare tipi generici nelle firme dei membri

CA1007

Utilizzare generics dove appropriato

CA1008

Gli enum devono avere valore zero

CA1010

Le raccolte devono implementare un'interfaccia generica

CA1011

Considerare il passaggio di tipi di base come parametri

CA1012

I tipi astratti non devono avere costruttori

CA1013

Eseguire l'overload dell'operatore "uguale a" all'overload degli operatori di addizione e sottrazione

CA1014

Contrassegnare gli assembly con CLSCompliantAttribute

CA1017

Contrassegnare gli assembly con ComVisibleAttribute

CA1018

Contrassegnare gli attributi con AttributeUsageAttribute

CA1019

Definire le funzioni di accesso per gli argomenti degli attributi

CA1023

Gli indicizzatori non devono essere multidimensionali

CA1024

Utilizzare proprietà dove appropriato

CA1025

Sostituire gli argomenti ripetitivi con una matrice di parametri

CA1026

Evitare l'utilizzo di parametri predefiniti

CA1027

Contrassegnare le enumerazioni con FlagsAttribute

CA1028

L'archiviazione di enum deve essere Int32

CA1030

Utilizzare eventi dove appropriato

CA1031

Non rilevare tipi di eccezione generali

CA1032

Implementare costruttori di eccezioni standard

CA1034

I tipi annidati non devono essere visibili

CA1035

Le implementazioni di ICollection hanno membri fortemente tipizzati

CA1036

Eseguire l'override di metodi su tipi confrontabili

CA1038

Gli enumeratori devono essere fortemente tipizzati

CA1039

Gli elenchi sono fortemente tipizzati

CA1041

Fornire una proprietà ObsoleteAttribute.Message

CA1043

Utilizzare argomento di tipo stringa o integrale per gli indicizzatori

CA1044

Le proprietà non devono essere in sola scrittura

CA1046

Non eseguire l'overload dell'operatore "uguale a" per i tipi di riferimento

CA1047

Non dichiarare membri protetti nei tipi sealed

CA1048

Non dichiarare membri virtuali nei tipi sealed

CA1050

Dichiarare i tipi negli spazi dei nomi

CA1051

Non dichiarare campi di istanza visibili

CA1052

I tipi che contengono membri statici devono essere sealed

CA1053

I tipi che contengono membri statici non devono avere costruttori

CA1054

I parametri URI non devono essere stringhe

CA1055

I valori restituiti URI non devono essere stringhe

CA1056

Le proprietà URI non devono essere stringhe

CA1057

Gli overload URI di stringhe chiamano gli overload System.Uri

CA1058

I tipi non devono estendere tipi di base specifici

CA1059

I membri non devono esporre tipi concreti specifici

CA1064

Le eccezioni devono essere pubbliche

CA1500

I nomi delle variabili non devono corrispondere ai nomi dei campi

CA1502

Evitare complessità eccessiva

CA1708

Gli identificatori non si devono differenziare solo in base alle maiuscole e minuscole

CA1716

Gli identificatori non devono corrispondere a parole chiave

CA1801

Rivedere i parametri inutilizzati

CA1804

Rimuovere locali non utilizzati

CA1809

Evitare un numero eccessivo di variabili locali

CA1810

Inizializzare i campi statici del tipo di riferimento inline

CA1811

Evitare codice privato che non viene richiamato

CA1812

Evitare classi interne prive di istanze

CA1813

Evitare attributi non sealed

CA1814

Preferire matrici di matrici rispetto a matrici multidimensionali

CA1815

Eseguire l'override di Equals e dell'operatore "uguale a" sui tipi di valore

CA1819

Le proprietà non devono restituire matrici

CA1820

Testare le stringhe vuote utilizzando la lunghezza di stringa

CA1822

Contrassegnare i membri come statici

CA1823

Evitare campi privati non utilizzati

CA2201

Non generare tipi di eccezione riservati

CA2205

Utilizzare equivalenti gestiti dall'API Win32

CA2208

Creare istanze di eccezioni di argomento correttamente

CA2211

I campi non costanti non devono essere visibili

CA2217

Non contrassegnare le enumerazioni con FlagsAttribute

CA2219

Non generare eccezioni in clausole di eccezione

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

CA2225

Gli overload degli operatori hanno alternative con nome

CA2226

Gli operatori devono avere overload simmetrici

CA2227

Le proprietà di raccolta devono essere in sola lettura

CA2230

Utilizzare params per argomenti variabili

CA2234

Passare oggetti System.Uri invece di stringhe

CA2239

Fornire metodi di deserializzazione per i campi facoltativi

CA1020

Evitare l'utilizzo di spazi dei nomi con un numero ridotto di tipi

CA1021

Evitare parametri out

CA1040

Evitare l'utilizzo di interfacce vuote

CA1045

Non passare i tipi per riferimento

CA1062

Convalidare gli argomenti di metodi pubblici

CA1501

Evitare ereditarietà eccessiva

CA1504

Controllare i nomi dei campi fuorvianti

CA1505

Evitare codice non manutenibile

CA1506

Evitare un numero eccessivo di accoppiamenti di classi

CA1700

Non denominare 'Reserved' i valori di enumerazione

CA1701

Le parole composte di una stringa di risorsa devono essere digitate correttamente con distinzione tra maiuscole e minuscole

CA1702

Le parole composte devono essere digitate correttamente con distinzione tra maiuscole e minuscole

CA1703

Le stringhe di risorsa devono essere digitate correttamente

CA1704

Gli identificatori devono essere digitati correttamente

CA1707

Gli identificatori non devono contenere caratteri di sottolineatura

CA1709

Gli identificatori devono essere digitati correttamente con distinzione tra maiuscole e minuscole

CA1710

Gli identificatori devono contenere il suffisso corretto

CA1711

Gli identificatori non devono contenere un suffisso non corretto

CA1712

Non utilizzare nomi di tipo come prefisso nei valori di enumerazione

CA1713

Non utilizzare il prefisso Before o After negli eventi

CA1714

Le enumerazioni con Flags devono avere nomi plurali

CA1715

Gli identificatori devono contenere il prefisso corretto

CA1717

Solo le enumerazioni con FlagsAttribute devono avere nomi plurali

CA1719

I nomi dei parametri non devono corrispondere ai nomi dei membri

CA1720

Gli identificatori non devono contenere nomi di tipo

CA1721

I nomi delle proprietà non devono corrispondere ai metodi get

CA1722

Gli identificatori non devono contenere il prefisso non corretto

CA1724

I nomi dei tipi non devono corrispondere agli spazi dei nomi

CA1725

I nomi dei parametri devono corrispondere alla dichiarazione di base

CA1726

Utilizzare termini preferiti

CA2204

I valori letterali devono essere digitati in modo corretto