Überprüfen von Code mit Ebenendiagrammen

Um sicherzustellen, dass der Code dem Entwurf nicht widerspricht, können Sie Ihren Code in Visual Studio Ultimate und Visual Studio Premium mit Ebenendiagrammen überprüfen. Dadurch wird Folgendes ermöglicht:

  • Suchen von Konflikten zwischen Abhängigkeiten im Code und Abhängigkeiten im Ebenendiagramm

  • Ermitteln von Abhängigkeiten, die möglicherweise von vorgeschlagenen Änderungen betroffen sind

    Sie können z. B. das Ebenendiagramm bearbeiten, um potenzielle Architekturänderungen darzustellen, und dann den Code überprüfen, um die betroffenen Abhängigkeiten zu ermitteln.

  • Umgestalten oder Migrieren von Code in einen anderen Entwurf

    Ermitteln von Code oder Abhängigkeiten, die bei der Umstellung des Codes auf eine andere Architektur noch bearbeitet werden müssen

Sie können Code über ein geöffnetes Ebenendiagramm in Visual Studio oder eine Eingabeaufforderung manuell überprüfen. Sie können Code beim Ausführen von lokalen Builds oder Team Foundation Build auch automatisch überprüfen. Weitere Informationen finden Sie unter Visual Studio Ultimate 2012: Verwenden von Ebenendiagrammen zum Entwerfen und Überprüfen der Architektur (Channel 9-Video).

Wichtig

Wenn Sie die Ebenenvalidierung mit Team Foundation Build ausführen möchten, muss auch Visual Studio Ultimate auf dem Buildserver installiert werden.

Anforderungen

  • Visual Studio Ultimate oder Visual Studio Premium

  • Visual Studio Ultimate auf dem Team Foundation Build-Server, um Code mit Team Foundation Build automatisch zu überprüfen

  • Eine Projektmappe, die über ein Modellierungsprojekt mit einem Ebenendiagramm verfügt. Dieses Ebenendiagramm muss mit Artefakten in Visual C# .NET- oder Visual Basic .NET-Projekten verknüpft sein, die Sie überprüfen möchten. Siehe Erstellen von Ebenendiagrammen aus Code.

  • Sehen, ob ein Element die Validierung unterstützt

  • Andere .NET-Assemblys und Projekte zur Validierung einschließen

  • Code manuell überprüfen

  • Code automatisch überprüfen

  • Ebenenvalidierungsprobleme beheben

  • Verstehen und Lösen von Ebenenvalidierungsfehlern

Sehen, ob ein Element die Validierung unterstützt

Sie können Ebenen mit Websites, Office-Dokumenten, Nur-Text-Dateien und Dateien in Projekten verknüpfen, die von mehreren Apps gemeinsam verwendet werden, jedoch nicht im Validierungsprozess enthalten sind. Für Verweise auf Projekte oder Assemblys, die mit separaten Ebenen verknüpft sind, treten keine Überprüfungsfehler auf, wenn keine Abhängigkeiten zwischen diesen Ebenen angezeigt werden. Solche Verweise werden nur dann als Abhängigkeiten betrachtet, wenn sie im Code verwendet werden.

  1. Wählen Sie im Ebenendiagramm eine oder mehrere Ebenen aus, klicken Sie mit der rechten Maustaste auf die Auswahl, und klicken Sie dann auf Links anzeigen.

  2. Überprüfen Sie im Ebenen-Explorer die Spalte Unterstützt die Validierung. Wenn der Wert "false" ist, wird die Überprüfung vom Element nicht unterstützt.

Andere .NET-Assemblys und Projekte zur Validierung einschließen

Wenn Sie Elemente in das Ebenendiagramm ziehen, werden dem Ordner Ebenenverweise im Modellierungsprojekt automatisch Verweise auf die entsprechenden .NET-Assemblys oder Projekte hinzugefügt. Dieser Ordner enthält Verweise auf die Assemblys und Projekte, die bei der Überprüfung analysiert werden. Sie können weitere .NET-Assemblys und -Projekte zur Überprüfung hinzufügen, ohne diese manuell in das Ebenendiagramm zu ziehen.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Modellierungsprojekt oder den Ordner Ebenenverweise, und klicken Sie dann auf Verweis hinzufügen.

  2. Wählen Sie im Dialogfeld Verweis hinzufügen die Assemblys oder Projekte aus, und klicken Sie anschließend auf OK.

Code manuell überprüfen

Wenn Sie ein geöffnetes Ebenendiagramm haben, das mit Projektmappenelementen verknüpft ist, können Sie den Kurzbefehl Überprüfen im Diagramm ausführen. Sie können auch den Befehl msbuild über die Eingabeaufforderung ausführen. Dabei muss die benutzerdefinierte /p:ValidateArchitecture-Eigenschaft auf True festgelegt sein. Bei Codeänderungen sollten Sie beispielsweise regelmäßig eine Ebenenvalidierung durchführen, um Abhängigkeitskonflikte frühzeitig lösen zu können.

So überprüfen Sie Code in einem geöffneten Ebenendiagramm

  1. Klicken Sie mit der rechten Maustaste auf die Diagrammoberfläche, und klicken Sie dann auf Architektur überprüfen.

    Hinweis

    Die Eigenschaft Buildvorgang in der Ebenendiagrammdatei (.layerdiagram) ist standardmäßig auf Überprüfen festgelegt, sodass das Diagramm in den Validierungsvorgang eingeschlossen wird.

    Im Fenster Fehlerliste werden ggf. auftretende Fehler angezeigt. Weitere Informationen zu Überprüfungsfehlern finden Sie unter Verstehen und Lösen von Ebenenvalidierungsfehlern.

  2. Um die Quelle der einzelnen Fehler anzuzeigen, doppelklicken Sie im Fenster Fehlerliste auf den Fehler.

    Hinweis

    Visual Studio zeigt möglicherweise anstelle der Quelle des Fehlers ein Abhängigkeitsdiagramm an.Dies ist der Fall, wenn der Code eine Abhängigkeit von einer Assembly enthält, die nicht im Ebenendiagramm angegeben ist, oder wenn im Code eine im Ebenendiagramm angegebene Abhängigkeit fehlt.Überprüfen Sie das Abhängigkeitsdiagramm oder den Code, um festzustellen, ob die Abhängigkeit vorhanden sein sollte.Weitere Informationen zu Abhängigkeitsdiagrammen finden Sie unter Zuordnen von Abhängigkeiten im Code von Abhängigkeitsdiagrammen.

  3. Informationen zum Verwalten von Fehlern finden Sie unter Verwalten von Überprüfungsfehlern.

So überprüfen Sie Code an der Eingabeaufforderung

  1. Öffnen Sie die Visual Studio-Eingabeaufforderung.

  2. Wählen Sie eine der folgenden Optionen aus:

    • Wenn Sie Code anhand eines bestimmten Modellierungsprojekts in der Projektmappe überprüfen möchten, führen Sie MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus.

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

      - oder -

      Navigieren Sie zum Ordner mit der Modellierungsprojektdatei (.modelproj) und dem Ebenendiagramm, und führen Sie MSBuild dann mit der folgenden benutzerdefinierten Eigenschaft aus:

      msbuild /p:ValidateArchitecture=true 
      
    • Wenn Sie Code anhand aller Modellierungsprojekte in der Projektmappe überprüfen möchten, führen Sie MSBuild mit der folgenden benutzerdefinierten Eigenschaft aus:

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

      - oder -

      Navigieren Sie zu einem Projektmappenordner, der ein Modellierungsprojekt mit einem Ebenendiagramm enthält, und führen Sie MSBuild dann mit der folgenden benutzerdefinierten Eigenschaft aus:

      msbuild /p:ValidateArchitecture=true
      

    Alle aufgetretenen Fehler werden aufgelistet. Weitere Informationen zu MSBuild finden Sie unter MSBuild und MSBuild-Aufgabe.

Weitere Informationen zu Überprüfungsfehlern finden Sie unter Verstehen und Lösen von Ebenenvalidierungsfehlern.

Validierungsfehler verwalten

Während des Entwicklungsprozesses können Sie ggf. einige der Konflikte unterdrücken, die während der Validierung gemeldet werden. Beispielsweise können Sie Fehler unterdrücken, die Sie bereits behandeln oder die für das spezifische Szenario nicht relevant sind. Wenn Sie einen Fehler unterdrücken, empfiehlt es sich, in Team Foundation eine Arbeitsaufgabe zu protokollieren.

So erstellen Sie eine Arbeitsaufgabe für einen Validierungsfehler

  • Klicken Sie im Fenster Fehlerliste mit der rechten Maustaste auf den Fehler, zeigen Sie auf Arbeitsaufgabe erstellen, und klicken Sie anschließend auf den zu erstellenden Arbeitsaufgabentyp.

Mithilfe dieser Aufgaben können Sie Validierungsfehler im Fenster Fehlerliste unterdrücken:

So wird's gemacht

Schritte

Unterdrücken von ausgewählten Fehlern während der Validierung

Klicken Sie mit der rechten Maustaste auf den oder die ausgewählten Fehler, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie anschließend auf Fehler unterdrücken.

Die unterdrückten Fehler werden durchgestrichen dargestellt. Beim nächsten Ausführen der Validierung werden diese Fehler nicht mehr angezeigt.

Unterdrückte Fehler werden in einer SUPPRESSIONS-Datei für die entsprechende Ebenendiagrammdatei nachverfolgt.

Beenden der Unterdrückung von ausgewählten Fehlern

Klicken Sie mit der rechten Maustaste auf den oder die unterdrückten Fehler, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie dann auf Fehler nicht mehr unterdrücken.

Beim nächsten Ausführen der Validierung werden die ausgewählten unterdrückten Fehler wieder angezeigt.

Wiederherstellen aller unterdrückten Fehler im Fenster Fehlerliste

Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Fenster Fehlerliste, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie dann auf Unterdrückte Fehler anzeigen.

Ausblenden aller unterdrückten Fehler im Fenster Fehlerliste

Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Fenster Fehlerliste, zeigen Sie auf Validierungsfehler unterdrücken, und klicken Sie dann auf Unterdrückte Fehler ausblenden.

Code automatisch überprüfen

Sie können eine Ebenenvalidierung bei jeder Ausführung eines lokalen Builds durchführen. Wenn Team Foundation Build von Ihrem Team verwendet wird, können Sie eine Ebenenvalidierung mit abgegrenzten Eincheckvorgängen durchführen, die Sie angeben können, indem Sie eine benutzerdefinierte MSBuild-Aufgabe erstellen und Überprüfungsfehler mithilfe von Buildberichten sammeln. Informationen zum Erstellen von abgegrenzten Eincheckbuilds finden Sie unter Verwenden eines abgegrenzten Eincheckbuildprozesses zur Überprüfung von Änderungen.

So überprüfen Sie Code automatisch während eines lokalen Builds

  • Öffnen Sie die Modellierungsprojektdatei (.modelproj) mithilfe eines Text-Editors, und fügen Sie dann die folgende Eigenschaft ein:
<ValidateArchitecture>true</ValidateArchitecture>

- oder -

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Modellierungsprojekt, das die Ebenendiagramme enthält, und klicken Sie dann auf Eigenschaften.

  2. Legen Sie im Fenster Eigenschaften die Eigenschaft Architektur überprüfen des Modellierungsprojekts auf True fest.

    Dadurch wird das Modellierungsprojekt in den Validierungsprozess eingeschlossen.

  3. Klicken Sie im Projektmappen-Explorer auf die Ebenendiagrammdatei (.layerdiagram), die Sie zur Validierung verwenden möchten.

  4. Vergewissern Sie sich im Fenster Eigenschaften, dass die Eigenschaft Buildvorgang des Diagramms auf Überprüfen festgelegt ist.

    Dadurch wird das Ebenendiagramm in den Validierungsprozess eingeschlossen.

Informationen zum Verwalten von Fehlern im Fenster "Fehlerliste" finden Sie unter Verwalten von Überprüfungsfehlern.

So überprüfen Sie Code automatisch für einen Team Foundation Build

  1. Doppelklicken Sie in Team Explorer auf die Builddefinition, und klicken Sie dann auf Prozess.

  2. Erweitern Sie unter Buildprozessparameter das Element Kompilierung, und geben Sie Folgendes im Parameter MSBuild-Argumente ein:

    /p:ValidateArchitecture=true

Weitere Informationen zu Überprüfungsfehlern finden Sie unter Verstehen und Lösen von Ebenenvalidierungsfehlern. Weitere Informationen über Team Foundation Build finden Sie hier:

Ebenenvalidierungsprobleme beheben

In der folgenden Tabelle sind Ebenenvalidierungsprobleme und entsprechende Lösungen aufgeführt. Diese Probleme unterscheiden sich von Fehlern, die das Ergebnis von Konflikten zwischen Code und Entwurf sind. Weitere Informationen zu diesen Fehlern finden Sie unter Verstehen und Lösen von Ebenenvalidierungsfehlern.

Problem

Mögliche Ursache

Lösung

Validierungsfehler treten nicht wie erwartet auf.

Die Validierung funktioniert nicht mit Ebenendiagrammen, die aus anderen Ebenendiagrammen im Projektmappen-Explorer kopiert wurden und sich im gleichen Modellierungsprojekt befinden. Ebenendiagramme, die auf diese Weise kopiert werden, enthalten die gleichen Verweise wie das ursprüngliche Ebenendiagramm.

  1. Fügen Sie dem Modellierungsprojekt ein neues Ebenendiagramm hinzu.

  2. Kopieren Sie die Elemente aus dem Quellebenendiagramm in das neue Diagramm.

Verstehen und Lösen von Ebenenvalidierungsfehlern

Beim Überprüfen von Code anhand eines Ebenendiagramms treten Überprüfungsfehler auf, wenn der Code mit dem Entwurf in Konflikt steht. Überprüfungsfehler können beispielsweise unter folgenden Bedingungen auftreten:

  • Ein Artefakt wurde der falschen Ebene zugewiesen. Verschieben Sie in diesem Fall das Artefakt.

  • Von einem Artefakt (beispielsweise einer Klasse) wird eine andere Klasse auf eine Weise verwendet, die einen Konflikt mit der Architektur zur Folge hat. Gestalten Sie in diesem Fall den Code um, um die Abhängigkeit zu entfernen.

Aktualisieren Sie zum Beheben dieser Fehler den Code, bis bei der Validierung keine Fehler mehr angezeigt werden. Diese Aufgabe kann iterativ ausgeführt werden.

Im folgenden Abschnitt wird die Syntax beschrieben, die in diesen Fehlern verwendet wird. Außerdem wird die Bedeutung dieser Fehler erläutert, und es werden Vorschläge zur deren Behebung bzw. Verwaltung gegeben.

Syntax

Beschreibung

ArtifactN(ArtifactTypeN)

ArtifactN ist ein Artefakt, das einer Ebene im Ebenendiagramm zugeordnet ist.

ArtifactTypeN ist der Typ von ArtifactN (beispielsweise eine Klasse oder Methode). Beispiel:

MySolution.MyProject.MyClass.MyMethod(Method)

NamespaceNameN

Der Name eines Namespace.

LayerNameN

Der Name einer Ebene im Ebenendiagramm.

DependencyType

Der Typ der Abhängigkeitsbeziehung zwischen Artifact1 und Artifact2. Beispiel: Artifact1 besitzt eine Beziehung vom Typ Aufrufe zu Artifact2.

Fehlersyntax

Fehlerbeschreibung

AV0001: Ungültige Abhängigkeit: Artifact1(ArtifactType1) --> Artifact2(ArtifactType2)

   Ebenen: LayerName1, LayerName2 | Abhängigkeiten: DependencyType

Artifact1 sollte in LayerName1 keine Abhängigkeit von Artifact2 in LayerName2 aufweisen, da LayerName1 keine direkte Abhängigkeit von LayerName2 besitzt.

AV1001: Ungültiger Namespace: Artifact

   Ebene: LayerName | Erforderlicher Namespace: NamespaceName1 | Aktueller Namespace: NamespaceName2

Die zugeordneten Artefakte von LayerName müssen zu NamespaceName1 gehören. Artifact befindet sich in NamespaceName2 und nicht in NamespaceName1.

AV1002: Abhängigkeit von unzulässigem Namespace: Artifact1(ArtifactType1) | Artifact2(ArtifactType2)

   Ebene: LayerName | Unzulässiger Namespace: NamespaceName | Abhängigkeiten: DependencyType

Die zugeordneten Artefakte von LayerName dürfen nicht von NamespaceName abhängen. Artifact1 darf nicht von Artifact2 abhängen, da sich Artifact2 in NamespaceName befindet.

AV1003: In unzulässigem Namespace: Artifact(ArtifactType)

   Ebene: LayerName | Unzulässiger Namespace: NamespaceName

Die zugeordneten Artefakte von LayerName dürfen nicht zu NamespaceName gehören. Artifact gehört zu NamespaceName.

AV3001: Fehlender Link: Ebene 'LayerName' ist mit 'Artifact' verknüpft, das nicht gefunden wurde. Möglicherweise fehlt ein Assemblyverweis.

Für LayerName besteht eine Verknüpfung mit einem Artefakt, das nicht gefunden wurde. Ein Link zu einer Klasse kann beispielsweise fehlen, wenn im Modellierungsprojekt ein Verweis auf die Assembly mit der Klasse fehlt.

AV9001: Bei der Architekturvalidierung sind interne Fehler aufgetreten. Die Ergebnisse sind möglicherweise nicht vollständig. Weitere Informationen finden Sie im ausführlichen Buildereignisprotokoll oder im Ausgabefenster.

Weitere Einzelheiten finden Sie im Buildereignisprotokoll oder im Ausgabefenster.

Siehe auch

Konzepte

Überprüfen des Systems während der Entwicklung