Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le regole di utilizzo supportano l'uso corretto di .NET.
In questa sezione
| Regola | Descrizione |
|---|---|
| CA1801: Rivedere i parametri non usati | Una firma di metodo include un parametro non utilizzato nel corpo del metodo. |
| CA1816: Chiamare correttamente GC.SuppressFinalize | Un metodo che è un'implementazione di Dispose non chiama GC.SuppressFinalize; o un metodo che non è un'implementazione di Dispose chiamate GC.SuppressFinalize; o un metodo chiama GC.SuppressFinalize e passa qualcosa di diverso da this (Me in Visual Basic). |
| CA2200: Eseguire il rethrow per mantenere i dettagli dello stack | Viene generata di nuovo un'eccezione, specificata in modo esplicito nell'istruzione throw. Se un'eccezione viene rilanciata specificando l'eccezione nell'istruzione throw, la sequenza delle chiamate ai metodi tra il metodo originale che ha generato l'eccezione e il metodo corrente viene persa. |
| CA2201: Non generare tipi di eccezione riservati | In questo modo l'errore originale risulta difficile da rilevare ed eseguire il debug. |
| CA2207: Inizializzare in linea i campi statici dei tipi di valore | Un tipo di valore dichiara un costruttore statico esplicito. Per correggere una violazione di questa regola, inizializzare tutti i dati statici quando vengono dichiarati e rimuovere il costruttore statico. |
| CA2208: Creare correttamente istanze di eccezioni di argomento | Viene effettuata una chiamata al costruttore predefinito (senza parametri) di un tipo di eccezione che corrisponde a o deriva da ArgumentException oppure viene passato un argomento stringa non corretto a un costruttore con parametri di un tipo di eccezione che corrisponde a o deriva da ArgumentException. |
| CA2211: I campi non costanti non devono essere visibili | I campi statici che non sono costanti o di sola lettura non sono thread-safe. L'accesso a tale campo deve essere controllato attentamente e richiede tecniche di programmazione avanzate per sincronizzare l'accesso all'oggetto classe. |
| CA2213: I campi eliminabili devono essere smaltiti | Un tipo che implementa System.IDisposable dichiara campi di tipo che implementano anch'essi IDisposable. Il metodo Dispose del campo non viene chiamato dal metodo Dispose del tipo dichiarante. |
| CA2214: Non chiamare metodi sottoponibili a override nei costruttori | Quando un costruttore chiama un metodo virtuale, è possibile che il costruttore dell'istanza che lo richiama non sia stato eseguito. |
| CA2215: I metodi Dispose devono chiamare il metodo Dispose della classe base | Se un tipo eredita da un tipo eliminabile, deve chiamare il Dispose metodo del tipo di base dal proprio Dispose metodo. |
| CA2216: I tipi Disposable devono dichiarare un finalizzatore | Un tipo che implementa System.IDisposablee include campi che suggeriscono l'uso di risorse non gestite, non implementa un finalizzatore come descritto da Object.Finalize. |
| CA2217: Non contrassegnare le enumerazioni con FlagsAttribute | Un'enumerazione visibile esternamente è contrassegnata con FlagsAttributee ha uno o più valori che non sono poteri di due o una combinazione degli altri valori definiti nell'enumerazione. |
| CA2218: Eseguire l'override di GetHashCode quando si esegue l'override di Equals | Un tipo pubblico esegue l'override di System.Object.Equals, ma non esegue l'override di System.Object.GetHashCode. |
| CA2219: Non generare eccezioni in clausole di eccezione | Quando un'eccezione viene generata in una clausola finally o in una clausola fault, la nuova eccezione nasconde l'eccezione attiva. Quando viene generata un'eccezione in una clausola di filtro, il runtime rileva automaticamente l'eccezione. In questo modo l'errore originale risulta difficile da rilevare ed eseguire il debug. |
| CA2224: Eseguire l'override di Equals quando si esegue l'overload dell'operatore di uguaglianza | Un tipo pubblico implementa l'operatore di uguaglianza ma non esegue l'override di System.Object.Equals. |
| CA2225: I sovraccarichi degli operatori dispongono di alternative denominate | È stato rilevato un overload di operatore e il metodo alternativo denominato previsto non è stato trovato. Il membro alternativo con nome consente di accedere alle stesse funzionalità dell'operatore ed è disponibile per gli sviluppatori che programmano in linguaggi che non supportano operatori sovraccaricati. |
| CA2226: Gli operatori devono avere sovraccarichi simmetrici | Un tipo implementa l'operatore di uguaglianza o disuguaglianza e non implementa l'operatore opposto. |
| CA2227: Le proprietà di raccolta devono essere di sola lettura | Una proprietà di raccolta scrivibile consente a un utente di sostituire la raccolta con una raccolta diversa. Una proprietà di sola lettura impedisce che la raccolta venga sostituita, ma consente comunque di impostare i singoli elementi. |
| CA2229: Implementare costruttori di serializzazione | Per correggere una violazione di questa regola, implementare il costruttore di serializzazione. Per una classe sigillata, dichiarare il costruttore come privato; altrimenti, dichiararlo protetto. |
| CA2231: Sovraccaricare l'operatore di uguaglianza quando si esegue l'override di ValueType.Equals | Un tipo di valore esegue l'override Object.Equals ma non implementa l'operatore di uguaglianza. |
| CA2234: Passare oggetti System.Uri invece di stringhe | Viene effettuata una chiamata a un metodo che dispone di un parametro di stringa il cui nome contiene "uri", "URI", "urn", "URN", "url" o "URL". Il tipo che dichiara il metodo contiene un overload corrispondente con un parametro System.Uri. |
| CA2235: Contrassegnare tutti i campi non serializzabili | Un campo di istanza di un tipo non serializzabile viene dichiarato in un tipo serializzabile. |
| CA2237: Contrassegnare i tipi ISerializable con l'attributo SerializableAttribute | Per essere riconosciuto da Common Language Runtime come serializzabile, i tipi devono essere contrassegnati con l'attributo SerializableAttribute anche se il tipo usa una routine di serializzazione personalizzata tramite l'implementazione dell'interfaccia ISerializable . |
| CA2241: Specificare argomenti corretti ai metodi di formattazione | L'argomento formato passato a String.Format non contiene un elemento di formato corrispondente a ogni argomento oggetto o viceversa. |
| CA2242: Testare i valori NaN in modo corretto | Questa espressione verifica un valore su Single.Nan o Double.Nan. Usare Single.IsNan(Single) o Double.IsNan(Double) per testare il valore. |
| CA2243: I valori letterali di stringa degli attributi devono essere analizzati correttamente | Il parametro letterale stringa di un attributo non analizza correttamente un URL, un GUID o una versione. |
| CA2244: Non duplicare le inizializzazioni degli elementi indicizzati | Un inizializzatore di oggetto ha più di un inizializzatore di elementi indicizzati con lo stesso indice costante. Tutti gli inizializzatori tranne l'ultimo sono ridondanti. |
| CA2245: Non assegnare una proprietà a se stessa | Una proprietà è stata assegnata accidentalmente a sé stessa. |
| CA2246: Non assegnare un simbolo e il relativo membro nella stessa istruzione | Non è consigliabile assegnare un simbolo e il relativo membro, ovvero un campo o una proprietà, nella stessa istruzione. Non è chiaro se in questa istruzione l'accesso al membro debba utilizzare il vecchio valore del simbolo prima dell'assegnazione oppure il nuovo valore risultante dall'assegnazione. |
| CA2247: l'argomento passato al costruttore TaskCompletionSource deve essere l'enumerazione TaskCreationOptions anziché l'enumerazione TaskContinuationOptions | TaskCompletionSource dispone di costruttori che accettano TaskCreationOptions che controllano il Task sottostante e di costruttori che accettano uno stato oggetto archiviato nel Task. Se si passa accidentalmente un oggetto TaskContinuationOptions anziché un oggetto TaskCreationOptions, la chiamata interpreta le opzioni come stato. |
| CA2248: Specificare l'argomento 'enum' corretto per 'Enum.HasFlag' | Il tipo enum passato come argomento nella chiamata al metodo HasFlag è diverso dal tipo enum chiamante. |
| CA2249: prendere in considerazione l'uso di String.Contains invece di String.IndexOf | Le chiamate a string.IndexOf il cui risultato viene usato per verificare la presenza o l'assenza di una sottostringa possono essere sostituite da string.Contains. |
CA2250: Usare ThrowIfCancellationRequested |
ThrowIfCancellationRequested controlla automaticamente se il token sia stato annullato e genera OperationCanceledException in tal caso. |
CA2251: Usare String.Equals invece di String.Compare |
È sia più chiaro che probabilmente più veloce da usare String.Equals invece di confrontare il risultato di String.Compare a zero. |
| CA2252: Acconsentire esplicitamente alle funzionalità di anteprima | Acconsentire esplicitamente alle funzionalità di anteprima prima di usare le API di anteprima. |
| CA2253: i segnaposto con nome non devono essere valori numerici | I segnaposto denominati nel modello di messaggio di logging non devono essere composti esclusivamente da caratteri numerici. |
| CA2254: Il modello deve essere un'espressione statica | Il modello di messaggio di registrazione non deve variare tra le chiamate. |
CA2255: L'attributo ModuleInitializer non deve essere usato nelle librerie |
Gli inizializzatori di modulo devono essere usati dal codice dell'applicazione per assicurarsi che i componenti di un'applicazione vengano inizializzati prima che il codice dell'applicazione inizi l'esecuzione. |
| CA2256: tutti i membri dichiarati nelle interfacce padre devono avere un'implementazione in un'interfaccia con attributi DynamicInterfaceCastableImplementation | I tipi a cui è attribuito DynamicInterfaceCastableImplementationAttribute fungono da implementazione di interfaccia per un tipo che implementa il tipo IDynamicInterfaceCastable. Di conseguenza, deve fornire un'implementazione di tutti i membri definiti nelle interfacce ereditate, perché il tipo che implementa IDynamicInterfaceCastable non li fornirà altrimenti. |
| CA2257: i membri definiti in un'interfaccia con 'DynamicInterfaceCastableImplementationAttribute' devono essere 'statici' | Poiché un tipo che implementa IDynamicInterfaceCastable potrebbe non implementare un'interfaccia dinamica nei metadati, è probabile che le chiamate a un membro dell'interfaccia dell'istanza che non sia un'implementazione esplicita definita in questo tipo non riescano in fase di esecuzione. Contrassegnare i nuovi membri static dell'interfaccia per evitare errori di runtime. |
| CA2258: La fornitura di un'interfaccia 'DynamicInterfaceCastableImplementation' in Visual Basic non è supportata | Per fornire un'interfaccia con attributo DynamicInterfaceCastableImplementationAttribute funzionale, è necessaria la funzionalità Membri predefiniti dell'interfaccia, che non è supportata in Visual Basic. |
CA2259: Assicurarsi che ThreadStatic venga usato solo con i campi statici |
ThreadStaticAttribute influisce solo sui static campi (Shared in Visual Basic). Se applicato ai campi dell'istanza, l'attributo non ha alcun impatto sul comportamento. |
| CA2260: Implementare correttamente interfacce matematiche generiche | Le interfacce matematiche generiche richiedono che il tipo derivato stesso venga usato per il parametro di tipo ricorrente. |
CA2261: Non usare ConfigureAwaitOptions.SuppressThrowing con Task<TResult> |
L'opzione ConfigureAwaitOptions.SuppressThrowing non è supportata dall'oggetto generico Task<TResult>, perché potrebbe causare la restituzione di un oggetto non valido TResult. |
CA2262: Impostare MaxResponseHeadersLength correttamente |
Assicurarsi che il MaxResponseHeadersLength valore sia specificato correttamente. Questo valore viene misurato in kilobyte. |
| CA2263: Preferire il sovraccarico generico quando il tipo è noto | L'uso di un overload generico è preferibile al passaggio di un argomento System.Type quando il tipo è noto, perché consente di ottenere un codice più pulito e più sicuro in termini di tipi, con controlli in fase di compilazione migliori. |
| CA2264: Non passare un valore non nullable a 'ArgumentNullException.ThrowIfNull' | 'ArgumentNullException.ThrowIfNull' genera un'eccezione se l'argomento passato è 'null'. Alcuni costrutti, come le struct non annullabili e le espressioni 'nameof()' e 'new', sono notoriamente mai null, quindi 'ArgumentNullException.ThrowIfNull' non genererà mai un'eccezione. |
CA2265: Non confrontare Span<T> con null o default |
Il confronto di un intervallo con null o default potrebbe non eseguire le operazioni desiderate.
default e il null valore letterale vengono convertiti in modo implicito in Span<T>.Empty. |
CA2266: Il punto di ingresso del programma basato su file deve iniziare con #! |
Quando un programma basato su file è costituito da più file, il file del punto di ingresso deve iniziare con una riga shebang (#!) per distinguerla chiaramente da altri file inclusi. |
Collabora con noi su GitHub
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.