Sdílet prostřednictvím


Přizpůsobení map kódu úpravou souborů DGML

Pokud chcete přizpůsobit mapu kódu, můžete upravit její soubor .dgml (Directed Graph Markup Language). Můžete například upravit prvky a určit vlastní styly, přiřadit vlastnosti a kategorie prvkům kódu a odkazům nebo propojit dokumenty nebo adresy URL s prvky kódu nebo odkazy. Další informace o elementech DGML naleznete v tématu Režie Graph Markup Language (DGML).

Upravte soubor .dgml mapy kódu v textovém nebo xml editoru. Pokud je mapa součástí vašeho řešení sady Visual Studio, vyberte ji v Průzkumník řešení, otevřete místní nabídku a zvolte Editor Open With, XML (Text).

Poznámka:

Pokud chcete vytvářet mapy kódu, musíte mít edici Visual Studio Enterprise. Při úpravě mapy kódu v sadě Visual Studio vyčistí všechny nepoužívané elementy a atributy DGML jejich odstraněním při uložení souboru .dgml. Vytvoří také prvky kódu automaticky při ručním přidávání nových odkazů. Při ukládání souboru .dgml mohou být všechny atributy, které byly přidány do prvku, uspořádány podle abecedy.

Seskupovat prvky kódu

Můžete přidat nové skupiny nebo převést existující uzly do skupiny.

  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. Chcete-li převést prvek kódu na skupinu, vyhledejte <Node/> element pro tento element kódu.

    - nebo -

    Pokud chcete přidat novou skupinu, najděte <Nodes> oddíl. Přidejte nový <Node/> prvek.

  3. Do elementu <Node/> Group přidejte atribut, který určuje, zda se skupina zobrazí rozbalená nebo sbalená. Příklad:

    <Nodes>
       <Node Id="MyFirstGroup" Group="Expanded" />
       <Node Id="MySecondGroup" Group="Collapsed" />
    </Nodes>
    
  4. <Links> V části se ujistěte, že <Link/> pro každou relaci mezi elementem kódu skupiny a jeho podřízenými elementy kódu existuje prvek, který má následující atributy:

    • Atribut Source , který určuje prvek kódu skupiny

    • Atribut Target , který určuje podřízený prvek kódu

    • Atribut Category , který určuje vztah mezi elementem Contains kódu skupiny a jeho podřízeným prvkem kódu

      Příklad:

    <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>
    

    Další informace o atributu Category naleznete v tématu Přiřazení kategorií elementům kódu a odkazům.

Změna stylu mapy

Barvu pozadí a barvu ohraničení mapy můžete změnit úpravou souboru .dgml mapy. Pokud chcete změnit styl prvků kódu a odkazů, přečtěte si téma Změna stylu prvků kódu a odkazů.

  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. Do elementu <DirectedGraph> přidejte některý z následujících atributů, abyste změnili jeho styl:

    Barva pozadí

    Background="ColorNameOrHexadecimalValue"
    

    Barvu ohraničení

    Stroke="StrokeValue"
    

    Příklad:

    <DirectedGraph Background="Green" xmlns="http://schemas.microsoft.com/vs/2009/dgml" >
       ...
       ...
    </DirectedGraph>
    

Změna stylu prvků kódu a odkazů

Vlastní styly můžete použít u následujících prvků kódu:

  • Prvky a odkazy s jedním kódem

  • Skupiny prvků kódu a odkazů

  • Skupiny prvků kódu a odkazů na základě určitých podmínek

Tip

Pokud máte opakující se styly napříč mnoha prvky kódu nebo odkazy, můžete zvážit použití kategorie na tyto prvky kódu nebo odkazy a pak použít styl pro tuto kategorii. Další informace naleznete v tématu Přiřazení kategorií elementům kódu a odkazům a přiřazení vlastností elementům kódu a odkazům.

Použití vlastního stylu pro jeden prvek kódu
  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. Najděte prvek elementu <Node/> kódu. Přidejte některý z těchto atributů a přizpůsobte si jeho styl:

    Barva pozadí

    Background="ColorNameOrHexadecimalValue"
    

    Obrys

    Stroke="ColorNameOrHexadecimalValue"
    

    Tloušťka obrysu

    StrokeThickness="StrokeValue"
    

    Barva textu

    Foreground="ColorNameOrHexadecimalValue"
    

    Ikona

    Icon="IconFilePathLocation"
    

    Velikost textu

    FontSize="FontSizeValue"
    

    Typ textu

    FontFamily="FontFamilyName"
    

    Tloušťka textu

    FontWeight="FontWeightValue"
    

    Styl textu

    FontStyle="FontStyleName"
    

    Můžete například zadat Italic styl textu.

    Textura

    Style="Glass"
    

    nebo

    Style="Plain"
    

    Tvar

    Pokud chcete obrazec nahradit ikonou, nastavte Shape vlastnost na None cestu k souboru ikony a nastavte Icon ji na cestu.

    Shape="ShapeFilePathLocation"
    

    Příklad:

    <Nodes>
       <Node Id="MyNode" Background="#FF008000" Stroke="#FF000000"
       Foreground="#FFFFFFFF" Icon="...\Icons\Globe.png"/>
    </Nodes>
    
  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Link/> Najděte prvek, který obsahuje jak názvy elementu zdrojového kódu, tak cílový prvek kódu.

  3. Do elementu <Link/> přidejte některý z následujících atributů pro přizpůsobení jeho stylu:

    Barva obrysu a šipky

    Stroke="ColorNameOrHexadecimalValue"
    

    Tloušťka obrysu

    StrokeThickness="StrokeValue"
    

    Styl obrysu

    StrokeDashArray="StrokeArrayValues"
    

    Příklad:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" Background="Green" Stroke="#FF000000" StrokeDashArray="2,2"/>
    </Links>
    
  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Styles></Styles> Pokud prvek neexistuje, přidejte ho <DirectedGraph></DirectedGraph> pod element za <Links></Links> element.

  3. <Styles></Styles> V elementu <Style/> pod elementem a zadejte následující atributy:

    • TargetType="Node | Link | Graph"

    • GroupLabel="NameInLegendBox "

    • ValueLabel="NameInStylePickerBox "

      Pro použití vlastního stylu na všechny cílové typy nepoužívejte podmínku.

  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Style/> V elementu <Condition/> přidejte prvek, který obsahuje Expression atribut pro určení výrazu, který vrací logickou hodnotu.

    Příklad:

    <Condition Expression="MyCategory"/>
    

    nebo

    <Condition Expression="MyCategory > 100"/>
    

    nebo

    <Condition Expression="HasCategory('MyCategory')"/>
    

    Tento výraz používá následující syntaxi BNF (Backus-Naur Form):

    <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 point
    

    Můžete zadat více <Condition/> prvků, které musí být splněny pro použití stylu.

  3. Na dalším řádku za <Condition/> element přidejte jeden nebo více <Setter/> prvků k určení atributu Property a pevného Value atributu nebo vypočítaného Expression atributu, který se má použít pro mapování, elementy kódu nebo odkazy, které splňují podmínku.

    Příklad:

    <Setter Property="BackGround" Value="Green"/>
    

    Jako jednoduchý úplný příklad následující podmínka určuje, že prvek kódu se zobrazuje zelenou nebo červenou na základě toho, zda je jeho Passed kategorie nastavena na True nebo False:

<?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>

Následující tabulka obsahuje některé ukázkové podmínky, které lze použít:

Nastavte velikost písma jako funkci počtu řádků kódu, což také změní velikost prvku kódu. Tento příklad používá jeden podmíněný výraz k nastavení více vlastností FontSize a 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>

Nastavte barvu pozadí prvku kódu na Coverage základě vlastnosti. Styly se vyhodnocují v pořadí, v jakém se zobrazují, podobně jako if-else příkazy.

V tomto příkladu:

  1. Pokud Coverage je > 80, nastavte vlastnost na zelenou Background .

  2. Else if Coverage is > 50, then set Background the property to a shade of orange based on the value of the Coverage property.

  3. Jinak nastavte Background vlastnost na odstín červené na základě hodnoty Coverage vlastnosti.

<?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 Nastavte vlastnost takNone, aby ikona nahradila obrazec. Icon Pomocí vlastnosti zadejte umístění 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>

Přiřazení vlastností elementům kódu a odkazům

Prvky kódu a odkazy můžete uspořádat tak, že jim přiřadíte vlastnosti. Můžete například vybrat prvky kódu, které mají specifické vlastnosti, abyste je mohli seskupit, změnit jejich styl nebo je skrýt.

Přiřazení vlastnosti elementu kódu

  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Node/> Vyhledejte prvek pro tento element kódu. Zadejte název vlastnosti a její hodnotu. Příklad:

    <Nodes>
       <Node Id="MyNode" MyPropertyName="PropertyValue" />
    </Nodes>
    
  3. <Property/> Přidejte do oddílu <Properties> prvek, který určuje atributy, jako je jeho viditelný název a datový typ:

    <Properties>
       <Property Id="MyPropertyName" Label="My Property" DataType="System.DataType"/>
    </Properties>
    
  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Link/> Najděte prvek, který obsahuje jak názvy elementu zdrojového kódu, tak cílový prvek kódu.

  3. <Node/> V elementu zadejte název vlastnosti a její hodnotu. Příklad:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" MyPropertyName="PropertyValue" />
    </Links>
    
  4. <Property/> Přidejte do oddílu <Properties> prvek, který určuje atributy, jako je jeho viditelný název a datový typ:

    <Properties>
       <Property Id="MyPropertyName" Label="My Property Name" DataType="System.DataType"/>
    </Properties>
    

Přiřazení kategorií prvkům kódu a odkazům

Následující části ukazují, jak můžete prvky kódu uspořádat tak, že jim přiřadíte kategorie a jak můžete vytvořit hierarchické kategorie, které vám pomůžou uspořádat prvky kódu a přidat atributy do podřízených kategorií pomocí dědičnosti.

Přiřazení kategorie elementu kódu

  • Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  • <Node/> Vyhledejte prvek požadovaného prvku kódu.

  • V elementu <Node/> Category přidejte atribut, který určuje název kategorie. Příklad:

    <Nodes>
       <Node Id="MyNode" Category="MyCategory" />
    </Nodes>
    

    <Category/> Přidejte do oddílu <Categories> prvek, abyste mohli pomocí Label atributu zadat zobrazovaný text pro danou kategorii:

    <Categories>
       <Category Id="MyCategory" Label="My Category" />
    </Categories>
    
  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Link/> Najděte prvek, který obsahuje jak názvy elementu zdrojového kódu, tak cílový prvek kódu.

  3. V elementu <Link/> Category přidejte atribut, který určuje název kategorie. Příklad:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" Category="MyCategory"
    </Links>
    
  4. <Category/> Přidejte do oddílu <Categories> prvek, abyste mohli pomocí Label atributu zadat zobrazovaný text pro danou kategorii:

    <Categories>
       <Category Id="MyCategory" Label="My Category" />
    </Categories>
    

Vytvoření hierarchických kategorií

  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Category/> Přidejte prvek pro nadřazenou kategorii a pak přidejte BasedOn atribut do podřízeného <Category/> prvku kategorie.

    Příklad:

    <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>
    

    V tomto příkladu je pozadí MyFirstNode zelené, protože jeho Category atribut dědí Background atribut .MyParentCategory

Propojení dokumentů nebo adres URL s prvky kódu a odkazy

Dokumenty nebo adresy URL můžete propojit s prvky kódu nebo odkazy úpravou souboru .dgml mapy a přidáním Reference atributu do elementu <Node/> kódu nebo elementu <Link/> odkazu. Tento obsah pak můžete otevřít a zobrazit z elementu kódu nebo odkazu. Atribut Reference určuje cestu k danému obsahu. To může být cesta relativní k umístění souboru .dgml nebo absolutní cesta.

Upozornění

Pokud použijete relativní cestu a soubor .dgml bude přesunut do jiného umístění, pak tuto cestu nebude možné interpretovat. Při pokusu o otevření a zobrazení propojeného obsahu, dojde k chybě oznamující, že obsah nelze zobrazit.

Můžete například chtít propojit následující prvky kódu:

  • Chcete-li popsat změny třídy, můžete propojit adresu URL prvku pracovního kódu, dokumentu nebo jiného souboru .dgml s elementem kódu pro třídu.

  • Diagram závislostí můžete propojit s prvkem kódu skupiny, který představuje vrstvu v logické architektuře softwaru.

  • Pokud chcete zobrazit další informace o komponentě, která zveřejňuje rozhraní, můžete propojit diagram komponent s prvkem kódu pro toto rozhraní.

  • Propojte prvek kódu s pracovní položkou nebo chybou Team Foundation Serveru nebo s dalšími informacemi souvisejícími s prvkem kódu.

  1. Otevřete soubor .dgml v textovém editoru nebo editoru XML.

  2. <Node/> Vyhledejte prvek požadovaného prvku kódu.

  3. Proveďte jednu z úloh z následující tabulky:

    Jeden prvek kódu

    • Do elementu <Node/> nebo <Link/> elementu přidejte Reference atribut, který určuje umístění elementu kódu.

      Poznámka:

      Pro každý prvek můžete mít pouze jeden Reference atribut.

      Příklad:

    <Nodes>
       <Node Id="MyNode" Reference="MyDocument.txt" />
    </Nodes>
    <Properties>
       <Property Id="Reference" Label="My Document" DataType="System.String" IsReference="True" />
    </Properties>
    

    Více prvků kódu

    1. Do elementu <Node/> nebo <Link/> elementu přidejte nový atribut, který určuje umístění jednotlivých odkazů.

    2. <Properties> V části:

      1. <Property/> Přidejte prvek pro každý nový typ odkazu.

      2. Id Nastavte atribut na název nového referenčního atributu.

      3. IsReference Přidejte atribut a nastavte ho tak, aby True se odkaz zobrazoval v místní nabídce Přejít na odkaz prvku kódu.

      4. Pomocí atributu Label zadejte zobrazovaný text v místní nabídce Přejít na odkaz prvku kódu.

      Příklad:

    <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 mapě se název prvku kódu zobrazí podtržené. Když otevřete místní nabídku pro prvek kódu nebo odkaz, zobrazí se místní nabídka Přejít na odkaz , která obsahuje propojené prvky kódu, které můžete zvolit.

  4. ReferenceTemplate Atribut použijte k určení běžného řetězce, například adresy URL, který je používán více odkazy místo opakování tohoto řetězce v odkazu.

    Atribut ReferenceTemplate určuje zástupný symbol pro hodnotu odkazu. V následujícím příkladu {0} bude zástupný symbol v atributu ReferenceTemplate nahrazen hodnotami MyFirstReference a MySecondReference atributy v elementu <Node/> , aby vytvořil úplnou cestu:

    <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>
    
  5. Pokud chcete zobrazit odkazovaný prvek kódu nebo prvky kódu z mapy, otevřete místní nabídku pro prvek kódu nebo odkaz. Zvolte Přejít na odkaz a potom prvek kódu.