28/4/2011 15:58 El Bruno

[VS2010] Introduccion a StyleCop

image47dd1de4

Buenas,

StyleCop es una herramienta que analiza código fuente C# y aplica un conjunto de reglas de estilo y consistencia. Se puede ejecutar desde dentro de Visual Studio o integrado en un proyecto de TeamBuild. Es bastante útil cuando además de contar con un buen diseño de la arquitectura de tu solución, de respetar las reglas de diseño SOLID, quieres garantizar que la “estética de tu código” sea coherente entre sí. Este post se basa en la versión 4.5RC que se puede descargar desde aquí.

Un detalle a tener en cuenta es que durante la instalación del producto, puedes seleccionar la integración con Visual Studio 2010 y además si quieres los archivos necesarios para MSBuild para agregar validaciones de StyleCop durante compilaciones de Team Build.

image

Para este ejemplo, he seleccionado las 2 opciones.

Vamos por el primer ejemplo de código para que veamos lo que dice StyleCop al respecto. Si creamos un proyecto de bibloteca de clases con su clase por defecto nos encontramos con el siguiente código:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5:  
   6: namespace StyleCopDemo01
   7: {
   8:     public class Class1
   9:     {
  10:     }
  11: }

 

Y StyleCop nos avisa con 6 Warnings de los siguientes detalles a tener en cuenta:

image

Si “movemos” los using dentro del Namespace, como indican los últimos warnings, el código queda de la siguiente forma:

   1: namespace StyleCopDemo01
   2: {
   3:     using System;
   4:     using System.Collections.Generic;
   5:     using System.Linq;
   6:     using System.Text;
   7:  
   8:     public class Class1
   9:     {
  10:     }
  11: }

Y efectivamente, ahora solo tenemos 2 warnings por los que preocuparnos:

image

Agregamos un poco de código más al ejemplo:

   1: public string Foo(int firstArgument, int secondArgument)
   2: {
   3:     var res = "no";
   4:     if (firstArgument == secondArgument)
   5:     {
   6:         res = "yes";
   7:     }
   8:     if (firstArgument > secondArgument)
   9:     {res = "maybe";}
  10:     return res;
  11: }

 

Y ahora veremos como tenemos que preocuparnos por los espaciós después de las llaves, los espacios entre los elementos entre las llaves, etc.

image

 

Por defecto, StyleCop tiene activadas todas las reglas que posee, lo cual puede ser bastante molesto; en especial en lo referido a los comentarios, ya que no solo recomienda agregar tags de comentarios en todas las clases, sino que también recomienda headers en las clases, secciones de copyright, etc.

Si queremos configurar el set de reglas con el que queremos trabajar, podemos hacerlo desde el proyecto en cuestión. Seleccionamos el mismo, desplegamos el menú contextual y seleccionamos la opción [StyleCop Settings]

image

 

En este formulario veremos los diferentes tipos de reglas que se aplican durante el análisis de StyleCop. Mi recomendación > desactivar las de documentación Open-mouthed smile

image

 

En los próximos posts un poco más sobre StyleCop y Team Build.

 

Saludos @ Here

El Bruno

   

Archivado en: ,,,
Comparte este post:

# re: [VS2010] Introduccion a StyleCop

Monday, May 02, 2011 9:05 AM by Hadi Hariri

Bruno, no se si conoces StyleCop for ReSharper (que ya viene incluido incluso en StyleCop), lo cual te permite integrar StyleCop con ReSharper y los Quick Fixes / Code Clean up.

Personalmente no uso ni me gusta mucho StyleCop pero sé que los que lo usan, les encanta el plugin.

# re: [VS2010] Introduccion a StyleCop

Friday, May 06, 2011 12:58 PM by Javier

Yo lo llevo usando algunos años y no me acaba de convencer.

Primero, porque hasta donde sé, no es posible configurar un grupo de reglas para toda la solución. Siempre me toca ir proyecto a proyecto.

Segundo, porque no he visto cómo integrarlo en la compilación. Quiero decir, que si me salieran los errores al compilar, lo vería más cómodo. Pero en su lugar hay que lanzarlo explícitamente.

También se hace un lío con las clases con código autogenerado, y no soporta los parámetros con valores por defecto, los interpreta como errores en el código y no ejecuta el análisis en la clase.

No sé, creo que lleva más tiempo del valor que ofrece.