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.
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
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.öğesinde
<Node/>
, grubun genişletilmiş mi yoksa daraltılmış mı görüneceğini belirtmek için birGroup
öznitelik ekleyin. Örneğin:<Nodes> <Node Id="MyFirstGroup" Group="Expanded" /> <Node Id="MySecondGroup" Group="Collapsed" /> </Nodes>
<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 öznitelikTarget
Alt kod öğesini belirten bir öznitelikCategory
Grup kodu öğesi ile alt kod öğesi arasındaki ilişkiyiContains
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.
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
öğ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
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
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"
Simge
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>
Özel bir stili tek bir bağlantıya uygulamak için
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
Hem kaynak kod öğesinin
<Link/>
adlarını hem de hedef kod öğesini içeren öğesini bulun.öğ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>
Kod öğeleri veya bağlantıları grubuna özel stiller uygulamak için
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
Öğe
<Styles></Styles>
yoksa, öğesinin altına öğesinin<DirectedGraph></DirectedGraph>
<Links></Links>
arkasına bir öğe ekleyin.öğ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.
Kod öğesi veya bağlantı gruplarına koşullu stil uygulamak için
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
öğesinde
<Style/>
, Boole değeri döndüren birExpression
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.öğesinden
<Condition/>
sonraki satırda, bir özniteliği ve sabitValue
birProperty
özniteliği veya koşulu karşılayan eşlemeye, kod öğelerine veya bağlantılara uygulanacak hesaplananExpression
ö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
False
kırmızı görüneceğiniPassed
True
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, FontSize
FontFamily
ve 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:
80 ise
Coverage
> özelliğini yeşil olarak ayarlayınBackground
.50 ise >
Coverage
, özelliğin değerineCoverage
göre turuncu bir gölgeye ayarlayınBackground
.Aksi halde özelliği, özelliğin
Background
değerine göre kırmızı bir gölgeyeCoverage
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
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
Bu kod öğesinin
<Node/>
öğesini bulun. Özelliğin adını ve değerini belirtin. Örneğin:<Nodes> <Node Id="MyNode" MyPropertyName="PropertyValue" /> </Nodes>
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>
Bağlantıya bir özellik atamak için
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
Hem kaynak kod öğesinin
<Link/>
adlarını hem de hedef kod öğesini içeren öğesini bulun.öğesinde
<Node/>
özelliğin adını ve değerini belirtin. Örneğin:<Links> <Link Source="MyFirstNode" Target="MySecondNode" MyPropertyName="PropertyValue" /> </Links>
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 birCategory
ö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 kullanabilmekLabel
için bölümüne bir<Category/>
öğe ekleyin:<Categories> <Category Id="MyCategory" Label="My Category" /> </Categories>
Bir bağlantıya kategori atamak için
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
Hem kaynak kod öğesinin
<Link/>
adlarını hem de hedef kod öğesini içeren öğesini bulun.öğesinde
<Link/>
, kategorinin adını belirtmek için birCategory
öznitelik ekleyin. Örneğin:<Links> <Link Source="MyFirstNode" Target="MySecondNode" Category="MyCategory" </Links>
Bu kategori için
<Categories>
görüntüleme metnini belirtmek üzere özniteliğini kullanabilmekLabel
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
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
Ü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
öğesininBackground
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.
Bir belgeyi veya URL'yi bir kod öğesine bağlamak için
.dgml dosyasını bir metinde veya XML düzenleyicisinde açın.
<Node/>
İstediğiniz kod öğesinin öğesini bulun.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 birReference
ö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
or
<Link/>
öğesinde<Node/>
, her başvurunun konumunu belirtmek için yeni bir öznitelik ekleyin.<Properties>
Bölümünde:Her yeni başvuru türü için bir
<Property/>
öğe ekleyin.özniteliğini
Id
yeni başvuru özniteliğinin adı olarak ayarlayın.Başvurunun kod öğesinin
IsReference
Başvuruya Git kısayol menüsünde görünmesini sağlamak için özniteliğini ekleyin ve olarak ayarlayınTrue
.Kod öğesinin
Label
Baş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.
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ğindekiReferenceTemplate
yer tutucu, tam yol oluşturmak için öğesindeki<Node/>
veMySecondReference
özniteliklerinin değerleriyleMyFirstReference
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>
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.