Valider du code avec des diagrammes de couche
Pour s'assurer que le code n'est pas en conflit avec sa conception, vous pouvez valider le code à des diagrammes de couche dans Visual Studio ultimate et premium de Visual Studio.Cela peut vous aider :
Recherchez les conflits entre les 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.
Rechercher du code ou les dépendances qui requièrent le travail lorsque vous déplacez le code à une architecture différente.
Vous pouvez valider manuellement le code d'un diagramme de couche ouvert dans Visual Studio ou une invite de commandes.Vous pouvez également valider automatiquement le code en exécutant des builds locale ou Team Foundation Build.Consultez Vidéo de canal la 9 : Conception et valider votre architecture à l'aide de diagrammes de couche.
Configuration requise
Visual Studio ultimate ou premium de Visual Studio
Une solution qui contient 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.
Pour
Vérifiez si un élément prend en charge la validation
Ajoutez d'autres assemblys et projets.NET pour la validation
Validez manuellement le code
Validez automatiquement le code
Dépannez les problèmes de validation de couche
Comprendre et corrigez les erreurs de validation de couche
Vérifiez si un élément prend en charge la validation
Sur le diagramme de couche, sélectionnez un ou plusieurs couches, cliquez avec le bouton droit sur votre sélection, puis cliquez sur Afficher les liens.
Dans l'Explorateur de couches, recherchez la colonne Prend en charge la validation .Si la valeur est false, l'élément ne prend pas en charge la validation.
Vous pouvez lier des sites Web, les documents Office, et les fichiers de texte brut aux couches, mais le processus de validation ne les inclut pas.Les erreurs de validation n'apparaissent pas pour les références aux projets ou des assemblys qui sont liés pour séparer les couches lorsque dépendance n'apparaît pas 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.
Ajoutez d'autres assemblys et projets.NET pour la validation
Lorsque vous faites glisser des éléments vers le diagramme de couche, des références aux assemblys ou aux projets correspondants.NET 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 projets qui sont analysés pendant la validation.Vous pouvez inclure d'autres assemblys et projets.NET pour la validation sans manuellement les faire glisser vers le diagramme de couche.
Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet de modélisation ou le dossier Références de couche, puis cliquez sur Ajouter une référence.
Dans la boîte de dialogue Ajouter une référence, sélectionnez les assemblys ou les projets, puis cliquez sur OK.
Validez manuellement le code
Si vous avez un diagramme de couche ouvert qui est lié aux éléments de solution, vous pouvez exécuter la commande de raccourci Valider du diagramme.Vous pouvez également utiliser l'invite de commande pour exécuter la commande d' msbuild avec le jeu de propriétés personnalisé d' /p:ValidateArchitecture à True.Par exemple, lorsque vous apportez des modifications dans le code, exécutez la validation de couche régulièrement afin de pouvoir intercepter les conflits de dépendance haut.
Pour valider le code à partir d'un diagramme de couche ouvert
Cliquez avec le bouton droit sur la surface de diagramme, puis cliquez sur Valider l'architecture.
[!REMARQUE]
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 l' Comprendre et corrigez les erreurs de validation de couche.
Pour afficher la source de chaque erreur, double-cliquez sur l'erreur dans la fenêtre Liste d'erreurs.
[!REMARQUE]
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 Visualiser des dépendances de code sur les graphiques de dépendance.
Pour gérer les erreurs, consultez l' Gérer les erreurs de validation.
Pour valider le code à l'invite de commandes
Ouvrez l'invite de commandes Visual Studio.
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 l' Comprendre et corrigez 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 :
Pour |
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. |
Validez automatiquement le code
Vous pouvez exécuter 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 avec les enregistrements déclenchés, que vous pouvez spécifier en créant une tâche personnalisée MSBuild, et utiliser des rapports de build pour collecter les erreurs de validation. Pour créer des builds d'archivage contrôlé, consultez Définir 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 -
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.
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.
Dans l'Explorateur de solutions, cliquez sur le fichier du diagramme de couche (.layerdiagram) que vous voulez utiliser pour la validation.
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 dans la fenêtre liste d'erreurs, consultez l' Gérer les erreurs de validation.
Pour valider automatiquement le code au cours de Team Foundation Build
Dans Team Explorer, double-cliquez sur la définition de build, puis sur Processus.
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 l' Comprendre et corrigez les erreurs de validation de couche.Pour plus d'informations sur Team Foundation Build, consultez :
Dépannez 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 sur ces erreurs, consultez l' Comprendre et corrigez les erreurs de validation de couche.
Problème |
Cause possible |
Ré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. |
|
Comprendre et la résolution des erreurs de validation de couche
Lorsque vous validez le code par rapport à un diagramme de couche, les erreurs de validation se produisent lorsque 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 dans ces erreurs, explique la signification de ces erreurs, et suggère que vous pouvez faire pour les résoudre ou gérer.
Syntaxe |
Description |
---|---|
ArtefactN(TypeArtefactN) |
ArtefactN est un artefact associé à une couche sur le diagramme de couche. TypeArtefactN est le type d'ArtefactN, tel que Class ou Method. Exemple : MySolution.MyProject.MyClass.MyMethod(Method) |
NomEspaceNomsN |
Nom d'un espace de noms. |
NomCoucheN |
Nom d'une couche sur le diagramme de couche. |
TypeDépendance |
Type de relation de dépendance entre Artefact1 et Artefact2.Par exemple, Artefact1 a une relation de type Calls (Appelle) avec Artefact2. |
Syntaxe d'erreur |
Description de l'erreur |
---|---|
AV0001 : dépendance non valide : Artefact1(TypeArtefact1)--> Artefact2(TypeArtefact2) Couches : NomCouche1, NomCouche2 | Dépendances : TypeDépendance |
Artefact1 de NomCouche1 ne doit pas avoir de dépendance sur Artefact2 de NomCouche2 car NomCouche1 n'a pas de dépendance directe sur NomCouche2. |
AV1001 : espace de noms non valide : Artefact Couche : NomCouche | Espace de noms requis : NomEspaceNoms1 | Espace de noms actuel : NomEspaceNoms2 |
NomCouche requiert que ses artefacts associés appartiennent à NomEspaceNoms1.Artefact se trouve dans NomEspaceNoms2, et pas dans NomEspaceNoms1. |
AV1002 : utilisation d'un espace de noms interdit : Artefact1(TypeArtefact1) | Artefact2(TypeArtefact2) Couche : NomCouche | Espace de noms interdit : NomEspaceNoms | Dépendances : TypeDépendance |
NomCouche requiert que ses artefacts associés ne dépendent pas de NomEspaceNoms.Artefact1 ne peut pas dépendre d'Artefact2 car Artefact2 se trouve dans NomEspaceNoms. |
AV1003 : dans l'espace de noms interdit : Artefact(TypeArtefact) Couche : NomCouche | Espace de noms interdit : NomEspaceNoms |
NomCouche requiert que ses artefacts associés n'appartiennent pas à NomEspaceNoms.Artefact appartient à NomEspaceNoms. |
AV3001 : liaison manquante : la couche 'NomCouche' est liée à 'Artefact' qui est introuvable.Une référence d'assembly est-elle manquante ? |
NomCouche 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 ou la fenêtre Sortie d'événements de build pour plus de détails. |