Configuración de advertencias en Visual Basic
El compilador de Visual Basic incluye un conjunto de advertencias sobre el código que puede provocar errores en tiempo de ejecución. Puede usar esa información para escribir código más limpio, más rápido y mejor con menos errores. Por ejemplo, el compilador generará una advertencia cuando el usuario intente invocar un miembro de una variable de objeto sin asignar, devolver de una función sin establecer el valor devuelto o ejecutar un bloque de Try
con errores en la lógica para detectar excepciones.
A veces, el compilador proporciona lógica adicional en nombre del usuario para que el usuario pueda centrarse en la tarea en cuestión, en lugar de anticipar posibles errores. En versiones anteriores de Visual Basic, Option Strict se usaba para limitar la lógica adicional que proporciona el compilador de Visual Basic. La configuración de advertencias permite limitar esta lógica de forma más granular, en el nivel de las advertencias individuales.
Es posible que quiera personalizar el proyecto y desactivar algunas advertencias no pertinentes para la aplicación al convertir otras advertencias en errores. En esta página se explica cómo activar y desactivar advertencias individuales.
Activación y desactivación de advertencias
Hay varias maneras diferentes de configurar advertencias: puede configurarlas mediante el Diseñador de Proyectos , puede utilizar las opciones del compilador /warnaserror y /nowarn, o editar el archivo de proyecto (archivovbproj
) y utilizar la propiedad NoWarn
MSBuild. Para usar la propiedad MSBuild, consulte Suprimir advertencias específicas para un proyecto completo de Visual Basic.
La experiencia del Diseñador de proyectos de difiere en función de si está trabajando con un proyecto de .NET Framework o con un proyecto de .NET Core (o .NET 5 o posterior).
En proyectos de .NET Core (o .NET 5 y versiones posteriores), la sección Compilar del Diseñador de proyectos contiene una configuración denominada Gravedad de advertencia que puede usar para deshabilitar todas las advertencias, promover todas las advertencias a errores, o puede optar por controlar cada categoría de advertencia por separado (el valor predeterminado). La configuración de la categoría de advertencia aparece en la misma área del Diseñador de proyectos.
En proyectos de .NET Framework, en la pestaña Compilar del Diseñador de proyectos , seleccione la casilla Desactivar todas las advertencias para desactivar todas las advertencias; seleccione Tratar todas las advertencias como errores para tratar todas las advertencias como errores. Algunas advertencias individuales se pueden configurar como error o advertencia según se desee en la tabla mostrada.
En la pestaña Compilar de la página Diseñador de proyectos, puede activar y desactivar las advertencias. Active la casilla Deshabilitar todas las advertencias para deshabilitar todas las advertencias; Seleccione el Tratar todas las advertencias como Errores para tratar todas las advertencias como errores. Algunas advertencias individuales se pueden configurar como error o advertencia según se desee en la tabla mostrada.
Cuando Option Strict se establece en Off, las advertencias relacionadas con Option Strict no se pueden tratar de forma independiente entre sí. Si Option Strict está establecido en Activado, las advertencias asociadas se tratan como errores, no importa cuál sea su estado. Cuando Option Strict se establece en Custom especificando /optionstrict:custom
en el compilador de línea de comandos, se pueden activar o desactivar las advertencias Option Strict de forma independiente.
La /warnaserror opción de línea de comandos del compilador también se puede usar para especificar si las advertencias se tratan como errores. Puede agregar una lista delimitada por comas a esta opción para especificar qué advertencias se deben tratar como errores o advertencias mediante + o -. En la tabla siguiente se detallan las posibles opciones.
Opción de línea de comandos | Especifica |
---|---|
/warnaserror+ o /warnaserror |
Tratar todas las advertencias como errores |
/warnsaserror- |
No trate las advertencias como errores. Esta configuración es la predeterminada. |
/warnaserror+:<warning list > |
Trate advertencias específicas como errores, enumerados por su número de identificador de error en una lista delimitada por comas r. |
/warnaserror-:<warning list> |
No trate advertencias específicas como errores, enumeradas por su número de identificador de error en una lista delimitada por comas. |
/nowarn |
No se notifican las advertencias. |
/nowarn:<warning list> |
No se notifican las advertencias específicas, enumeradas por su número de identificación de error en una lista delimitada por comas. |
La lista de advertencias contiene los números de identificador de error de las advertencias que se deben tratar como errores, que se pueden usar con las opciones de línea de comandos para activar o desactivar advertencias específicas. Si la lista de advertencias contiene un número no válido, se notifica un error.
Ejemplos
En esta tabla de ejemplos de argumentos de línea de comandos se describe lo que hace cada argumento.
Argumento | Descripción |
---|---|
vbc /warnaserror |
Especifica que todas las advertencias deben tratarse como errores. |
vbc /warnaserror:42024 |
Especifica que la advertencia 42024 debe tratarse como un error. |
vbc /warnaserror:42024,42025 |
Especifica que las advertencias 42024 y 42025 deben tratarse como errores. |
vbc /nowarn |
Especifica que no se debe notificar ninguna advertencia. |
vbc /nowarn:42024 |
Especifica que no se debe notificar la advertencia 42024. |
vbc /nowarn:42024,42025 |
Especifica que no se deben notificar las advertencias 42024 y 42025. |
Tipos de advertencias
A continuación se muestra una lista de advertencias que usted podría querer tratar como errores.
Advertencia de conversión implícita
Se genera para instancias de conversión implícita. No incluyen conversiones implícitas de un tipo numérico intrínseco a una cadena cuando se usa el operador &
. De manera predeterminada, está desactivada para nuevos proyectos.
Identificador: 42016
Advertencia de resolución de sobrecarga e invocación de método enlazada en tiempo de ejecución
Se genera para instancias de enlace en tiempo de ejecución. De manera predeterminada, está desactivada para nuevos proyectos.
Identificador: 42017
Advertencias de operandos de tipo Object
Se generan cuando se producen operandos de tipo Object
que crearían un error con Option Strict On. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42018 y 42019
Advertencias de declaraciones que requieren la cláusula "As"
Se generan cuando una declaración de propiedad, función o variable a la que le falta una cláusula As
habría creado un error con Option Strict On. Se supone que las variables que no tienen un tipo asignado son de tipo Object
. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42020 (declaración de variable), 42021 (declaración de función) y 42022 (declaración de propiedad).
Advertencias de posibles excepciones de referencia nula
Se genera cuando se usa una variable antes de que se le haya asignado un valor. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42104, 42030
Advertencia de variable local sin usar
Se genera cuando se declara una variable local, pero nunca se hace referencia a él. De manera predeterminada, está activada.
Identificador: 42024
Advertencia de acceso de miembro compartido mediante una variable de instancia
Se genera cuando el acceso a un miembro compartido mediante una instancia puede tener efectos secundarios o cuando el acceso a un miembro compartido mediante una variable de instancia no es el lado derecho de una expresión o se pasa como un parámetro. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42025
Advertencias de acceso a la propiedad u operador de forma recursiva
Se genera cuando el cuerpo de una rutina usa el mismo operador o propiedad en la que se define. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42004 (operador), 42026 (propiedad)
Advertencia de función u operador sin valor devuelto
Se genera cuando la función o el operador no tienen un valor devuelto especificado. Esto incluye omitir un Set
a la variable local implícita con el mismo nombre que la función. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42105 (función), 42016 (operador)
Modificador de sobrecargas utilizado en una advertencia relacionada con un módulo
Se genera cuando Overloads
se usa en un Module
. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42028
Advertencias de bloques Catch duplicados o superpuestos
Se genera cuando nunca se alcanza un bloque de Catch
debido a su relación con otros bloques de Catch
definidos. De manera predeterminada, está activada para nuevos proyectos.
Identificador: 42029, 42031