Condividi tramite


Configurazione degli avvisi in Visual Basic

Il compilatore Visual Basic include un set di avvisi relativi al codice che può causare errori di runtime. È possibile usare queste informazioni per scrivere codice più pulito, più veloce e migliore con un minor numero di bug. Ad esempio, il compilatore genererà un avviso quando l'utente tenta di richiamare un membro di una variabile oggetto non assegnato, restituirà da una funzione senza impostare il valore restituito o eseguirà un blocco Try con errori nella logica per intercettare le eccezioni.

A volte il compilatore fornisce una logica aggiuntiva per conto dell'utente in modo che l'utente possa concentrarsi sull'attività in questione, invece di prevedere eventuali errori. Nelle versioni precedenti di Visual Basic è stato usato Option Strict per limitare la logica aggiuntiva fornita dal compilatore Visual Basic. La configurazione degli avvisi consente di limitare questa logica in modo più granulare, a livello di singoli avvisi.

È possibile personalizzare il progetto e disattivare alcuni avvisi non pertinenti all'applicazione, trasformando altri avvisi in errori. Questa pagina illustra come attivare e disattivare singoli avvisi.

Attivazione e disattivazione degli avvisi

Esistono diversi modi per configurare gli avvisi: è possibile configurarli usando Project Designer, è possibile usare il /warnaserror e /nowarn opzioni del compilatore oppure è possibile modificare il file di progetto (vbproj file) e usare la proprietà NoWarn MSBuild. Per usare la proprietà MSBuild, vedere Eliminare avvisi specifici per un intero progetto di Visual Basic.

L'esperienza di progettazione di progetto varia a seconda che si lavori con un progetto .NET Framework oppure un progetto .NET Core (o .NET 5 o successivo).

Nei progetti .NET Core (o .NET 5 e versioni successive), la sezione Compila della Progettazione del progetto contiene un'impostazione denominata Gravità avviso che è possibile usare per disabilitare tutti gli avvisi, trasformare tutti gli avvisi in errori, oppure scegliere di controllare ogni categoria di avviso separatamente (impostazione predefinita). Le impostazioni della categoria di avviso vengono visualizzate nella stessa area del Designer di Progetto .

Nei progetti .NET Framework, nella scheda Compila del Progettazione del progetto , selezionare la casella di controllo Disabilita tutti gli avvisi per disabilitare tutti gli avvisi; selezionare la casella di controllo Considera tutti gli avvisi come errori per considerare tutti gli avvisi come errori. Alcuni singoli avvisi possono essere impostati come errore o avviso a piacimento nella tabella visualizzata.

La scheda Compilazione della pagina Progettazione progetto consente di attivare e disattivare gli avvisi. Selezionare la casella di controllo Disabilita tutti gli avvisi per disabilitare tutti gli avvisi; selezionare il Considera tutti gli avvisi come errori considerare tutti gli avvisi come errori. Alcuni singoli avvisi possono essere impostati come errore o avviso a piacimento nella tabella visualizzata.

Quando Option Strict è impostato su Off, Option Strict gli avvisi correlati non possono essere trattati indipendentemente l'uno dall'altro. Quando Option Strict è impostato su On, gli avvisi associati vengono considerati errori, indipendentemente dal relativo stato. Quando Option Strict è impostato su Custom specificando /optionstrict:custom nel compilatore della riga di comando, gli avvisi di Option Strict possono essere attivati o disattivati in modo indipendente.

L'/warnaserror'opzione della riga di comando del compilatore può essere usata anche per specificare se gli avvisi vengono considerati come errori. È possibile aggiungere un elenco delimitato da virgole a questa opzione per specificare quali avvisi devono essere considerati come errori o avvisi usando + o -. Nella tabella seguente vengono fornite informazioni dettagliate sulle possibili opzioni.

Opzione della riga di comando Specifica
/warnaserror+ o /warnaserror Considerare tutti gli avvisi come errori
/warnsaserror- Non considerare gli avvisi come errori. Questa impostazione è l'impostazione predefinita.
/warnaserror+:<warning list > Considerare gli avvisi specifici come errori, elencati in base al numero ID errore in un elenco delimitato da virgole r.
/warnaserror-:<warning list> Non considerare avvisi specifici come errori, elencati in base al numero ID errore in un elenco delimitato da virgole.
/nowarn Non segnalare avvisi.
/nowarn:<warning list> Non segnalare gli avvisi specificati, elencati in base al numero ID errore in un elenco separato da virgole.

L'elenco di avvisi contiene i numeri ID errore degli avvisi da considerare come errori, che possono essere usati con le opzioni della riga di comando per attivare o disattivare avvisi specifici. Se l'elenco di avvisi contiene un numero non valido, viene segnalato un errore.

Esempi

Questa tabella di esempi di argomenti della riga di comando descrive le operazioni di ogni argomento.

Argomento Descrizione
vbc /warnaserror Specifica che tutti gli avvisi devono essere considerati come errori.
vbc /warnaserror:42024 Specifica che l'avviso 42024 deve essere considerato come un errore.
vbc /warnaserror:42024,42025 Specifica che gli avvisi 42024 e 42025 devono essere considerati come errori.
vbc /nowarn Specifica che non devono essere segnalati avvisi.
vbc /nowarn:42024 Specifica che l'avviso 42024 non deve essere segnalato.
vbc /nowarn:42024,42025 Specifica che gli avvisi 42024 e 42025 non devono essere segnalati.

Tipi di avvisi

Di seguito è riportato un elenco di avvisi che è possibile considerare come errori.

Avviso di conversione implicita

Generato per le istanze di conversione implicita. Non includono conversioni implicite da un tipo numerico intrinseco a una stringa quando si usa l'operatore &. L'impostazione predefinita per i nuovi progetti è disattivata.

ID: 42016

Avviso di invocazione del metodo a vinculazione tardiva e risoluzione del sovraccarico

Generato per istanze di collegamento tardivo. Nei nuovi progetti, l'impostazione predefinita è disattivata.

ID: 42017

Avvertenze sugli operandi di tipo 'Object'

Generato quando si verificano operandi di tipo Object che generano un errore con Option Strict su. L'impostazione predefinita per i nuovi progetti è attivata.

ID: 42018 e 42019

Le dichiarazioni richiedono avvisi di clausola 'As'

Generato quando una dichiarazione di variabile, funzione o proprietà priva di una clausola As avrebbe creato un errore con Option Strict su. Si presuppone che le variabili che non dispongono di un tipo assegnato siano di tipo Object. L'impostazione predefinita per i nuovi progetti è attivata.

ID: 42020 (dichiarazione di variabile), 42021 (dichiarazione di funzione) e 42022 (dichiarazione di proprietà).

Possibili avvisi di eccezione di riferimento nullo

Generato quando viene usata una variabile prima che sia stato assegnato un valore. L'impostazione predefinita per i nuovi progetti è attiva.

ID: 42104, 42030

Avviso variabile locale inutilizzato

Generato quando una variabile locale viene dichiarata ma non viene mai fatto riferimento. Il valore predefinito è attivato.

ID: 42024

Accesso del membro condiviso tramite avviso della variabile di istanza

Generato quando l'accesso a un membro condiviso tramite un'istanza può causare effetti collaterali, oppure quando l'accesso a un membro condiviso tramite una variabile di istanza non è sul lato destro di un'espressione o viene passato come parametro. L'impostazione predefinita per i nuovi progetti è attiva.

ID: 42025

Avvisi sull'accesso ricorsivo a proprietà o operatori

Generato quando il corpo di una routine utilizza lo stesso operatore o la stessa proprietà in cui è definito. L'impostazione predefinita per i nuovi progetti è attivata.

ID: 42004 (operatore), 42026 (proprietà)

Funzione o operatore senza avvertimento per valore restituito

Generato quando la funzione o l'operatore non dispone di un valore restituito specificato. Ciò include l'omissione di un Set alla variabile locale implicita con lo stesso nome della funzione. L'impostazione predefinita per i nuovi progetti è attivata.

ID: 42105 (funzione), 42016 (operatore)

Modificatore di overload usato in un avviso del modulo

Generato quando Overloads viene usato in un Module. L'impostazione predefinita per i nuovi progetti è attiva.

ID: 42028

Avvisi di blocchi try-catch duplicati o sovrapposti

Generato quando un blocco Catch non viene mai raggiunto a causa della relazione con altri blocchi Catch definiti. L'impostazione predefinita è attiva per i nuovi progetti.

ID: 42029, 42031