Configurer les avertissements en Visual Basic

Le compilateur Visual Basic inclut un ensemble d’avertissements concernant le code qui peut provoquer des erreurs d’exécution. Vous pouvez utiliser ces informations pour écrire du code plus clair, plus rapide, de meilleure qualité et avec moins de bogues. Par exemple, le compilateur génère un avertissement si l’utilisateur tente d’appeler un membre d’une variable objet non assignée, de retourner une valeur à partir d’une fonction sans définir la valeur de retour, ou d’exécuter un bloc Try contenant des erreurs dans la logique d’interception des exceptions.

Parfois, le compilateur fournit une logique supplémentaire à la place de l’utilisateur pour que celui-ci puisse se concentrer sur la tâche en cours, plutôt que sur l’anticipation d’éventuelles erreurs. Dans les versions précédentes de Visual Basic, l’option Option Strict était utilisée pour limiter la logique supplémentaire fournie par le compilateur Visual Basic. Vous pouvez choisir de limiter cette logique pour chacun des avertissements.

Il est possible que vous souhaitiez personnaliser votre projet en désactivant certains avertissements non pertinents pour votre application et en transformant certains avertissements en erreurs. Cette page explique comment activer et désactiver chaque avertissement.

Activer et désactiver les avertissements

Il existe deux façons de configurer les avertissements : vous pouvez utiliser le Concepteur de projet, ou vous pouvez utiliser les options /warnaserror et /nowarn du compilateur.

L’onglet Compiler de la page Concepteur de projet permet d’activer et de désactiver les avertissements. Cochez la case Désactiver tous les avertissements pour désactiver tous les avertissements. Cochez la case Considérer tous les avertissements comme des erreurs pour traiter tous les avertissements comme des erreurs. Vous pouvez attribuer le statut d’erreur à certains avertissements (et inversement) dans le tableau affiché.

Si Option Strict est Off, les avertissements relatifs à Option Strict ne peuvent pas être traités indépendamment les uns des autres. Si Option Strict est On, les avertissements qui lui sont associés sont traités comme des erreurs, quel que soit leur état. Si Option Strict est défini sur Custom en spécifiant /optionstrict:custom dans le compilateur de ligne de commande, les avertissements Option Strict peuvent être activés ou désactivés indépendamment les uns des autres.

L’option de ligne de commande /warnaserror du compilateur peut également être utilisée pour spécifier si les avertissements doivent être traités comme des erreurs. Vous pouvez ajouter une liste séparée par des virgules à cette option pour spécifier que les avertissements doivent être traités comme des erreurs ou des avertissements à l’aide des touches + et -. Le tableau suivant présente les options possibles.

Option de ligne de commande Spécifie
/warnaserror+ Considérer tous les avertissements comme des erreurs
/warnsaserror- Ne considère pas les avertissements comme des erreurs. Il s’agit de la valeur par défaut.
/warnaserror+:<warning list > Considère certains avertissements comme des erreurs. Ces avertissements sont répertoriés par numéro d’erreur dans une liste séparée par des virgules.
/warnaserror-:<warning list> Ne considère pas certains avertissements comme des erreurs. Ces avertissements sont répertoriés par numéro d’erreur dans une liste séparée par des virgules.
/nowarn N’affiche pas d’avertissement.
/nowarn:<warning list> N’affiche pas certains avertissements. Ces avertissements sont répertoriés par numéro d’erreur dans une liste séparée par des virgules.

La liste d’avertissements contient les ID d’erreur des avertissements qui doivent être traités comme des erreurs. Vous pouvez ainsi utiliser les options de ligne de commande pour activer ou désactiver certains avertissements. Si la liste d’avertissements contient un numéro non valide, une erreur est signalée.

Exemples

Ce tableau d’exemples d’arguments de ligne de commande décrit le rôle de chaque argument.

Argument Description
vbc /warnaserror Spécifie que tous les avertissements doivent être traités comme des erreurs.
vbc /warnaserror:42024 Spécifie que l’avertissement 42024 doit être traité comme une erreur.
vbc /warnaserror:42024,42025 Spécifie que les avertissements 42024 et 42025 doivent être traités comme des erreurs.
vbc /nowarn Spécifie qu’aucun avertissement ne doit être signalé.
vbc /nowarn:42024 Spécifie que l’avertissement 42024 ne doit pas être signalé.
vbc /nowarn:42024,42025 Spécifie que les avertissements 42024 et 42025 ne doivent pas être signalés.

Types d’avertissements

Voici une liste d’avertissements que vous pouvez souhaiter traiter comme des erreurs.

Conversion implicite

Généré pour les instances de conversion implicite. Cela n’inclut pas les conversions implicites d’un type numérique intrinsèque en une chaîne à l’aide de l’opérateur &. Pour les nouveaux projets, la valeur par défaut est Off (désactivé).

ID : 42016

Appel de méthode à liaison tardive et résolution de surcharge

Généré pour les instances de liaison tardive. Pour les nouveaux projets, la valeur par défaut est Off (désactivé).

ID : 42017

Opérandes de type « Object »

Généré en présence d’opérandes de type Object, susceptibles de créer une erreur avec Option Strict On. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42018 et 42019

Les déclarations nécessitent une clause « As »

Généré lorsqu’une variable, une fonction ou une déclaration de propriété n’ayant pas de clause As provoquerait une erreur avec Option Strict On. Les variables auxquelles aucun type n’est affecté sont supposées être de type Object. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42020 (déclaration de variable), 42021 (déclaration de fonction) et 42022 (déclaration de propriété).

Exception de référence Null potentielle

Généré lorsqu’une variable est utilisée avant qu’une valeur ne lui ait été assignée. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42104, 42030

Variable locale non utilisée

Généré lorsqu’une variable locale est déclarée, mais non référencée. Par défaut, cette option est activée.

ID : 42024

Accès d’un membre partagé par le biais d’une variable d’instance

Généré lorsque l’accès à un membre partagé via une instance peut avoir des effets secondaires, ou lorsque l’accès à un membre partagé via une variable d’instance n’est pas à droite d’une expression ou est passé comme un paramètre. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42025

Accès récursif à un opérateur ou à une propriété

Généré lorsque le corps d’une routine utilise le même opérateur ou la même propriété que celui ou celle où il est défini. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42004 (opérateur), 42026 (propriété)

Fonction ou opérateur sans valeur de retour

Généré lorsque la fonction ou l’opérateur n’a pas de valeur de retour. Cela inclut le fait d’omettre un Set dans la variable locale implicite portant le même nom que la fonction. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42105 (fonction), 42016 (opérateur)

Modificateur Overloads utilisé dans un module

Généré lorsque Overloads est utilisé dans un Module. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42028

Blocs catch dupliqués ou se chevauchant

Généré lorsqu’un bloc Catch n’est jamais atteint en raison de sa relation aux autres blocs Catch qui ont été définis. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42029, 42031