Partager via


Configuration des avertissements dans Visual Basic

Le compilateur Visual Basic inclut un ensemble d’avertissements sur le code susceptible d’entraîner des erreurs d’exécution. Vous pouvez utiliser ces informations pour écrire du code plus propre, plus rapide et plus efficace avec moins de bogues. Par exemple, le compilateur génère un avertissement lorsque l’utilisateur tente d’appeler un membre d’une variable d’objet non attribuée, de retourner à partir d’une fonction sans définir la valeur de retour, ou d’exécuter un bloc Try avec des erreurs dans la logique pour intercepter les exceptions.

Parfois, le compilateur fournit une logique supplémentaire au nom de l’utilisateur afin que l’utilisateur puisse se concentrer sur la tâche à la main, plutôt que sur l’anticipation des erreurs possibles. Dans les versions précédentes de Visual Basic, Option Strict a été utilisée pour limiter la logique supplémentaire que le compilateur Visual Basic fournit. La configuration des avertissements vous permet de limiter cette logique de manière plus granulaire, au niveau des avertissements individuels.

Vous pouvez personnaliser votre projet et désactiver certains avertissements non pertinents pour votre application lors de la transformation d’autres avertissements en erreurs. Cette page explique comment activer et désactiver des avertissements individuels.

Activation et désactivation des avertissements

Il existe plusieurs façons de configurer des avertissements : vous pouvez les configurer à l’aide du concepteur de projets, vous pouvez utiliser les /warnaserror et /nowarn options du compilateur, ou vous pouvez modifier le fichier projet (vbproj fichier) et utiliser la propriété MSBuild NoWarn. Pour utiliser la propriété MSBuild, consultez Supprimer des avertissements spécifiques pour un projet Visual Basic entier.

L’expérience du Concepteur de projets diffère selon que vous travaillez avec un projet .NET Framework ou un projet .NET Core (ou .NET 5 ou version ultérieure).

Dans les projets .NET Core (ou .NET 5 et versions ultérieures), la section Compiler du Concepteur de projets contient un paramètre appelé gravité d’avertissement que vous pouvez utiliser pour désactiver tous les avertissements, promouvoir tous les avertissements en erreurs, ou vous pouvez choisir de contrôler chaque catégorie d’avertissement séparément (la valeur par défaut). Les paramètres de catégorie d’avertissement apparaissent dans la même zone du concepteur de projets .

Dans les projets .NET Framework, sous l’onglet Compiler du concepteur de projets , cochez la case Désactiver tous les avertissements pour désactiver tous les avertissements ; sélectionnez le Traiter tous les avertissements comme des erreurs pour traiter tous les avertissements comme des erreurs. Vous pouvez attribuer le statut d’erreur ou d’avertissement à certains avertissements individuels dans le tableau affiché.

L’onglet Compiler de la page du Concepteur de projets vous permet d’activer et de désactiver les avertissements. Cochez la case Désactiver tous les avertissements pour désactiver tous les avertissements ; sélectionnez le Traiter tous les avertissements comme des erreurs pour traiter tous les avertissements comme des erreurs. Vous pouvez attribuer le statut d’erreur ou d’avertissement à certains avertissements individuels dans le tableau affiché.

Si Option Strict est défini sur Off, les avertissements relatifs à Option Strict ne peuvent pas être traités indépendamment les uns des autres. Lorsque Option Strict est définie sur On, les avertissements associés sont traités comme des erreurs, indépendamment de leur statut. 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.

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

Option de ligne de commande Spécifie
/warnaserror+ ou /warnaserror Traiter tous les avertissements comme des erreurs
/warnsaserror- Ne traitez pas les avertissements comme des erreurs. Ce paramètre est la valeur par défaut.
/warnaserror+:<warning list> Traitez des avertissements spécifiques comme des erreurs, répertoriés par leur numéro d’ID d’erreur dans une liste délimitée par des virgules r.
/warnaserror-:<warning list> Ne traitez pas les avertissements spécifiques comme des erreurs, répertoriés par leur numéro d’ID d’erreur dans une liste délimitée par des virgules.
/nowarn Ne signalez pas d’avertissements.
/nowarn:<warning list> Ne signalez pas les avertissements spécifiés, répertoriés par leur numéro d’ID d’erreur dans une liste délimitée par des virgules.

La liste d’avertissements contient les numéros d’ID d’erreur des avertissements qui doivent être traités comme des erreurs, qui peuvent être utilisés avec les options de ligne de commande pour activer ou désactiver des avertissements spécifiques. Si la liste d’avertissements contient un nombre non valide, une erreur est signalée.

Exemples

Cette table d’exemples d’arguments de ligne de commande décrit ce que fait 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 souhaiterez peut-être traiter comme des erreurs.

Avertissement de conversion implicite

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

ID : 42016

Avertissement : 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

Avertissement : 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. L'option par défaut est activée pour les nouveaux projets.

ID : 42018 et 42019

Avertissement : les déclarations nécessitent une clause « As »

Généré lorsqu’une variable, une fonction ou une déclaration de propriété ne disposant pas d’une clause As aurait créé une erreur avec Option Strict On. Les variables qui n’ont pas de type qui leur sont attribuées 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é).

Avertissements d'exception de référence nulle possibles

Généré lorsqu’une variable est utilisée avant d’avoir reçu une valeur. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42104, 42030

Avertissement de variable locale inutilisée

Généré lorsqu’une variable locale est déclarée mais jamais référencée. La valeur par défaut est On (activé).

ID : 42024

Avertissement concernant l'accès d'un membre partagé par une variable d'instance

Générée lors de l'accès à un membre partagé par une instance, cela peut avoir des effets secondaires, ou lorsque l'accès à un membre partagé par une variable d'instance ne constitue pas le côté droit d'une expression ou est passé comme paramètre. Pour les nouveaux projets, la valeur par défaut est On (activé).

ID : 42025

Avertissement : 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 propriété dans lequel elle est définie. Pour les nouveaux projets, la valeur par défaut est On (activé).

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

Avertissement : 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 spécifiée. Cela inclut l’omission d’une Set à 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)

Avertissement sur le modificateur de surcharge utilisé dans un module

Généré lorsque Overloads est utilisé dans un Module. La valeur par défaut pour les nouveaux projets est "on".

ID : 42028

Avertissement : blocs catch en double ou se chevauchant

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

ID : 42029, 42031