Validar código con diagramas de capas

Para asegurarse de que el código no entre en conflicto con el diseño, puede validar el código con los diagramas de capas en Visual Studio Ultimate y Visual Studio Premium.Esto ayuda:

  • Busque los conflictos entre las dependencias del código y las dependencias del diagrama de capas.

  • Encontrar dependencias que podrían verse afectadas por los cambios propuestos.

    Por ejemplo, puede modificar el diagrama de capas para mostrar los posibles cambios de la arquitectura y validar el código para ver las dependencias afectadas.

  • Refactorizar o migrar el código a un diseño diferente.

    Buscar código o dependencias que requieran trabajo al cambiar el código a una arquitectura diferente.

Puede validar el código manualmente desde un diagrama de capas abierto en Visual Studio o del símbolo del sistema.También puede validar el código automáticamente cuando el valor local actual compila o Team Foundation Build.Vea Vídeo de canal 9: Diseñar y validar la arquitectura con diagramas de capas.

Requisitos

  • Visual Studio Ultimate o Visual Studio Premium

  • Una solución que tiene un proyecto de modelado con un diagrama de capas.Este diagrama de capas se debe vincular a los artefactos de .NET de Visual c# o Visual Basic .NET proyectos que desea validar.Vea Crear diagramas de capas a partir del código.

Para

  • Vea si un elemento admite validación

  • Incluye otros ensamblados y proyectos de .NET para la validación

  • Validar el código manualmente

  • Validar el código automáticamente

  • Solucionar problemas de validación de capas

  • Comprender y resuelva los errores de validación de capas

Vea si un elemento admite validación

  1. En el diagrama de capas, seleccione una o varias capas, haga clic con el botón secundario en la selección, y haga clic en Vea los vínculos.

  2. En el Explorador de capas, examine la columna Admite validación.Si el valor es false, el elemento no admite la validación.

Puede enlazar sitios Web, documentos de Office, y los archivos de texto sin formato a las capas, pero el proceso de validación no los incluirá.Los errores de validación no aparecerán de referencias a proyectos o ensamblados que están vinculados a capas independientes cuando no aparece ninguna dependencia entre esas capas.Tales referencias no se consideran dependencias a menos que el código utilice esas referencias.

Incluye otros ensamblados y proyectos de .NET para la validación

Al arrastrar elementos al diagrama de capas, las referencias a los ensamblados o proyectos de .NET correspondientes se agregan automáticamente a la carpeta Referencias de capa en el proyecto de modelado.Esta carpeta contiene referencias a los ensamblados y proyectos que se analizan durante la validación.Puede incluir otros ensamblados y proyectos de .NET para validación sin manualmente arrastrarlos al diagrama de capas.

  1. En Explorador de soluciones, haga clic con el botón secundario en el proyecto de modelado o la carpeta Referencias de capa, y haga clic en Agregar referencia.

  2. En el cuadro de diálogo Agregar referencia, seleccione los ensamblados o proyectos y, a continuación, haga clic en Aceptar.

Validar el código manualmente

Si tiene un diagrama de capas abierto vinculado a los elementos de la solución, puede ejecutar el comando de método abreviado Validar del diagrama.También puede utilizar el símbolo del sistema para ejecutar el comando de msbuild con la propiedad personalizada de /p:ValidateArchitecture establecida en True.Por ejemplo, cuando se realizan cambios en el código, realice la validación de capas con regularidad para poder detectar conflictos de dependencia pronto.

Para validar el código de un diagrama de capas abierto

  1. Haga clic con el botón secundario en la superficie del diagrama y, a continuación, haga clic en Validar arquitectura.

    [!NOTA]

    De forma predeterminada, la propiedad Acción de compilación del archivo de diagrama de capas (.layerdiagram) se establece en Validar para que el diagrama se incluya en el proceso de validación.

    La ventana Lista de errores notifica los errores que se producen.Para obtener más información sobre los errores de validación, vea Comprender y resuelva los errores de validación de capas.

  2. Para ver el origen de cada error, haga doble clic en el error en la ventana Lista de errores.

    [!NOTA]

    Visual Studio podría mostrar un gráfico de dependencia en lugar del origen del error.Esto se produce cuando el código tiene una dependencia en un ensamblado que el diagrama de capas no especifica, o al código le falta una dependencia que el diagrama de capas especifica.Revise el gráfico de dependencia o el código para determinar si debe existir la dependencia.Para obtener más información sobre los gráficos de dependencia, vea Visualizar dependencias de código en gráficos de dependencias.

  3. Para administrar los errores, vea Administrar errores de validación.

Para validar el código en el símbolo del sistema

  1. Abra el símbolo del sistema de Visual Studio.

  2. Elija una de las siguientes opciones:

    • Para validar el código comparándolo con un proyecto de modelado concreto en la solución, ejecute MSBuild con la siguiente propiedad personalizada.

      msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
      

      -O bien-

      Vaya a la carpeta que contiene el archivo de proyecto de modelado (.modelproj) y el diagrama de capas y, a continuación, ejecute MSBuild con la siguiente propiedad personalizada:

      msbuild /p:ValidateArchitecture=true
      
    • Para validar el código comparándolo con todos los proyectos de modelado de la solución, ejecute MSBuild con la siguiente propiedad personalizada.

      msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true 
      

      -O bien-

      Vaya a la carpeta de soluciones, que debe contener un proyecto de modelado que contiene un diagrama de capas y, a continuación, ejecute MSBuild con la siguiente propiedad personalizada:

      msbuild /p:ValidateArchitecture=true 
      

    Se mostrará cualquier error que se produzca.Para obtener más información acerca de MSBuild, vea MSBuild y MSBuild (Tarea).

Para obtener más información sobre los errores de validación, vea Comprender y resuelva los errores de validación de capas.

Dd409395.collapse_all(es-es,VS.110).gifAdministrar errores de validación

Durante el proceso de desarrollo, puede que desee suprimir algunos de los conflictos notificados durante la validación.Por ejemplo, es posible que desee suprimir errores de los que ya se ha ocupado o que no son pertinentes para su escenario concreto.Cuando se suprime un error, conviene registrar un elemento de trabajo en Team Foundation.

Para crear un elemento de trabajo para un error de validación

  • En la ventana Lista de errores, haga clic con el botón secundario en el error, elija Crear elemento de trabajo y haga clic en el tipo de elemento de trabajo que desee crear.

Use estas tareas para administrar los errores de validación de la ventana Lista de errores:

Para

Siga estos pasos

Suprimir los errores seleccionados durante la validación

Haga clic con el botón secundario en uno o varios errores seleccionados, elija Administrar errores de validación y, a continuación, haga clic en Suprimir errores.

Los errores suprimidos aparecen tachados.La próxima vez que ejecute la validación, estos errores no aparecerán.

El seguimiento de los errores suprimidos se lleva a cabo en un archivo .suppressions relacionado con el archivo de diagrama de capas correspondiente.

Detener la supresión de los errores seleccionados

Haga clic con el botón secundario en el error o errores suprimidos seleccionados, elija Administrar errores de validación y, a continuación, haga clic en Detener supresión de errores.

La próxima vez que ejecute la validación, los errores suprimidos aparecerán.

Restaurar todos los errores suprimidos en la ventana Lista de errores

Haga clic con el botón secundario en cualquier parte en la ventana Lista de errores, elija Administrar errores de validación y, a continuación, haga clic en Mostrar errores suprimidos.

Ocultar todos los errores suprimidos en la ventana Lista de errores

Haga clic con el botón secundario en cualquier parte en la ventana Lista de errores, elija Administrar errores de validación y, a continuación, haga clic en Ocultar errores suprimidos.

Validar el código automáticamente

Puede realizar la validación de capas cada vez que ejecute una compilación local.Si el equipo utiliza Team Foundation Build, puede realizar la validación de capas con entradas validadas, que puede especificar creando una tarea personalizada de MSBuild, y utiliza los informes de compilación para recopilar errores de validación. Para crear compilaciones de protección, consulta Definir un proceso de compilación de protección controlada para validar cambios.

Para validar el código automáticamente durante una compilación local

  • Use un editor de texto para abrir el archivo del proyecto de modelado (.modelproj) y, a continuación, incluya la siguiente propiedad:
<ValidateArchitecture>true</ValidateArchitecture>

-O bien-

  1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto de modelado que contiene el diagrama o diagramas de capas y, a continuación, haga clic en Propiedades.

  2. En la ventana Propiedades, establezca la propiedad Validate Architecture del proyecto de modelado en True.

    Esto incluye el proyecto de modelado en el proceso de validación.

  3. En el Explorador de soluciones, haga clic en el archivo de diagrama de capas (.layerdiagram) que desea utilizar para la validación.

  4. En la ventana Propiedades, asegúrese de que la propiedad Acción de compilación del diagrama está establecida en Validar.

    Esto incluye el diagrama de capas en el proceso de validación.

Para administrar los errores en la ventana Lista de errores, vea Administrar errores de validación.

Para validar el código automáticamente durante una compilación de Team Foundation

  1. En Team Explorer, haga doble clic en la definición de compilación y, a continuación, haga clic en Proceso.

  2. En Parámetros del proceso de compilación, expanda Compilación y escriba lo siguiente en el parámetro Argumentos de MSBuild:

    /p:ValidateArchitecture=true

Para obtener más información sobre los errores de validación, vea Comprender y resuelva los errores de validación de capas.Para obtener más información acerca de Team Foundation Build, vea:

Solucionar problemas de validación de capas

En la siguiente tabla se describen problemas de validación de capas y su solución.Estos problemas difieren de los errores que son resultado de conflictos entre el código y el diseño.Para obtener más información sobre estos errores, vea Comprender y resuelva los errores de validación de capas.

Problema

Causa posible

Solución

Los errores de validación no se producen como se espera.

La validación no funciona en los diagramas de capas que se copian de otros diagramas de capas en el Explorador de soluciones y que están en el mismo proyecto de modelado.Los diagramas de capas que se copian de esta manera contienen las mismas referencias que el diagrama de capas original.

  1. Agregue un nuevo diagrama de capas al proyecto de modelado.

  2. Copie los elementos del diagrama de capas de origen en el nuevo diagrama.

Comprender y resolver errores de validación de capas

Al validar el código con un diagrama de capas, los errores de validación si el código está en conflicto con el diseño.Por ejemplo, las siguientes condiciones pueden hacer errores de validación para aparecer:

  • Un artefacto se ha asignado a la capa equivocada.En este caso, mueva el artefacto.

  • Un artefacto, como por ejemplo una clase, usa otra clase de forma que hay conflictos con su arquitectura.En este caso, tiene que refactorizar el código para quitar la dependencia.

Para resolver estos errores, actualice el código hasta no aparezcan más errores durante la validación.Puede realizar esta tarea repetitivamente.

La sección siguiente se describe la sintaxis que se utiliza en estos errores, explica el significado de estos errores, y sugiere lo que puede hacer para resolverlos o administrarlos.

Sintaxis

Descripción

ArtefactoN(TipoDeArtefactoN)

ArtefactoN es un artefacto que está asociado a una capa del diagrama de capas.

TipoDeArtefactoN es el tipo del ArtefactoN, por ejemplo, Clase o Método:

MiSolución.MiProyecto.MiClase.MiMétodo(Método)

EspacioDeNombresN

Nombre de un espacio de nombres.

NombreDeCapaN

Nombre de una capa del diagrama de capas.

TipoDeDependencia

Tipo de relación de dependencia entre Artefacto1 y Artefacto2.Por ejemplo, Artefacto1 tiene una relación Llama a con Artefacto2.

Sintaxis de error

Descripción del error

AV0001: Dependencia no válida: Artefacto1(TipoDeArtefacto1)--> Artefacto2(TipoDeArtefacto2)

   Capas: NombreDeCapa1, NombreDeCapa2 | Dependencias: TipoDeDependencia

Artefacto1 de NombreDeCapa1 no debe tener dependencias con Artefacto2 de NombreDeCapa2 porque NombreDeCapa1 no tiene una dependencia directa con NombreDeCapa2.

AV1001: Espacio de nombres no válido: Artefacto

   Capa: NombreDeCapa | Espacio de nombres requerido: NombreDeEspacioDeNombres1 | Espacio de nombres actual: NombreDeEspacioDeNombres2

Es necesario que los artefactos asociados a NombreDeCapa pertenezcan a NombreDeEspacioDeNombres1.Artefacto está en NombreDeEspacioDeNombres2, no en NombreDeEspacioDeNombres1.

AV1002: Uso de un espacio de nombres prohibido: Artefacto1(TipoDeArtefacto1) | Artefacto2(TipoDeArtefacto2)

   Capa: NombreDeCapa | Espacio de nombres prohibido: NombreDeEspacioDeNombres | Dependencias: TipoDeDependencia

Es necesario que los artefactos asociados a NombreDeCapa no dependan de NombreDeEspacioDeNombres.Artefacto1 no puede depender de Artefacto2 porque Artefacto2 está en NombreDeEspacioDeNombres.

AV1003: En espacio de nombres prohibido: Artefacto(TipoDeArtefacto)

   Capa: NombreDeCapa | Espacio de nombres prohibido: NombreDeEspacioDeNombres

Es necesario que los artefactos asociados a NombreDeCapa no pertenezcan aNombreDeEspacioDeNombres.Artefacto pertenece a NombreDeEspacioDeNombres.

AV3001: Falta un vínculo: la capa 'NombreDeCapa' está vinculada a 'Artefacto' que no se encuentra.¿Falta una referencia de ensamblado?

La capa NombreDeCapa está vinculada con un artefacto que no se encuentra.Por ejemplo, es posible que falte un vínculo a una clase porque en el proyecto de modelado falta una referencia al ensamblado que contiene la clase.

AV9001: El análisis de arquitectura encontró errores internos.Puede que los resultados no estén completos.Vea el registro detallado de eventos de compilación o la ventana de salida para obtener más información.

Vea el evento de compilación registrar o la ventana de salida para obtener más detalles.

Vea también

Conceptos

Validar el sistema durante el desarrollo