Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby dostosować mapę kodu, możesz edytować plik Języka znaczników grafów skierowanych (dgml). Można na przykład edytować elementy, aby określić niestandardowe style, przypisać właściwości i kategorie do elementów kodu i łączyć dokumenty lub adresy URL z elementami kodu lub linkami. Aby uzyskać więcej informacji na temat elementów DGML, zobacz Dokumentacja języka DGML (Directed Graph Markup Language).
Edytuj plik .dgml mapy kodu w edytorze tekstów lub XML. Jeśli mapa jest częścią rozwiązania programu Visual Studio, wybierz ją w Eksplorator rozwiązań, otwórz menu skrótów, a następnie wybierz pozycję Otwórz za pomocą, edytor XML (tekst).
Uwaga
Aby utworzyć mapy kodu, musisz mieć wersję Visual Studio Enterprise. Podczas edytowania mapy kodu w programie Visual Studio program czyści wszystkie nieużywane elementy i atrybuty DGML, usuwając je podczas zapisywania pliku .dgml. Tworzy również elementy kodu automatycznie po ręcznym dodaniu nowych linków. Podczas zapisywania pliku .dgml wszelkie atrybuty, które są dodawane do elementu, mogą się ponownie rozmieszczać w kolejności alfabetycznej.
Grupowanie elementów kodu
Możesz dodać nowe grupy lub przekonwertować istniejące węzły na grupę.
Otwórz plik dgml w edytorze tekstów lub XML.
Aby przekonwertować element kodu na grupę, znajdź
<Node/>element dla tego elementu kodu.- lub -
Aby dodać nową grupę, znajdź sekcję
<Nodes>. Dodaj nowy<Node/>element.W elemecie
<Node/>dodajGroupatrybut, aby określić, czy grupa jest wyświetlana rozwinięte, czy zwinięte. Na przykład:<Nodes> <Node Id="MyFirstGroup" Group="Expanded" /> <Node Id="MySecondGroup" Group="Collapsed" /> </Nodes><Links>W sekcji upewnij się, że<Link/>dla każdej relacji między elementem kodu grupy a elementami kodu podrzędnego istnieje element zawierający następujące atrybuty:Atrybut
Sourceokreślający element kodu grupyAtrybut
Targetokreślający element kodu podrzędnegoAtrybut
Categoryokreślający relacjęContainsmiędzy elementem kodu grupy a elementem kodu podrzędnegoNa przykład:
<Links> <Link Category="Contains" Source="MyFirstGroup" Target="FirstGroupChildOne" /> <Link Category ="Contains" Source="MyFirstGroup" Target="FirstGroupChildTwo" /> <Link Category ="Contains" Source="MySecondGroup" Target="SecondGroupChildOne" /> <Link Category="Contains" Source="MySecondGroup" Target="SecondGroupChildTwo" /> </Links>Aby uzyskać więcej informacji na temat atrybutu
Category, zobacz Przypisywanie kategorii do elementów kodu i linków.
Zmienianie stylu mapy
Kolor tła i kolor obramowania mapy można zmienić, edytując plik .dgml mapy. Aby zmienić styl elementów kodu i łączy, zobacz Zmienianie stylu elementów kodu i linków.
Otwórz plik dgml w edytorze tekstów lub XML.
W elemecie
<DirectedGraph>dodaj dowolny z następujących atrybutów, aby zmienić jego styl:Kolor tła
Background="ColorNameOrHexadecimalValue"Kolor obramowania
Stroke="StrokeValue"Na przykład:
<DirectedGraph Background="Green" xmlns="http://schemas.microsoft.com/vs/2009/dgml" > ... ... </DirectedGraph>
Zmienianie stylu elementów kodu i łączy
Style niestandardowe można zastosować do następujących elementów kodu:
Pojedyncze elementy kodu i linki
Grupy elementów kodu i łączy
Grupy elementów i linków kodu na podstawie określonych warunków
Napiwek
Jeśli masz powtarzające się style w wielu elementach kodu lub linkach, możesz rozważyć zastosowanie kategorii do tych elementów kodu lub linków, a następnie zastosowanie stylu do tej kategorii. Aby uzyskać więcej informacji, zobacz Przypisywanie kategorii do elementów kodu i linków oraz Przypisywanie właściwości do elementów kodu i łączy.
Aby zastosować styl niestandardowy do pojedynczego elementu kodu
Otwórz plik dgml w edytorze tekstów lub XML.
Znajdź element elementu
<Node/>kodu. Dodaj dowolny z tych atrybutów, aby dostosować jego styl:Kolor tła
Background="ColorNameOrHexadecimalValue"Kontur
Stroke="ColorNameOrHexadecimalValue"Grubość konturu
StrokeThickness="StrokeValue"Kolor tekstu
Foreground="ColorNameOrHexadecimalValue"Ikona
Icon="IconFilePathLocation"Rozmiar tekstu
FontSize="FontSizeValue"Typ tekstu
FontFamily="FontFamilyName"Waga tekstu
FontWeight="FontWeightValue"Styl tekstu
FontStyle="FontStyleName"Można na przykład określić
Italicstyl tekstu.Tekstura
Style="Glass"— lub —
Style="Plain"Kształt
Aby zastąpić kształt ikoną, ustaw
Shapewłaściwość naNonei ustawIconwłaściwość na ścieżkę za pomocą pliku ikony.Shape="ShapeFilePathLocation"Na przykład:
<Nodes> <Node Id="MyNode" Background="#FF008000" Stroke="#FF000000" Foreground="#FFFFFFFF" Icon="...\Icons\Globe.png"/> </Nodes>
Aby zastosować styl niestandardowy do pojedynczego łącza
Otwórz plik dgml w edytorze tekstów lub XML.
<Link/>Znajdź element zawierający zarówno nazwy elementu kodu źródłowego, jak i docelowy element kodu.W elemecie
<Link/>dodaj dowolny z następujących atrybutów, aby dostosować jego styl:Kolor konturu i grotu strzałki
Stroke="ColorNameOrHexadecimalValue"Grubość konturu
StrokeThickness="StrokeValue"Styl konturu
StrokeDashArray="StrokeArrayValues"Na przykład:
<Links> <Link Source="MyFirstNode" Target="MySecondNode" Background="Green" Stroke="#FF000000" StrokeDashArray="2,2"/> </Links>
Aby zastosować style niestandardowe do grupy elementów kodu lub łączy
Otwórz plik dgml w edytorze tekstów lub XML.
<Styles></Styles>Jeśli element nie istnieje, dodaj jeden pod<DirectedGraph></DirectedGraph>elementem po elemecie<Links></Links>.W elemecie
<Styles></Styles>w obszarze<Style/>elementu i określ następujące atrybuty:TargetType="Node|Link | Graph"GroupLabel="NameInLegendBox"ValueLabel="NameInStylePickerBox"Aby zastosować niestandardowy styl do wszystkich typów docelowych, nie należy używać warunku.
Aby zastosować styl warunkowy do grup elementów kodu lub łączy
Otwórz plik dgml w edytorze tekstów lub XML.
W elemecie
<Style/>dodaj<Condition/>element zawierającyExpressionatrybut, aby określić wyrażenie zwracające wartość logiczną.Na przykład:
<Condition Expression="MyCategory"/>— lub —
<Condition Expression="MyCategory > 100"/>— lub —
<Condition Expression="HasCategory('MyCategory')"/>Wyrażenie to używa następującej składni notacji Backusa-Naura (BNF):
<Expression> ::= <BinaryExpression> | \<UnaryExpression> | "("<Expression>")" | <MemberBindings> | <Literal> | \<Number> <BinaryExpression> ::= <Expression> <Operator> <Expression> <UnaryExpression> ::= "!" <Expression> | "+" <Expression> | "-" <Expression> <Operator> ::= "<" | "<=" | "=" | ">=" | ">" | "!=" | "or" | "and" | "+" | "*" | "/" | "-" <MemberBindings> ::= <MemberBindings> | <MemberBinding> "." <MemberBinding> <MemberBinding> ::= <MethodCall> | <PropertyGet> <MethodCall> ::= <Identifier> "(" <MethodArgs> ")" <PropertyGet> ::= <Identifier> <MethodArgs> ::= <Expression> | <Expression> "," <MethodArgs> | <empty> <Identifier> ::= [^. ]* <Literal> ::= single or double-quoted string literal <Number> ::= string of digits with optional decimal pointMożna określić wiele
<Condition/>elementów, które muszą mieć wartość true, aby zastosować styl.W następnym wierszu po elemecie
<Condition/>dodaj jeden lub wiele<Setter/>elementów, aby określićPropertyatrybut i stałyValueatrybut lub obliczonyExpressionatrybut do zastosowania do mapy, elementów kodu lub łączy spełniających warunek.Na przykład:
<Setter Property="BackGround" Value="Green"/>W prostym przykładzie poniższy warunek określa, że element kodu jest wyświetlany na zielono lub czerwony w zależności od tego, czy jego
Passedkategoria jest ustawiona naTrue, czyFalse:
<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph xmlns="http://schemas.microsoft.com/vs/2009/dgml">
<Nodes>
<Node Id="MyFirstNode" Passed="True" />
<Node Id="MySecondNode" Passed="False" />
</Nodes>
<Links>
</Links>
<Styles>
<Style TargetType="Node" GroupLabel="Passed" ValueLabel="True">
<Condition Expression="Passed='True'"/>
<Setter Property="Background" Value="Green"/>
</Style>
<Style TargetType="Node" GroupLabel="Passed" ValueLabel="False">
<Condition Expression="Passed='False'"/>
<Setter Property="Background" Value="Red"/>
</Style>
</Styles>
</DirectedGraph>
Poniższa tabela zawiera niektóre przykładowe warunki, których można użyć:
Ustaw rozmiar czcionki jako funkcję liczby wierszy kodu, które również zmieniają rozmiar elementu kodu. W tym przykładzie użyto pojedynczego wyrażenia warunkowego do ustawienia wielu właściwości FontSize i FontFamily.
<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph xmlns="http://schemas.microsoft.com/vs/2009/dgml">
<Nodes>
<Node Id="Class1" LinesOfCode ="200" />
<Node Id="Class2" LinesOfCode ="1000" />
<Node Id="Class3" LinesOfCode ="20" />
</Nodes>
<Properties>
<Property Id="LinesOfCode" Label="LinesOfCode" Description="LinesOfCode" DataType="System.Int32" />
</Properties>
<Styles>
<Style TargetType="Node" GroupLabel="LinesOfCode" ValueLabel="Function">
<Condition Expression="LinesOfCode > 0" />
<Setter Property="FontSize" Expression="Math.Max(9,Math.Sqrt(LinesOfCode))" />
<Setter Property="FontFamily" Value="Papyrus" />
</Style>
</Styles>
</DirectedGraph>
Ustaw kolor tła elementu kodu na Coverage podstawie właściwości . Style są oceniane w kolejności, w której się pojawiają, podobnie jak if-else w przypadku instrukcji.
W tym przykładzie:
Jeśli
Coveragewartość to > 80, ustaw właściwość na zielonąBackground.W przeciwnym razie, jeśli
Coveragema wartość > 50, ustawBackgroundwłaściwość na odcień pomarańczyCoveragena podstawie wartości właściwości.W przeciwnym razie ustaw
Backgroundwłaściwość na odcień koloru czerwonego na podstawie wartościCoveragewłaściwości.
<?xml version="1.0" encoding="utf-8"?>
<DirectedGraph xmlns="http://schemas.microsoft.com/vs/2009/dgml">
<Nodes>
<Node Id="Class1" Coverage="58" />
<Node Id="Class2" Coverage="95" />
<Node Id="Class3" Coverage="32" />
</Nodes>
<Properties>
<Property Id="Coverage" Label="Coverage" Description="Code coverage as a percentage of blocks" DataType="Double" />
</Properties>
<Styles>
<Style TargetType="Node" GroupLabel="Coverage" ValueLabel="Good">
<Condition Expression="Coverage > 80" />
<Setter Property="Background" Value="Green" />
</Style>
<Style TargetType="Node" GroupLabel="Coverage" ValueLabel="OK">
<Condition Expression="Coverage > 50" />
<Setter Property="Background" Expression="Color.FromRgb(180 * Math.Max(1, (80 - Coverage) / 30), 180, 0)" />
</Style>
<Style TargetType="Node" GroupLabel="Coverage" ValueLabel="Bad">
<Setter Property="Background" Expression="Color.FromRgb(180, 180 * Coverage / 50, 0)" />
</Style>
</Styles>
</DirectedGraph>
Shape Ustaw właściwość na wartość None , aby ikona zamieniła kształt. Icon Użyj właściwości , aby określić lokalizację ikony.
<DirectedGraph xmlns="http://schemas.microsoft.com/vs/2009/dgml">
<Nodes>
<Node Id="Automation" Category="Test" Label="Automation" />
<Node Id="C# Provider" Category="Provider" Label="C# Provider" />
</Nodes>
<Categories>
<Category Id="Provider" Icon="...\Icons\Module.png" Shape="None" />
<Category Id="Test" Icon="...\Icons\Page.png" Shape="None" />
</Categories>
<Properties>
<Property Id="Icon" DataType="System.String" />
<Property Id="Label" Label="Label" Description="Displayable label of an Annotatable object" DataType="System.String" />
<Property Id="Shape" DataType="System.String" />
</Properties>
<Styles>
<Style TargetType="Node" GroupLabel="Group" ValueLabel="Has category">
<Condition Expression="HasCategory('Group')" />
<Setter Property="Background" Value="#80008080" />
</Style>
<Style TargetType="Node">
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</Styles>
</DirectedGraph>
Przypisywanie właściwości do elementów kodu i łączy
Elementy kodu i linki można organizować, przypisując do nich właściwości. Możesz na przykład wybrać elementy kodu, które mają określone właściwości, aby można je było grupować, zmieniać ich styl lub ukrywać.
Aby przypisać właściwość do elementu kodu
Otwórz plik dgml w edytorze tekstów lub XML.
<Node/>Znajdź element dla tego elementu kodu. Określ nazwę właściwości i jej wartość. Na przykład:<Nodes> <Node Id="MyNode" MyPropertyName="PropertyValue" /> </Nodes><Property/>Dodaj element do sekcji,<Properties>aby określić atrybuty, takie jak jego widoczna nazwa i typ danych:<Properties> <Property Id="MyPropertyName" Label="My Property" DataType="System.DataType"/> </Properties>
Aby przypisać właściwość do łącza
Otwórz plik dgml w edytorze tekstów lub XML.
<Link/>Znajdź element zawierający zarówno nazwy elementu kodu źródłowego, jak i docelowy element kodu.W elemecie
<Node/>określ nazwę właściwości i jej wartość. Na przykład:<Links> <Link Source="MyFirstNode" Target="MySecondNode" MyPropertyName="PropertyValue" /> </Links><Property/>Dodaj element do sekcji,<Properties>aby określić atrybuty, takie jak jego widoczna nazwa i typ danych:<Properties> <Property Id="MyPropertyName" Label="My Property Name" DataType="System.DataType"/> </Properties>
Przypisywanie kategorii do elementów kodu i linków
W poniższych sekcjach pokazano, jak można organizować elementy kodu, przypisując do nich kategorie oraz jak utworzyć kategorie hierarchiczne, które ułatwiają organizowanie elementów kodu i dodawanie atrybutów do kategorii podrzędnych przy użyciu dziedziczenia.
Aby przypisać kategorię do elementu kodu
Otwórz plik dgml w edytorze tekstów lub XML.
<Node/>Znajdź element dla żądanego elementu kodu.W elemecie
<Node/>dodajCategoryatrybut, aby określić nazwę kategorii. Na przykład:<Nodes> <Node Id="MyNode" Category="MyCategory" /> </Nodes><Category/>Dodaj element do<Categories>sekcji, aby można było użyć atrybutuLabelw celu określenia tekstu wyświetlanego dla tej kategorii:<Categories> <Category Id="MyCategory" Label="My Category" /> </Categories>
Przypisywanie kategorii do łącza
Otwórz plik dgml w edytorze tekstów lub XML.
<Link/>Znajdź element zawierający zarówno nazwy elementu kodu źródłowego, jak i docelowy element kodu.W elemecie
<Link/>dodajCategoryatrybut, aby określić nazwę kategorii. Na przykład:<Links> <Link Source="MyFirstNode" Target="MySecondNode" Category="MyCategory" </Links><Category/>Dodaj element do<Categories>sekcji, aby można było użyć atrybutuLabelw celu określenia tekstu wyświetlanego dla tej kategorii:<Categories> <Category Id="MyCategory" Label="My Category" /> </Categories>
Tworzenie kategorii hierarchicznych
Otwórz plik dgml w edytorze tekstów lub XML.
<Category/>Dodaj element dla kategorii nadrzędnej, a następnie dodajBasedOnatrybut do elementu kategorii podrzędnej<Category/>.Na przykład:
<Nodes> <Node Id="MyFirstNode" Label="My First Node" Category= "MyCategory" /> <Node Id="MySecondNode" Label="My Second Node" /> </Nodes> <Links> <Link Source="MyFirstNode" Target="MySecondNode" /> </Links> <Categories> <Category Id="MyCategory" Label="My Category" BasedOn="MyParentCategory"/> <Category Id="MyParentCategory" Label="My Parent Category" Background="Green"/> </Categories>W tym przykładzie tło
MyFirstNodeelementu jest zielone, ponieważ jegoCategoryatrybut dziedziczyBackgroundatrybut .MyParentCategory
Łączenie dokumentów lub adresów URL z elementami kodu i linkami
Dokumenty lub adresy URL można połączyć z elementami kodu lub linkami, edytując plik dgml mapy i dodając Reference atrybut do <Node/> elementu dla elementu kodu lub <Link/> elementu linku. Następnie możesz otworzyć i wyświetlić zawartość z elementu kodu lub linku. Atrybut Reference określa ścieżkę tej zawartości. Może to być ścieżka względem lokalizacji pliku .dgml lub ścieżka bezwzględna.
Uwaga
Jeśli używane są ścieżki względne, a plik .dgml zostanie przeniesiony do innej lokalizacji, ścieżki te nie zostaną rozpoznane. Podczas próby otwarcia i wyświetlenia połączonej zawartości pojawi się komunikat o błędzie z informacją, że nie można wyświetlić zawartości.
Możesz na przykład połączyć następujące elementy kodu:
Aby opisać zmiany w klasie, możesz połączyć adres URL elementu kodu roboczego, dokumentu lub innego pliku dgml z elementem kodu dla klasy.
Diagram zależności można połączyć z elementem kodu grupy reprezentującym warstwę w architekturze logicznej oprogramowania.
Aby wyświetlić więcej informacji o składniku, który uwidacznia interfejs, możesz połączyć diagram składników z elementem kodu dla tego interfejsu.
Połącz element kodu z elementem roboczym lub usterką serwera Team Foundation Server albo z innymi informacjami powiązanymi z elementem kodu.
Aby połączyć dokument lub adres URL z elementem kodu
Otwórz plik dgml w edytorze tekstów lub XML.
<Node/>Znajdź element dla żądanego elementu kodu.Wykonaj jedno z zadań z tabeli poniżej:
Pojedynczy element kodu
W elemecie
<Node/>or<Link/>dodajReferenceatrybut, aby określić lokalizację elementu kodu.Uwaga
Można mieć tylko jeden
Referenceatrybut na element.Na przykład:
<Nodes> <Node Id="MyNode" Reference="MyDocument.txt" /> </Nodes> <Properties> <Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" /> </Properties>Wiele elementów kodu
W elemencie
<Node/>or<Link/>dodaj nowy atrybut, aby określić lokalizację każdego odwołania.<Properties>W sekcji:<Property/>Dodaj element dla każdego nowego typu odwołania.IdUstaw atrybut na nazwę nowego atrybutu odwołania.IsReferenceDodaj atrybut i ustaw go tak, abyTrueodwołanie było wyświetlane w menu skrótów Przejdź do odwołania elementu kodu.Użyj atrybutu
Label, aby określić tekst wyświetlany w menu skrótów Przejdź do odwołania elementu kodu.
Na przykład:
<Nodes> <Node Id="MyNode" SequenceDiagram="MySequenceDiagram.sequencediagram" ActiveBugs="MyActiveBugs.wiq"/> </Nodes> <Properties> <Property Id="SequenceDiagram" Label="My Sequence Diagram" DataType="System.String" IsReference="True" /> <Property Id="ActiveBugs" Label="Active Bugs" DataType="System.String" IsReference="True" /> </Properties>Na mapie nazwa elementu kodu jest podkreślony. Po otwarciu menu skrótów dla elementu kodu lub linku zostanie wyświetlone menu skrótów Przejdź do odwołania zawierające połączone elementy kodu do wyboru.
Użyj atrybutu
ReferenceTemplate, aby określić wspólny ciąg, taki jak adres URL, używany przez wiele odwołań zamiast powtarzać ten ciąg w odwołaniu.Atrybut
ReferenceTemplateokreśla symbol zastępczy dla wartości odwołania. W poniższym przykładzie{0}symbol zastępczy w atrybucieReferenceTemplatezostanie zastąpiony wartościami atrybutówMyFirstReferenceiMySecondReferencew elemecie<Node/>w celu utworzenia pełnej ścieżki:<Nodes> <Node Id="MyNode" MyFirstReference="MyFirstDocument" MySecondReference="MySecondDocument"/> <Node Id="MySecondNode" MyFirstReference="AnotherFirstDocument" MySecondReference="AnotherSecondDocument"/> </Nodes> <Properties> <Property Id="MyFirstReference" Label="My First Document" DataType="System.String" IsReference="True" ReferenceTemplate="http://www.Fabrikam.com/FirstDocuments/{0}.asp"/> <Property Id="MySecondReference" Label="My Second Document" DataType="System.String" IsReference="True" ReferenceTemplate=" http://www.Fabrikam.com/SecondDocuments/{0}.asp"/> </Properties>Aby wyświetlić przywołyny element kodu lub elementy kodu z mapy, otwórz menu skrótów dla elementu kodu lub linku. Wybierz pozycję Przejdź do odwołania , a następnie element kodu.