Udostępnij za pośrednictwem


Dodawanie sprawdzania poprawności architektury niestandardowe diagramy warstwy

W Visual Studio Ultimate i Visual Studio Premium, użytkownicy mogą sprawdzić poprawność kodu źródłowego w Visual Studio projektu przed model warstwy, aby mogli zweryfikować, że kod źródłowy jest zgodny ze współzależnościami diagram warstwy.Jest algorytm sprawdzania poprawności standardowego, ale można zdefiniować własne rozszerzenia sprawdzania poprawności dla Visual Studio Ultimate i Visual Studio Premium.

Gdy użytkownik wybierze Sprawdzania poprawności architektury polecenie z diagramu warstwy, wywoływana jest metoda standardowych sprawdzania poprawności, a następnie wszystkie rozszerzenia sprawdzania poprawności, które zostały zainstalowane.

[!UWAGA]

Sprawdzanie poprawności na diagramie warstwy nie jest taka sama, jak sprawdzanie poprawności na diagramach UML.Na diagramie warstwy głównym celem jest porównać diagram z kodu programu w innych częściach rozwiązanie.

Rozszerzenie sieci warstwy sprawdzania poprawności można spakować do Visual Studio Integration rozszerzenie (VSIX), który można rozpowszechniać wśród innych Visual Studio Ultimate użytkowników.Można umieścić swoje modułu sprawdzania poprawności w VSIX samodzielnie lub można połączyć je w tym samym VSIX jako inne rozszerzenia.Powinno się pisać kodu modułu sprawdzania poprawności w sobie Visual Studio projektu, nie w tym samym projekcie jako inne rozszerzenia.

Informacje dotyczące przestrogiPrzestroga

Po utworzeniu projektu sprawdzania poprawności, należy skopiować Przykładowy kod źródłowy na końcu tego tematu i następnie edytować, że do własnych potrzeb.

Wymagania

  • Visual Studio Ultimate

  • Visual Studio SDK

  • Visual Studio wizualizacji i modelowania zestawu SDK

Definiowanie walidator warstwy w nowych VSIX

Najszybszą metodą tworzenia walidator jest użycie szablonu projektu.To umieszcza kod i manifestu VSIX do tego samego projektu.

Aby zdefiniować rozszerzenie przy użyciu szablonu projektu

  1. Tworzenie projektu w nowe rozwiązanie, za pomocą Nowy projekt polecenie na pliku menu.

  2. W Nowy projekt dialogowe, pod Modelowanie projektów, wybierz Rozszerzenie sprawdzania poprawności projektanta warstwy.

    Ten szablon tworzy projekt zawierający krótki przykład.

    Informacje dotyczące przestrogiPrzestroga

    Aby szablon działać poprawnie:

    • Edytowanie połączeń w celu LogValidationError usunąć argumentów opcjonalnych errorSourceNodes i errorTargetNodes.

    • Jeśli używasz właściwości niestandardowe, należy zastosować aktualizację wymienionych w Dodawanie właściwości niestandardowe do diagramu warstwy.Ponadto Otwórz Eksploratora architektury, przed otwarciem rozwiązania modelu.

  3. Edytuj swoje sprawdzania poprawności w definicji.Aby uzyskać więcej informacji, zobacz Sprawdzania poprawności Programming.

  4. Aby przetestować rozszerzenie, zobacz Debugowanie sprawdzania poprawności warstwy.

    [!UWAGA]

    Twoja forma będzie wywoływana tylko w szczególnych okolicznościach, a użycie punktów przerwania nie będzie działać automatycznie.Aby uzyskać więcej informacji, zobacz Debugowanie sprawdzania poprawności warstwy.

  5. Aby zainstalować rozszerzenie w głównym wystąpienie Visual Studio, lub na innym komputerze, należy znaleźć .vsix plik w bin\*.Skopiuj go do komputera, w którym chcesz go zainstalować, a następnie kliknij go dwukrotnie.Aby odinstalować go, należy użyć Extension Manager na Narzędzia menu.

Dodawanie modułu sprawdzania poprawności warstwę do oddzielnego VSIX

Jeśli chcesz utworzyć jeden VSIX, zawierającego warstwy walidatorów, poleceń i innych rozszerzeń, zaleca się utworzenie jednego projektu do zdefiniowania VSIX i oddzielnymi projektami dla programu obsługi.Aby uzyskać informacje o innych typach rozszerzeń modelowania, zobacz Rozszerzanie modeli UML i diagramów.

Aby dodać sprawdzanie poprawności warstwę do oddzielnego VSIX

  1. Tworzenie biblioteki klas projektu w nowe lub istniejące Visual Studio Ultimate rozwiązanie.W Nowy projekt okno dialogowe, kliknij przycisk Visual C# a następnie kliknij przycisk Biblioteka klas.Ten projekt będzie zawierać klasy warstwy sprawdzania poprawności.

  2. Identyfikacji lub utworzyć projekt VSIX w rozwiązaniu.Projekt VSIX zawiera plik o nazwie source.extension.vsixmanifest.Jeśli trzeba dodać projekt VSIX, wykonaj następujące kroki:

    1. W Nowy projekt okno dialogowe Wybierz Visual C#, rozszerzalności, Projektu VSIX.

    2. W Solution Explorer, w menu skrótów programu VSIX project jako projekt uruchamiania.

  3. W source.extension.vsixmanifest, w obszarze aktywów, dodać warstwy sprawdzania poprawności projektu jako składnik MEF:

    1. Wybierz polecenie Nowy.

    2. W Dodać nowego środka okno dialogowe, zestaw:

      Typ = Microsoft.VisualStudio.MefComponent

      Źródło = projektu w bieżącym rozwiązaniu

      Projekt = modułu sprawdzania poprawności projektu

  4. Należy również dodać go jako przy sprawdzaniu poprawności warstwy:

    1. Wybierz polecenie Nowy.

    2. W Dodać nowego środka okno dialogowe, zestaw:

      Typ = Microsoft.VisualStudio.ArchitectureTools.Layer.Validator.Nie jest jedną z opcji z listy rozwijanej.Należy wprowadzać go przy użyciu klawiatury.

      Źródło = projektu w bieżącym rozwiązaniu

      Projekt = modułu sprawdzania poprawności projektu

  5. Powróć do warstwy sprawdzania poprawności projektu i dodać następujące odwołanie projektu:

    Informacje o odwołaniach

    Co to pozwala robić

    Microsoft.VisualStudio.GraphModel.dll

    Odczytać ten wykres architektury

    Microsoft.VisualStudio.ArchitectureTools.Extensibility.CodeSchema.dll

    Odczytać DOM kod skojarzony z warstwami

    Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer.dll

    Odczytać warstwy modelu

    Microsoft.VisualStudio.ArchitectureTools.Extensibility

    Przeczytaj i aktualizację kształtów i diagramów.

    System.ComponentModel.Composition

    Zdefiniuj składnik sprawdzania poprawności przy użyciu zarządzanych rozszerzeń Framework (MEF)

    Microsoft.VisualStudio.Modeling.Sdk.11.0

    Zdefiniować rozszerzenia modelowania

  6. Skopiuj kod przykładowy na końcu tego tematu w pliku klasy w projekcie modułu sprawdzania poprawności biblioteki zawierają kod do swojej sprawdzania poprawności.Aby uzyskać więcej informacji, zobacz Sprawdzania poprawności Programming.

  7. Aby przetestować rozszerzenie, zobacz Debugowanie sprawdzania poprawności warstwy.

    [!UWAGA]

    Twoja forma będzie wywoływana tylko w szczególnych okolicznościach, a użycie punktów przerwania nie będzie działać automatycznie.Aby uzyskać więcej informacji, zobacz Debugowanie sprawdzania poprawności warstwy.

  8. Aby zainstalować VSIX w głównym wystąpienie Visual Studio, lub na innym komputerze, należy znaleźć .vsix plik w bin katalogu projektu VSIX.Skopiuj go do komputera, na którym chcesz zainstalować VSIX.Kliknij dwukrotnie plik VSIX w Eksploratorze Windows.(Eksplorator plików w systemie Windows 8).

    Aby odinstalować go, należy użyć Extension Manager na Narzędzia menu.

Sprawdzanie poprawności programowania

Aby zdefiniować rozszerzenie sprawdzania poprawności warstwy, definiuje klasy, która ma następujące cechy:

  • Ogólny formularz zgłoszenia jest następująca:

    
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.ArchitectureTools.Extensibility.CodeSchema;
    using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
    using Microsoft.VisualStudio.GraphModel;
    ...
     [Export(typeof(IValidateArchitectureExtension))]
      public partial class Validator1Extension :
                      IValidateArchitectureExtension
      {
        public void ValidateArchitecture(Graph graph)
        {
           GraphSchema schema = graph.DocumentSchema;
          ...
      } }
    
  • Po wykryciu błędu, możesz to zgłosić za pomocą LogValidationError().

    Informacje dotyczące przestrogiPrzestroga

    Nie należy używać następujące parametry opcjonalne z LogValidationError.

Kiedy użytkownik wywoła Sprawdzania poprawności architektury polecenia menu, system plików wykonywalnych warstwy analizuje warstw i ich artefakty, przedstawić na wykresie.Wykres ma cztery części:

  • Modele warstwy Visual Studio rozwiązanie, które są reprezentowane jako węzły i łączy na wykresie.

  • Kod, elementy projektu i inne przedmioty, które są zdefiniowane w roztworze i reprezentowane jako węzły i łącza, które reprezentują zależności odkryta przez proces analizy.

  • Łączy z węzłów warstwy do węzłów artefakt kodu.

  • Węzły, które reprezentują błędy wykryte przez moduł sprawdzania poprawności.

Gdy wykres została skonstruowana, wywoływana jest metoda standardowych sprawdzania poprawności.Po zakończeniu tej operacji, wszelkich zainstalowanych rozszerzeń sprawdzania poprawności są wywoływane w nieokreślonej kolejności.Wykres jest przekazywana do każdej ValidateArchitecture metodę, która pozwala na skanowanie wykresu i zgłosić wszelkie błędy, które znajdzie.

[!UWAGA]

Nie jest taka sama, jak proces sprawdzania poprawności, która jest stosowana do diagramów UML, a nie jest taka sama, jak proces sprawdzania poprawności, które mogą być używane w języków.

Metody sprawdzania poprawności nie należy zmieniać warstwy modelu lub kod, który jest sprawdzany.

Graph model określa się w Microsoft.VisualStudio.GraphModel.Jego główne klasy są GraphNode i GraphLink.

Wszystkie węzły i każde łącze ma jedną lub więcej kategorii, które określają typ element lub relacji, który reprezentuje.Węzły typowe wykresu mają następujące kategorie:

  • Dsl.LayerModel

  • Dsl.Layer

  • Dsl.Reference

  • CodeSchema_Type

  • CodeSchema_Namespace

  • CodeSchema_Type

  • CodeSchema_Method

  • CodeSchema_Field

  • CodeSchema_Property

Łączy z warstwy do elementów w kodzie mieć kategorii "Reprezentuje".

Debugowanie sprawdzania poprawności

Aby debugować Twojego rozszerzenia sprawdzania poprawności warstwy, naciśnij klawisze CTRL + F5.Wystąpienie doświadczalnych Visual Studio zostanie otwarty.W tym wypadku Otwórz lub Utwórz warstwy modelu.Ten model musi być skojarzony z kodem i musi mieć co najmniej jedną współzależność.

Ff657807.collapse_all(pl-pl,VS.110).gifPrzetestować rozwiązanie, które zawiera zależności

Sprawdzanie poprawności nie jest wykonywana, chyba że występują następujące cechy:

  • Istnieje co najmniej jedno łącze zależność na diagramie warstwy.

  • Brak warstwy w modelu, które są skojarzone z elementów kodu.

Uruchomić wystąpienie doświadczalnych po raz pierwszy Visual Studio Aby przetestować Twojego rozszerzenia sprawdzania poprawności, należy otworzyć lub utworzyć rozwiązanie, które ma te cechy.

Ff657807.collapse_all(pl-pl,VS.110).gifWykonywania czystego roztworu azotanu srebra przed sprawdzania poprawności architektury

Po zaktualizowaniu kod sprawdzania poprawności, należy użyć Optymalnym rozwiązaniem polecenie na budować menu w roztworze doświadczalnych, zanim zaczniesz testować polecenie Sprawdź poprawność.Jest to konieczne, ponieważ wyniki sprawdzania poprawności są buforowane.Jeśli nie zostały zaktualizowane na diagramie warstwy testu lub jego kodu, metody sprawdzania poprawności nie zostanie wykonana.

Ff657807.collapse_all(pl-pl,VS.110).gifJawnie uruchomić debugera

Sprawdzanie poprawności rozpoczyna się w oddzielnym procesie.W związku z tym punkty przerwania w swoje metody sprawdzania poprawności nie zostanie wyzwolony.Należy dołączyć debuger do procesu jawnie podczas sprawdzania poprawności została uruchomiona.

Aby dołączyć debuger do procesu sprawdzania poprawności, należy wstawić wywołanie System.Diagnostics.Debugger.Launch() na początku swoje metody sprawdzania poprawności.Gdy pojawi się okno dialogowe debugowania, zaznacz głównym wystąpienia Visual Studio.

Alternatywnie, można wstawić wywołanie System.Windows.Forms.MessageBox.Show().Kiedy pojawi się okno komunikatu, przejdź do głównego wystąpienie Visual Studio i program Debug: polecenie menu, kliknij Dołącz do procesu. Wybierz proces, który nosi nazwę Graphcmd.exe.

Zawsze uruchamiaj doświadczalnych wystąpienie przez naciśnięcie klawiszy CTRL + F5 (Start bez debugowania).

Ff657807.collapse_all(pl-pl,VS.110).gifWdrażanie rozszerzenie sprawdzania poprawności

Aby zainstalować rozszerzenie sprawdzania poprawności na komputerze, na którym Visual Studio Ultimate lub Visual Studio Premium jest zainstalowana, otwórz plik VSIX na komputerze docelowym.Aby zainstalować na komputerze, na którym Team Foundation Build jest zainstalowany, należy ręcznie wyodrębnić zawartość VSIX do folderu rozszerzeń.Aby uzyskać więcej informacji, zobacz Wdrażanie modelowania rozszerzenie warstwy.

Przykładowy kod

using System;
using System.ComponentModel.Composition;
using System.Globalization;
using System.Linq;
using System.Text.RegularExpressions;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.CodeSchema;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Layer;
using Microsoft.VisualStudio.GraphModel;

namespace Validator3
{
    [Export(typeof(IValidateArchitectureExtension))]
    public partial class Validator3Extension : IValidateArchitectureExtension
    {
        /// <summary>
        /// Validate the architecture
        /// </summary>
        /// <param name="graph">The graph</param>
        public void ValidateArchitecture(Graph graph)
        {
            if (graph == null) throw new ArgumentNullException("graph");

            // Uncomment the line below to debug this extension during validation
            // System.Windows.Forms.MessageBox.Show("Attach 2 to GraphCmd.exe with process id " + System.Diagnostics.Process.GetCurrentProcess().Id);


            // Get all layers on the diagram
            foreach (GraphNode layer in graph.Nodes.GetByCategory("Dsl.Layer"))
            {
                System.Threading.Thread.Sleep(100);
                // Get the required regex property from the layer node
                string regexPattern = "^[a-zA-Z]+$"; //layer[customPropertyCategory] as string;
                if (!string.IsNullOrEmpty(regexPattern))
                {
                    Regex regEx = new Regex(regexPattern);

                    // Get all referenced types in this layer including those from nested layers so each
                    // type is validated against all containing layer constraints.
                    foreach (GraphNode containedType in layer.FindDescendants().Where(node => node.HasCategory("CodeSchema_Type")))
                    {
                        // Check the type name against the required regex                        
                        CodeGraphNodeIdBuilder builder = new CodeGraphNodeIdBuilder(containedType.Id, graph);
                        string typeName = builder.Type.Name;
                        if (!regEx.IsMatch(typeName))
                        {
                            // Log an error
                            string message = string.Format(CultureInfo.CurrentCulture, Resources.InvalidTypeNameMessage, typeName);
                            this.LogValidationError(graph, typeName + "TypeNameError", message, GraphErrorLevel.Error, layer);
                        }
                    }
                }

            }

        }
    }
}

Zobacz też

Koncepcje

Rozszerzanie diagramy warstwy