Partager via


Valider du code avec des diagrammes de couche

Pour vous assurer que le code n'est pas en conflit avec sa conception, validez votre code avec des diagrammes de couche dans Visual Studio Ultimate et Premium Visual Studio. Cela peut vous aider :

  • Recherchez des conflits entre des dépendances dans votre code et des dépendances sur le diagramme de couche.

  • Rechercher des dépendances qui peuvent être affectées par les modifications proposées.

    Par exemple, vous pouvez modifier le diagramme de couche pour afficher les modifications apportées à l'architecture potentielle, puis valider le code afin de consulter les dépendances concernées.

  • Refactoriser ou migrer le code vers une conception différente.

    Recherchez le code ou les dépendances qui requièrent du travail lorsque vous déplacez le code vers une architecture différente.

Vous pouvez valider manuellement le code depuis un diagramme de couche ouvert dans Visual Studio ou depuis une invite de commandes. Vous pouvez également valider le code automatiquement en exécutant des builds locales ou Team Foundation Build. Voir la vidéo Channel 9: Utilisation de diagrammes de couche pour concevoir et valider votre architecture.

Important

Si vous souhaitez effectuer la validation de couche à l'aide de Team Foundation Build, vous devez également installer Visual Studio Ultimate sur votre serveur de builds.

Spécifications

  • Visual Studio Ultimate ou Visual Studio Premium

  • Visual Studio Ultimate sur votre serveur Team Foundation Build pour valider le code automatiquement avec Team Foundation Build

  • Une solution qui inclut un projet de modélisation avec un diagramme de couche. Ce diagramme de couche doit être lié aux artefacts dans les projets Visual C# .NET ou Visual Basic .NET que vous souhaitez valider. Consultez Créer des diagrammes de couche à partir du code.

  • Voir si un élément prend en charge la validation

  • Inclure d'autres projets et assemblys .NET pour la validation

  • Valider manuellement le code

  • Valider automatiquement le code

  • Résoudre les problèmes de validation de couche

  • Comprendre et résoudre des erreurs de validation de couche

Voir si un élément prend en charge la validation

Vous pouvez lier des couches à des sites web, des documents Office, des fichiers texte brut et des fichiers de projets partagés entre plusieurs applications, mais le processus de validation ne les inclura pas. Aucune erreur de validation n'apparaîtra pour des références à des projets ou à des assemblys qui sont liés à des couches distinctes, lorsqu'aucune dépendance n'apparaît entre ces couches. De telles références ne sont pas considérées comme des dépendances à moins que le code utilise ces références.

  1. Sur le diagramme de couche, sélectionnez une ou plusieurs couches, cliquez avec le bouton droit sur votre sélection, puis cliquez sur Afficher les liens.

  2. Dans l'Explorateur de couches, recherchez la colonne Prend en charge la validation. Si la valeur faux lui est affectée, l'élément ne peut pas être validé.

Inclure d'autres projets et assemblys .NET pour la validation

Lorsque vous faites glisser des éléments vers le diagramme de couche, les références aux assemblys .NET ou aux projets correspondants sont ajoutées automatiquement au dossier Références de couche dans le projet de modélisation. Ce dossier contient des références aux assemblys et aux projets analysés pendant la validation. Vous pouvez également inclure d'autres assemblys .NET et des projets pour qu'ils soient validés sans les faire glisser manuellement vers le diagramme de couche.

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet de modélisation ou sur le dossier Références de couche, puis cliquez sur Ajouter une référence.

  2. Dans la boîte de dialogue Ajouter une référence, sélectionnez les assemblys ou les projets, puis cliquez sur OK.

Valider manuellement le code

Si vous un diagramme de couche ouvert est lié aux éléments de solution, exécutez la commande de raccourci Valider du diagramme. Vous pouvez également utiliser l'invite de commandes pour exécuter la commande msbuild avec la propriété personnalisée /p:ValidateArchitecture définie sur True. Par exemple, lorsque vous apportez des modifications dans le code, exécutez la validation de couche régulièrement afin de pouvoir intercepter tôt les conflits de dépendance.

Pour valider le code à partir d'un diagramme de couche ouvert

  1. Cliquez avec le bouton droit sur la surface de diagramme, puis cliquez sur Valider l'architecture.

    Notes

    Par défaut, la propriété Action de génération sur le fichier de diagramme de couche (.layerdiagram) a la valeur Valider afin que le diagramme soit inclus dans le processus de validation.

    La fenêtre Liste d'erreurs signale toutes les erreurs qui se produisent. Pour plus d'informations sur les erreurs de validation, consultez Comprendre et résoudre les erreurs de validation de couche.

  2. Pour afficher la source de chaque erreur, double-cliquez sur l'erreur dans la fenêtre Liste d'erreurs.

    Notes

    Visual Studio peut afficher un graphique de dépendance à la place de la source de l'erreur.Cela se produit lorsque le code a une dépendance sur un assembly qui n'est pas spécifié par le diagramme de couche ou lorsqu'une dépendance spécifiée par le diagramme de couche manque dans le code.Examinez le graphique de dépendance ou le code pour déterminer si la dépendance doit exister.Pour plus d'informations sur les graphiques de dépendance, consultez Mapper les dépendances dans votre code dans des graphiques de dépendance.

  3. Pour gérer les erreurs, consultez Gérer les erreurs de validation.

Pour valider le code à l'invite de commandes

  1. Ouvrez l'invite de commandes Visual Studio.

  2. Choisissez l'une des valeurs suivantes :

    • Pour valider le code par rapport à un projet de modélisation spécifique dans la solution, exécutez MSBuild avec la propriété personnalisée ci-dessous.

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

      ou

      Accédez au dossier qui contient le fichier du projet de modélisation (.modelproj) et le diagramme de couche, puis exécutez MSBuild avec la propriété personnalisée suivante :

      msbuild /p:ValidateArchitecture=true 
      
    • Pour valider le code par rapport à tous les projets de modélisation dans la solution, exécutez MSBuild avec la propriété personnalisée suivante :

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

      ou

      Accédez au dossier de solution, qui doit contenir un projet de modélisation contenant un diagramme de couche, puis exécutez MSBuild avec la propriété personnalisée suivante :

      msbuild /p:ValidateArchitecture=true
      

    Toutes les erreurs qui ont lieu seront répertoriées. Pour plus d'informations sur MSBuild, consultez MSBuild et MSBuild, tâche.

Pour plus d'informations sur les erreurs de validation, consultez Comprendre et résoudre les erreurs de validation de couche.

Gérer les erreurs de validation

Pendant le processus de développement, vous pouvez supprimer certains conflits signalés pendant la validation. Par exemple, vous pouvez supprimer des erreurs que vous êtes déjà en train de traiter qui ne sont pas pertinentes dans le cadre de votre scénario spécifique. Lorsque vous supprimez une erreur, il est conseillé d'entrer un élément de travail dans Team Foundation.

Pour créer un élément de travail pour une erreur de validation

  • Dans la fenêtre Liste d'erreurs, cliquez avec le bouton droit sur l'erreur, pointez sur Créer un élément de travail, puis cliquez sur le type d'élément de travail que vous voulez créer.

Utilisez les tâches suivantes pour gérer les erreurs de validation dans la fenêtre Liste d'erreurs :

En

Procédez comme suit

Supprimer des erreurs sélectionnées pendant la validation

Cliquez avec le bouton droit sur une ou plusieurs erreurs sélectionnées, pointez sur Gérer les erreurs de validation, puis cliquez sur Supprimer les erreurs.

Les erreurs supprimées apparaissent barrées. Lors de la prochaine validation, ces erreurs ne s'afficheront pas.

Les erreurs supprimées sont suivies dans un fichier .suppressions pour le fichier de diagramme de couche correspondant.

Cesser de supprimer des erreurs sélectionnées

Cliquez avec le bouton droit sur la ou les erreurs supprimées sélectionnées, pointez sur Gérer les erreurs de validation, puis cliquez sur Arrêter la suppression des erreurs.

Les erreurs supprimées qui sont sélectionnées s'afficheront lors de la prochaine validation.

Restaurer toutes les erreurs supprimées dans la fenêtre Liste d'erreurs

Cliquez avec le bouton droit n'importe où dans la fenêtre Liste d'erreurs, pointez sur Gérer les erreurs de validation, puis cliquez sur Afficher les erreurs supprimées.

Masquer toutes les erreurs supprimées de la fenêtre Liste d'erreurs

Cliquez avec le bouton droit n'importe où dans la fenêtre Liste d'erreurs, pointez sur Gérer les erreurs de validation, puis cliquez sur Masquer les erreurs supprimées.

Valider automatiquement le code

Exécutez la validation de couche chaque fois que vous exécutez une build locale. Si votre équipe utilise Team Foundation Build, vous pouvez exécuter la validation de couche à l'aide d'archivages contrôlés, que vous pouvez spécifier en créant une tâche MSBuild personnalisée, puis utiliser des rapports de build pour collecter les erreurs de validation. Pour créer des builds d'archivage contrôlé, consultez Utiliser un processus de génération d'archivage contrôlé pour la validation des modifications.

Pour valider automatiquement le code au cours d'une build locale

  • Utilisez un éditeur de texte pour ouvrir le fichier projet de modélisation (.modelproj), puis y inclure la propriété suivante :
<ValidateArchitecture>true</ValidateArchitecture>

ou

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet de modélisation qui contient le ou les diagrammes de couche, puis cliquez sur Propriétés.

  2. Dans la fenêtre Propriétés, affectez à la propriété Valider l'architecture du projet de modélisation la valeur True.

    Cela inclut le projet de modélisation dans le processus de validation.

  3. Dans l'Explorateur de solutions, cliquez sur le fichier du diagramme de couche (.layerdiagram) que vous voulez utiliser pour la validation.

  4. Dans la fenêtre Propriétés, assurez-vous que la propriété Action de génération du diagramme a la valeur Valider.

    Cela inclut le diagramme de couche dans le processus de validation.

Pour gérer les erreurs de validation dans la fenêtre de liste des erreurs, consultez Gérer les erreurs de validation :

Pour valider automatiquement le code au cours d'une build Team Foundation

  1. Dans Team Explorer, double-cliquez sur la définition de build, puis sur Processus.

  2. Sous Paramètres du processus de génération, développez Compilation, puis tapez le texte suivant dans le paramètre Arguments MSBuild :

    /p: ValidateArchitecture=true

Pour plus d'informations sur les erreurs de validation, consultez Comprendre et résoudre les erreurs de validation de couche. Pour plus d'informations sur Team Foundation Build, consultez :

Résoudre les problèmes de validation de couche

Le tableau suivant décrit les problèmes liés à la validation de couche et propose une résolution. Ces problèmes ne sont pas liés aux erreurs qui résultent de conflits entre le code et la conception. Pour plus d'informations concernant ces erreurs de validation, consultez Comprendre et résoudre les erreurs de validation de couche.

Problème

Cause possible

Solution

Les erreurs de validation ne se produisent pas comme prévu.

La validation ne fonctionne pas avec les diagrammes de couche copiés à partir d'autres diagrammes de couche dans l'Explorateur de solutions, et ceux se trouvant dans le même projet de modélisation. Les diagrammes de couche copiés de cette façon contiennent les mêmes références que le diagramme de couche d'origine.

  1. Ajoutez un nouveau diagramme de couche au projet de modélisation.

  2. Copiez les éléments depuis le diagramme de couche source vers le nouveau diagramme.

Compréhension et résolution des erreurs de validation de couche

Lorsque vous validez du code par rapport à un diagramme de couche, des erreurs de validation se produisent si le code est en conflit avec la conception. Par exemple, les conditions suivantes peuvent provoquer des erreurs de validation :

  • Un artefact est assigné à une couche inappropriée. Dans ce cas, déplacez l'artefact.

  • Un artefact, tel qu'une classe, utilise une autre classe d'une manière qui génère un conflit avec votre architecture. Dans ce cas, refactorisez le code pour supprimer la dépendance.

Pour résoudre ces erreurs, mettez à jour le code de façon à ce que la validation ne génère plus d'erreur. Vous pouvez effectuer cette tâche de façon itérative.

La section suivante décrit la syntaxe utilisée lors de ces erreurs, explique la signification de ces erreurs, et suggère des opérations pour les résoudre ou les gérer.

Syntaxe

Description

ArtifactN(ArtifactTypeN)

ArtifactN est un artefact associé à une couche sur le diagramme de couche.

ArtifactTypeN est le type de ArtifactN comme une Classe ou une Méthode. Par exemple :

MySolution.MyProject.MyClass.MyMethod(Method)

NamespaceNameN

Nom d'un espace de noms.

LayerNameN

Nom d'une couche sur le diagramme de couche.

DependencyType

Type de relation de dépendance entre Artifact1 et Artifact2. Par exemple, Artifact1 a une relation Appels avec Artifact2.

Syntaxe de l'erreur

Description de l'erreur

AV0001 : dépendance non valide : Artifact1(ArtifactType1) --> Artifact2(ArtifactType2)

   Couches : LayerName1, LayerName2 | Dépendances : DependencyType

Artifact1 dans LayerName1 ne doit pas avoir de dépendance vis-à-vis de Artifact2 dans LayerName2, car LayerName1 n'a pas de dépendance directe vis-à-vis de LayerName2.

AV1001 : espace de noms non valide : Artifact

   Couche : LayerName | Espace de noms requis : NamespaceName1 | Espace de noms actuel : NamespaceName2

LayerName exige que les artefacts qui lui sont associés appartiennent à NamespaceName1. Artifact se trouve dans NamespaceName2, et non dans NamespaceName1.

AV0002 : dépend d'un espace de noms interdit : Artifact1(ArtifactType1) | Artifact2(ArtifactType2)

   Couche : LayerName | Espace de noms interdit : NamespaceName | Dépendances : DependencyType

LayerName exige que les artefacts qui lui sont associés ne dépendent pas de NamespaceName. Artifact1 ne peut pas dépendre de Artifact2, car Artifact2 se trouve dans NamespaceName.

AV1003 : dans l'espace de noms interdit : Artifact(ArtifactType)

   Couche : LayerName | Espace de noms interdit : NamespaceName

LayerName interdit le fait que les artefacts qui lui sont associés puissent appartenir à NamespaceName1. Artifact appartient à NamespaceName.

AV3001 : lien manquant : la couche 'LayerName' est liée à 'Atifact' qui est introuvable. Vérifiez qu'il ne manque aucune référence d'assembly.

LayerName est lié à un artefact qui est introuvable. Par exemple, il manque peut-être un lien vers une classe car le projet de modélisation ne comporte pas de référence à l'assembly contenant la classe.

AV9001 : erreurs internes détectées lors de l'analyse de l'architecture. Il est possible que les résultats ne soient pas complets. Pour plus d'informations, consultez le journal des événements de build ou la fenêtre Sortie.

Consultez le journal détaillé des événements de build ou la fenêtre Sortie pour plus de détails.

Voir aussi

Concepts

Validation de votre système lors du développement