Compartir a través de


Validar código con diagramas de capas

Para asegurarse de que el código no entre en conflicto con el diseño, puede validarlo con diagramas de capas en Visual Studio Ultimate y Visual Studio Premium. Esto puede ser útil para:

  • Encontrar 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.

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

Puede validar código manualmente desde un diagrama de capas abierto en Visual Studio o desde un símbolo del sistema. También puede validar código automáticamente al ejecutar compilaciones locales o Team Foundation Build. Vea el vídeo de Channel 9 sobre cómo diseñar y validar la arquitectura mediante diagramas de capas.

Importante

Si desea ejecutar la validación de capa con Team Foundation Build, debe instalar también Visual Studio Ultimate en el servidor de compilación.

Requisitos

  • Visual Studio Ultimate o Visual Studio Premium.

  • Visual Studio Ultimate en el servidor de Team Foundation Build para validar código automáticamente con Team Foundation Build.

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

  • Ver si un elemento admite validación

  • Incluir otros ensamblados y proyectos de .NET para su validación

  • Validar código manualmente

  • Validar código automáticamente

  • Solucionar problemas de validación de capas

  • Entender y resolver errores de validación de capas

Ver si un elemento admite validación

Puede vincular capas a sitios web, documentos de Office, archivos de texto sin formato y archivos de proyectos que se comparten entre varias aplicaciones, pero el proceso de validación no los incluirá. Los errores de validación no aparecerán para las 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.

  1. En el diagrama de capas, seleccione una o varias capas, haga clic con el botón secundario en su selección y, a continuación, haga clic en Ver 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.

Incluir otros ensamblados y proyectos de .NET para su validación

Al arrastrar los elementos al diagrama de capas, se agregan automáticamente a la carpeta Referencias de capa del proyecto de modelado las referencias a los ensamblados o proyectos de .NET correspondientes. 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 arrastrarlos manualmente al diagrama de capas.

  1. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto de modelado o en la carpeta Referencias de capa y, a continuación, 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 código manualmente

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

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, consulte Entender y resolver 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 Asignar dependencias en el código mediante gráficos de dependencias.

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

Para validar 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, consulte Entender y resolver errores de validación de capas.

Administrar 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 código automáticamente

Puede realizar la validación de capas cada vez que ejecute una compilación local. Si el equipo usa Team Foundation Build, podrá realizar la validación de capas con protecciones controladas, que se pueden especificar creando una tarea MSBuild personalizada, y usar informes de compilación para recopilar los errores de validación. Para crear compilaciones de protección controlada, consulte Utilizar un proceso de compilación de protección controlada para validar cambios.

Para validar 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, consulte Administrar errores de validación.

Para validar código automáticamente durante una compilación con Team Foundation Build

  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, consulte Entender y resolver 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, consulte Entender y resolver 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.

Entender y resolver errores de validación de capas

Cuando se valida el código con un diagrama de capas, se producen errores de validación si el código entra en conflicto con el diseño. Por ejemplo, las siguientes condiciones podrían producir errores de validación:

  • 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.

En la sección siguiente se describe la sintaxis que se usa en estos errores, se explica el significado de los mismos y se sugiere qué se puede hacer para resolverlos o administrarlos.

Sintaxis

Descripción

ArtifactN(ArtifactTypeN)

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

ArtifactTypeN es el tipo de ArtifactN, como una Clase o un Método, por ejemplo:

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

NamespaceNameN

Nombre de un espacio de nombres.

LayerNameN

Nombre de una capa del diagrama de capas.

DependencyType

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

Sintaxis del error

Descripción del error

AV0001: Dependencia no válida: Artifact1(ArtifactType1) --> Artifact2(ArtifactType2)

   Capas: LayerName1, LayerName2 | Dependencias: DependencyType

Artifact1 de LayerName1 no debe tener dependencias con Artifact2 de LayerName2, ya que LayerName1 no tiene una dependencia directa con LayerName2.

AV1001: Espacio de nombres no válido: Artifact

   Capa: LayerName | Espacio de nombres requerido: NamespaceName1 | Espacio de nombres actual: NamespaceName2

LayerName requiere que sus artefactos asociados pertenezcan a NamespaceName1. Artifact está en NamespaceName2, no en NamespaceName1.

AV1002: Depende de un espacio de nombres prohibido: Artifact1(ArtifactType1) | Artifact2(ArtifactType2)

   Capa: LayerName | Espacio de nombres prohibido: NamespaceName | Dependencias: DependencyType

LayerName requiere que sus artefactos asociados no dependan de NamespaceName. Artifact1 no puede depender de Artifact2 porque Artifact2 está en NamespaceName.

AV1003: En espacio de nombres prohibido: Artifact(ArtifactType)

   Capa: LayerName | Espacio de nombres prohibido: NamespaceName

LayerName requiere que sus artefactos asociados no pertenezcan a NamespaceName. Artifact pertenece a NamespaceName.

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

LayerName está vinculada a 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 registro de eventos de compilación o la ventana de salida para obtener más información.

Vea también

Conceptos

Validar el sistema durante el desarrollo