[#TEAMBUILD2010] HowTo: Incorporar Code Metrics en la ejecución de una Build

image47dd1de4

Buenas,

basado en el post que escribí hace unos días sobre como crear una definición de Build para realizar análisis de código utilizando StyleCop para Team Build 2010 utilizando las Tfs Build Extensions, hoy toca un post similar pero para incorporar el análisis de métricas de código dentro de la ejecución de una build.

Para esto nos basaremos en el post anterior, pero a partir del punto 9 crearemos una nueva definición de Team Build, y seguiremos los siguientes pasos:

1. Una vez agregadas las referencias para poder utilizar Tfs Build Extensions, podremos ver que en la toolbox poseemos una actividad llamada [Code Metrics]. Esta actividad es la que utilizaremos para realizar el análisis de código.

image

2. Dentro de la opcion

Secuence > Run on Agent > Try Compile, Test, and Associate Changesets and Work Items > Secuence > Compile, Test, and Associate Changesets and Work Items > Try Compile and Test > Compile and Test > For Each Configuration in BuildSettings.PlatformConfigurations > Compile and Test for Configuration > If BuildSettings.HasProjectsToBuild > For Each Project in BuildSettings.ProjectsToBuild > Try to Compile the Project > Compile the Project

luego de la actividad [Run MSBuild for Project], agregaremos una Secuence a la que llamaremos [Run Code Metrics Analysis]

image

3. Dentro de la secuencia agregaremos 2 actividades de tipo [WriteBuildMessage] para mostrar el inicio y fin del proceso de análisis con Code Metrics.

  • Start Activity
  • DisplayName = Start Code Metrics Analysis
  • Message = “Start Code Metrics Analysis”
  • Finish Activity
    • DisplayName = Finish Code Metrics Analysis
    • Message = “Finish Code Metrics Analysis”

    4. Entre ambas actividades agregaremos una nueva actividad de tipo [Code Metrics] con las siguientes propiedades definidas

    • DisplayName = Run Code Metrics Analysis
    • BinariesDirectory = BinariesDirectory
    • CyclomaticComplexityErrorThreshold = 40
    • CyclomaticComplexityWarningThreshold = 15
    • MaintanabilityIndexErrorThreshold = 10
    • MaintanabilityIndexWarningThreshold = 90
    • FilesToProcess = New List(Of String)(New String() {“ElBruno.StyleCopBuild.Demo.dll”})

    Aclaración: si ponemos el filtro en “*.dll”, el proceso de Code Metrics intentará analizr también la dll de pruebas unitarias y para la carga de la misma es necesario contar con varios ensamblados del IDE de Visual Studio 2010.

    5. Protegemos nuestros cambios en el servidor de Source Control y ya podremos crear una nueva definición de Build para utilizar este proceso.

    6. Partiendo de la definición de build que cree hace 2 días, hago un clonado de la misma, desplegando el menú contextual y seleccionando la opción [Clone Build Definition]

    image

    7. En la nueva definición de build que se ha creado, cambio el nombre de la misma, para este ejemplo será [Team Build.Code Metrics] y a continuación deberé cambiar la plantilla de ejecucíón de la build.

    8. Para cambiar la plantilla, selecciono la sección [Process] y despliego los detalles de la plantilla.

    image

    9. El combo de plantillas por defecto no debería mostrar mi nueva plantilla, por lo que selecciono la opción [New] y luego la opcion [Select an existing XAML file].

    10. Realizando un [Browse] sobre el Source Control, seleciono la plantilla que he creado en los primeros pasos [BuildTemplateWithCodeMetrics.xaml] y la asigno como plantilla de ejecución.

    image

    11. Guardo la definición de la build y al momento de lanzar la misma, me encuentro con que en el resultado de la build hay un par de datos a tener en cuenta:

    image

    Como no hemos cumplido “los límites” definidos para el análisis de Code Metrics, pues la build no se da como Sucess, sino que nos aparece como Partially succeded. Y entre la lista de errores y warnings podemos ver el porqué de este estado.

    12. Finalmente comentar que en el log de ejecución podremos ver el detalle por cada elemento de nuestros ensamblados del análisis de Code Metrics.

    image

    El código del ejemplo se puede descargar desde:

    https://skydrive.live.com/embedicon.aspx/Code%20Samples/2011%2007%2013%20CodeMetricsDemo.zip?cid=bef06dffdb192125&sc=documents

     

    Saludos @ Algún sitio entre Caudete y Madrid

    El Bruno

       

    Advertisements

    6 thoughts on “[#TEAMBUILD2010] HowTo: Incorporar Code Metrics en la ejecución de una Build”

    1. La forma de implementación es muy buena aunque me queda la duda si los valores manejados en este articulo (CyclomaticComplexityErrorThreshold, CyclomaticComplexityWarningThreshold, MaintanabilityIndexErrorThreshold, MaintanabilityIndexWarningThreshold) son valores nadamas de ejemplo o son valores que se usan a nivel global.

      Like

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out /  Change )

    Google photo

    You are commenting using your Google account. Log Out /  Change )

    Twitter picture

    You are commenting using your Twitter account. Log Out /  Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out /  Change )

    Connecting to %s

    This site uses Akismet to reduce spam. Learn how your comment data is processed.