2011-01-04 15 views
10

Nos gusta Advertencias como errores estableciendo que tenemos una política de no verificar el código con advertencias y esta es la única forma efectiva que hemos encontrado para aplicarlo.Advertencias como errores frente a atributo obsoleto en Visual Studio

También nos gusta utilizar el atributo obsoleto para marcar los métodos que ya no se deben usar.

El problema es que al agregar un atributo obsoleto a un método o clase, inmediatamente se generan montones de proyectos que no se crean (sin mencionar los problemas si una llamada API .NET está en desuso).

¿Alguien tiene una buena solución para esto?

Queremos un indicador visible y difícil de ignorar de que está utilizando una API en desuso, pero eso no hace que la compilación falle. Queremos ver las advertencias en el IDE y en las compilaciones de CI.

+1

+1. Puede suprimir la advertencia 618 (CS0618): "Un miembro de la clase se marcó con el atributo Obsoleto" en las propiedades del proyecto. Desafortunadamente, esto oculta todas las advertencias y derrota el propósito. También nos gustaría tener una "advertencia menor" para esto. – TrueWill

+2

Creo que este es un duplicado de http://stackoverflow.com/questions/267168/treat-all-warnings-as-errors-except-in-visual-studio – TheHurt

+0

@TheHurt - Buen descubrimiento; ¡No vi eso! @Kevin - mira ese enlace. – TrueWill

Respuesta

1

Una solución simple sería tener una configuración de compilación (por ejemplo, la configuración de compilación de depuración) sin advertencias como errores. Sin embargo, si el punto es señalarles a los desarrolladores que algo anda mal en la compilación, eso no es bueno, ya que se olvidarán de crear versiones antes de que se registren.

Ocasionalmente, en lugar de usar "advertencias como errores" "podría configurar su conjunto de reglas para lanzar errores en lugar de generar advertencias. Esto significará, por supuesto, que las advertencias que no sean de CA no causarán errores.

La mejor solución, creo, sería manejarlo desde el lado del servidor. Lo ideal es que tenga algún tipo de gated checkin para que su repositorio de código rechace confirma que no se compila utilizando su definición de compilación (con advertencias como errores activados, y los desarrolladores pueden dejar advertencias como errores desactivadas). Sin embargo, sospecho que es una función TFS-2k10.

Cuestiones relacionadas