DGML dosyalarını düzenleyerek kod haritalarını özelleştirme

Kod eşlemesini özelleştirmek için Yönlendirilmiş Graf İşaretleme Dili (.dgml) dosyasını düzenleyebilirsiniz. Örneğin, öğeleri düzenleyerek özel stiller belirtebilir, kod öğelerine ve bağlantılara özellikler ve kategoriler atayabilir ya da belgeleri ya da URL'leri kod öğelerine veya bağlantılara bağlayabilirsiniz. DGML öğeleri hakkında daha fazla bilgi için bkz . Yönlendirilmiş Graf İşaretleme Dili (DGML) başvurusu.

Kod eşlemesinin .dgml dosyasını bir metinde veya XML düzenleyicisinde düzenleyin. Harita Visual Studio çözümünüzün bir parçasıysa, Çözüm Gezgini seçin, kısayol menüsünü açın ve Birlikte Aç, XML (Metin) Düzenleyicisi'ni seçin.

Not

Kod eşlemeleri oluşturmak için Visual Studio Enterprise sürümüne sahip olmanız gerekir. Visual Studio'da bir kod eşlemesini düzenlediğinizde, .dgml dosyasını kaydettiğinizde kullanılmayan DGML öğelerini ve özniteliklerini silerek temizler. Ayrıca, yeni bağlantıları el ile eklediğinizde kod öğelerini otomatik olarak oluşturur. .dgml dosyasını kaydettiğinizde, bir öğeye eklediğiniz tüm öznitelikler kendilerini alfabetik sırada yeniden düzenleyebilir.

Kod öğelerini gruplandırma

Yeni gruplar ekleyebilir veya mevcut düğümleri bir gruba dönüştürebilirsiniz.

  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Bir kod öğesini gruba dönüştürmek için bu kod öğesinin <Node/> öğesini bulun.

    - veya -

    Yeni bir grup eklemek için bölümünü bulun <Nodes> . Yeni <Node/> bir öğe ekleyin.

  3. öğesinde <Node/> , grubun genişletilmiş mi yoksa daraltılmış mı görüneceğini belirtmek için bir Group öznitelik ekleyin. Örneğin:

    <Nodes>
       <Node Id="MyFirstGroup" Group="Expanded" />
       <Node Id="MySecondGroup" Group="Collapsed" />
    </Nodes>
    
  4. <Links> bölümünde, bir <Link/> grup kodu öğesi ile alt kod öğeleri arasındaki her ilişki için aşağıdaki özniteliklere sahip bir öğenin mevcut olduğundan emin olun:

    • Source Grup kodu öğesini belirten bir öznitelik

    • Target Alt kod öğesini belirten bir öznitelik

    • Category Grup kodu öğesi ile alt kod öğesi arasındaki ilişkiyi Contains belirten öznitelik

      Örneğin:

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

    Öznitelik hakkında Category daha fazla bilgi için bkz . Kod öğelerine ve bağlantılara kategori atama.

Haritanın stilini değiştirme

Haritanın .dgml dosyasını düzenleyerek haritanın arka plan rengini ve kenarlık rengini değiştirebilirsiniz. Kod öğelerinin ve bağlantıların stilini değiştirmek için bkz . Kod öğelerinin ve bağlantıların stilini değiştirme.

  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. öğesinin <DirectedGraph> stilini değiştirmek için aşağıdaki özniteliklerden herhangi birini ekleyin:

    Arka plan rengi

    Background="ColorNameOrHexadecimalValue"
    

    Kenarlık rengi

    Stroke="StrokeValue"
    

    Örneğin:

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

Kod öğelerinin ve bağlantıların stilini değiştirme

Aşağıdaki kod öğelerine özel stiller uygulayabilirsiniz:

  • Tek kod öğeleri ve bağlantıları

  • Kod öğesi ve bağlantı grupları

  • Belirli koşullara göre kod öğesi ve bağlantı grupları

İpucu

Birçok kod öğesinde veya bağlantıda yinelenen stilleriniz varsa, bu kod öğelerine veya bağlantılarına bir kategori uygulamayı ve ardından bu kategoriye bir stil uygulamayı düşünebilirsiniz. Daha fazla bilgi için bkz . Kod öğelerine Kategori Atama ve Bağlantılar ve Kod öğelerine ve Bağlantılara Özellikler Atama.

Tek bir kod öğesine özel stil uygulamak için
  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Kod öğesinin <Node/> öğesini bulun. Stilini özelleştirmek için bu özniteliklerden herhangi birini ekleyin:

    Arka plan rengi

    Background="ColorNameOrHexadecimalValue"
    

    Anahat

    Stroke="ColorNameOrHexadecimalValue"
    

    Anahat kalınlığı

    StrokeThickness="StrokeValue"
    

    Metin rengi

    Foreground="ColorNameOrHexadecimalValue"
    

    Icon

    Icon="IconFilePathLocation"
    

    Metin boyutu

    FontSize="FontSizeValue"
    

    Metin türü

    FontFamily="FontFamilyName"
    

    Metin ağırlığı

    FontWeight="FontWeightValue"
    

    Metin stili

    FontStyle="FontStyleName"
    

    Örneğin, metin stili olarak belirtebilirsiniz Italic .

    Doku

    Style="Glass"
    
    • Veya-
    Style="Plain"
    

    Şekil

    Şekli bir simgeyle değiştirmek için özelliğini olarak ayarlayın Shape ve özelliği simge dosyasıyla yola ayarlayınIcon.None

    Shape="ShapeFilePathLocation"
    

    Örneğin:

    <Nodes>
       <Node Id="MyNode" Background="#FF008000" Stroke="#FF000000"
       Foreground="#FFFFFFFF" Icon="...\Icons\Globe.png"/>
    </Nodes>
    
  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Hem kaynak kod öğesinin <Link/> adlarını hem de hedef kod öğesini içeren öğesini bulun.

  3. öğesinin <Link/> stilini özelleştirmek için aşağıdaki özniteliklerden herhangi birini ekleyin:

    Anahat ve ok ucu rengi

    Stroke="ColorNameOrHexadecimalValue"
    

    Anahat kalınlığı

    StrokeThickness="StrokeValue"
    

    Anahat stili

    StrokeDashArray="StrokeArrayValues"
    

    Örneğin:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" Background="Green" Stroke="#FF000000" StrokeDashArray="2,2"/>
    </Links>
    
  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Öğe <Styles></Styles> yoksa, öğesinin altına öğesinin <DirectedGraph></DirectedGraph><Links></Links> arkasına bir öğe ekleyin.

  3. öğesinde <Styles></Styles> öğesinin <Style/> altında aşağıdaki öznitelikleri belirtin:

    • TargetType="Node | Link | Graph"

    • GroupLabel="NameInLegendBox"

    • ValueLabel="NameInStylePickerBox"

      Tüm hedef türlere özel bir stil uygulamak için bir koşul kullanmayın.

  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. öğesinde<Style/>, Boole değeri döndüren bir Expression ifade belirtmek için özniteliğini içeren bir öğe ekleyin<Condition/>.

    Örneğin:

    <Condition Expression="MyCategory"/>
    
    • Veya-
    <Condition Expression="MyCategory > 100"/>
    
    • Veya-
    <Condition Expression="HasCategory('MyCategory')"/>
    

    Bu ifade aşağıdaki Backus-Naur Form (BNF) sözdizimini kullanır:

    <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
    

    Stili uygulamak için tümü doğru olması gereken birden çok <Condition/> öğe belirtebilirsiniz.

  3. öğesinden <Condition/> sonraki satırda, bir özniteliği ve sabit Value bir Property özniteliği veya koşulu karşılayan eşlemeye, kod öğelerine veya bağlantılara uygulanacak hesaplanan Expression özniteliği belirtmek için bir veya birden çok <Setter/> öğe ekleyin.

    Örneğin:

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

    Basit bir tam örnek olarak, aşağıdaki koşul bir kod öğesinin kategorisinin veya olarak ayarlanıp ayarlanmadığına bağlı olarak yeşil veya Falsekırmızı görüneceğini PassedTrue belirtir:

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

Aşağıdaki tabloda kullanabileceğiniz bazı örnek koşullar bulunmaktadır:

Yazı tipi boyutunu, kod öğesinin boyutunu da değiştiren kod satırı sayısının bir işlevi olarak ayarlayın. Bu örnekte, FontSizeFontFamilyve birden çok özellik ayarlamak için tek bir koşullu ifade kullanılır.

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

Bir kod öğesinin arka plan rengini özelliğine Coverage göre ayarlayın. Stiller, deyimlere benzer if-else şekilde göründükleri sırayla değerlendirilir.

Bu örnekte:

  1. 80 ise Coverage> özelliğini yeşil olarak ayarlayın Background .

  2. 50 ise >Coverage, özelliğin değerine Coverage göre turuncu bir gölgeye ayarlayınBackground.

  3. Aksi halde özelliği, özelliğin Background değerine göre kırmızı bir gölgeye Coverage ayarlayın.

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

simgenin Shape şeklin yerini alacak şekilde özelliğini None olarak ayarlayın. simgesinin Icon konumunu belirtmek için özelliğini kullanın.

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

Kod öğelerine ve bağlantılara özellik atama

Kod öğelerine ve bağlantılara özellikler atayarak bunları düzenleyebilirsiniz. Örneğin, belirli özellikleri olan kod öğelerini seçerek gruplandırabilir, stillerini değiştirebilir veya gizleyebilirsiniz.

Bir kod öğesine özellik atamak için

  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Bu kod öğesinin <Node/> öğesini bulun. Özelliğin adını ve değerini belirtin. Örneğin:

    <Nodes>
       <Node Id="MyNode" MyPropertyName="PropertyValue" />
    </Nodes>
    
  3. Görünür adı ve veri türü gibi öznitelikleri belirtmek için bölümüne bir <Property/> öğe <Properties> ekleyin:

    <Properties>
       <Property Id="MyPropertyName" Label="My Property" DataType="System.DataType"/>
    </Properties>
    
  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Hem kaynak kod öğesinin <Link/> adlarını hem de hedef kod öğesini içeren öğesini bulun.

  3. öğesinde <Node/> özelliğin adını ve değerini belirtin. Örneğin:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" MyPropertyName="PropertyValue" />
    </Links>
    
  4. Görünür adı ve veri türü gibi öznitelikleri belirtmek için bölümüne bir <Property/> öğe <Properties> ekleyin:

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

Kod öğelerine ve bağlantılara kategori atama

Aşağıdaki bölümlerde, bunlara kategoriler atayarak kod öğelerini nasıl düzenleyebileceğiniz ve devralma kullanarak kod öğelerini düzenlemenize ve alt kategorilere öznitelik eklemenize yardımcı olacak hiyerarşik kategoriler oluşturma işlemleri gösterilmektedir.

Kod öğesine kategori atamak için

  • .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  • <Node/> İstediğiniz kod öğesinin öğesini bulun.

  • öğesinde <Node/> , kategorinin adını belirtmek için bir Category öznitelik ekleyin. Örneğin:

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

    Bu kategori için <Categories> görüntüleme metnini belirtmek üzere özniteliğini kullanabilmek Label için bölümüne bir <Category/> öğe ekleyin:

    <Categories>
       <Category Id="MyCategory" Label="My Category" />
    </Categories>
    
  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Hem kaynak kod öğesinin <Link/> adlarını hem de hedef kod öğesini içeren öğesini bulun.

  3. öğesinde <Link/> , kategorinin adını belirtmek için bir Category öznitelik ekleyin. Örneğin:

    <Links>
       <Link Source="MyFirstNode" Target="MySecondNode" Category="MyCategory"
    </Links>
    
  4. Bu kategori için <Categories> görüntüleme metnini belirtmek üzere özniteliğini kullanabilmek Label için bölümüne bir <Category/> öğe ekleyin:

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

Hiyerarşik kategoriler oluşturmak için

  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. Üst kategori için bir <Category/> öğe ekleyin ve ardından özniteliğini alt kategorinin <Category/> öğesine ekleyinBasedOn.

    Örneğin:

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

    Bu örnekte, özniteliği özniteliğini devraldığından Category öğesinin Background arka planı MyFirstNode yeşildirMyParentCategory.

Belgeleri veya URL'leri kod öğelerine ve bağlantılara bağlama

Haritanın .dgml dosyasını düzenleyerek ve bir kod öğesinin öğesine veya bağlantının öğesine bir Reference öznitelik <Node/> ekleyerek belgeleri veya URL'leri kod öğelerine <Link/> veya bağlantılara bağlayabilirsiniz. Ardından bu içeriği kod öğesinden veya bağlantıdan açabilir ve görüntüleyebilirsiniz. özniteliği, Reference bu içeriğin yolunu belirtir. Bu, .dgml dosya konumu veya mutlak yol ile göreli bir yol olabilir.

Dikkat

Göreli yollar kullanıyorsanız ve .dgml dosyası farklı bir konuma taşınırsa, bu yollar artık çözümlenmez. Bağlantılı içeriği açmaya ve görüntülemeye çalıştığınızda, içeriğin görüntülenemediğini bildiren bir hata ortaya çıkar.

Örneğin, aşağıdaki kod öğelerini bağlamak isteyebilirsiniz:

  • Bir sınıfta yapılan değişiklikleri açıklamak için bir iş kodu öğesinin, belgenin veya başka bir .dgml dosyasının URL'sini bir sınıfın kod öğesine bağlayabilirsiniz.

  • Bir bağımlılık diyagramını, yazılımın mantıksal mimarisindeki bir katmanı temsil eden bir grup kodu öğesine bağlayabilirsiniz.

  • Bir arabirimi kullanıma sunan bir bileşen hakkında daha fazla bilgi göstermek için, bir bileşen diyagramını bu arabirimin kod öğesine bağlayabilirsiniz.

  • Bir kod öğesini Team Foundation Server iş öğesine veya hatasına ya da kod öğesiyle ilgili diğer bazı bilgilere bağlayın.

  1. .dgml dosyasını bir metinde veya XML düzenleyicisinde açın.

  2. <Node/> İstediğiniz kod öğesinin öğesini bulun.

  3. Aşağıdaki tabloda yer alan görevlerden birini gerçekleştirin:

    Tek bir kod öğesi

    • veya <Link/> öğesinde<Node/>, kod öğesinin konumunu belirtmek için bir Reference öznitelik ekleyin.

      Not

      Öğe başına yalnızca bir Reference özniteliğiniz olabilir.

      Örneğin:

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

    Birden çok kod öğesi

    1. or <Link/> öğesinde<Node/>, her başvurunun konumunu belirtmek için yeni bir öznitelik ekleyin.

    2. <Properties> Bölümünde:

      1. Her yeni başvuru türü için bir <Property/> öğe ekleyin.

      2. özniteliğini Id yeni başvuru özniteliğinin adı olarak ayarlayın.

      3. Başvurunun kod öğesinin IsReferenceBaşvuruya Git kısayol menüsünde görünmesini sağlamak için özniteliğini ekleyin ve olarak ayarlayınTrue.

      4. Kod öğesinin LabelBaşvuruya Git kısayol menüsünde görünen metni belirtmek için özniteliğini kullanın.

      Örneğin:

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

    Haritada kod öğesinin adı altı çizili olarak görünür. Kod öğesinin veya bağlantının kısayol menüsünü açtığınızda, seçebileceğiniz bağlantılı kod öğelerini içeren Başvuruya Git kısayol menüsü görürsünüz.

  4. Başvuruda bu dizeyi ReferenceTemplate yinelemek yerine birden çok başvuru tarafından kullanılan URL gibi ortak bir dize belirtmek için özniteliğini kullanın.

    özniteliği, ReferenceTemplate başvurunun değeri için bir yer tutucu belirtir. Aşağıdaki örnekte, {0} özniteliğindeki ReferenceTemplate yer tutucu, tam yol oluşturmak için öğesindeki <Node/> ve MySecondReference özniteliklerinin değerleriyle MyFirstReference değiştirilecektir:

    <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. Başvuruda bulunılan kod öğesini veya kod öğelerini eşlemeden görüntülemek için kod öğesinin kısayol menüsünü veya bağlantıyı açın. Başvuruya Git'i ve ardından kod öğesini seçin.