Aracılığıyla paylaş


Bağımlılık diyagramları ile kod doğrulama

Bağımlılık diyagramları neden kullanılır?

Kodun tasarımıyla çakışmadığından emin olmak için Visual Studio'da bağımlılık diyagramlarıyla kodunuzu doğrulayın. Bu, şu konularda size yardımcı olabilir:

  • Kodunuzdaki bağımlılıklar ile bağımlılık diyagramındaki bağımlılıklar arasındaki çakışmaları bulun.

  • Önerilen değişiklikler tarafından etkilenebilecek bağımlılıkları bulun.

    Örneğin, bağımlılık diyagramını düzenleyerek olası mimari değişikliklerini gösterebilir ve ardından etkilenen bağımlılıkları görmek için kodu doğrulayabilirsiniz.

  • Kodu yeniden düzenleyin veya kodu farklı bir tasarıma geçirin.

    Kodu farklı bir mimariye taşıdığınız zaman iş gerektiren kodu veya bağımlılıkları bulun.

Gereksinimler

  • Visual Studio

    .NET Core projesi için bağımlılık diyagramı oluşturmak için Visual Studio 2019 sürüm 16.2 veya sonraki bir sürümüne sahip olmanız gerekir.

  • Bağımlılık diyagramına sahip modelleme projesine sahip bir çözüm. Bu bağımlılık diyagramı, doğrulamak istediğiniz C# veya Visual Basic projelerindeki yapıtlara bağlanmalıdır. Bkz. Kodunuzdan bağımlılık diyagramları oluşturma.

Hangi Visual Studio sürümlerinin bu özelliği desteklediğini görmek için bkz . Mimari ve modelleme araçları için sürüm desteği.

Visual Studio'daki açık bağımlılık diyagramından veya komut isteminden kodu el ile doğrulayabilirsiniz. Ayrıca yerel derlemeleri veya Azure Pipelines derlemelerini çalıştırırken kodu otomatik olarak doğrulayabilirsiniz.

Önemli

Team Foundation Server 'ı (TFS) kullanarak katman doğrulaması çalıştırmak istiyorsanız, derleme sunucunuza aynı Visual Studio sürümünü de yüklemeniz gerekir.

Canlı bağımlılık doğrulaması

Bağımlılık doğrulaması gerçek zamanlı olarak gerçekleşir ve hatalar hemen Hata Listesi'nde gösterilir.

  • C# ve Visual Basic için canlı doğrulama desteklenir.

  • Canlı bağımlılık doğrulamasını kullanırken tam çözüm analizini etkinleştirmek için Hata Listesi'nde görüntülenen altın çubuktan seçenekler ayarlarını açın.

    • Çözümünüzdeki tüm mimari sorunları görmek istemiyorsanız altın çubuğu kalıcı olarak kapatabilirsiniz.
    • Tam çözüm analizini etkinleştirmezseniz analiz yalnızca düzenlenmekte olan dosyalar için yapılır.
  • Canlı doğrulamayı etkinleştirmek için projeleri yükseltirken, dönüştürme işleminin ilerleme durumunu gösteren bir iletişim kutusu görüntülenir.

  • Bir projeyi canlı bağımlılık doğrulaması için güncelleştirirken, NuGet paketinin sürümü tüm projeler için aynı olacak şekilde yükseltilir ve kullanımdaki en yüksek sürümdür.

  • Yeni bağımlılık doğrulama projesi eklemek bir proje güncelleştirmesini tetikler.

Bir öğenin doğrulamayı destekleyip desteklemediğini görme

Birden çok uygulama arasında paylaşılan projelerdeki web sitelerine, Office belgelerine, düz metin dosyalarına ve dosyalara katmanları bağlayabilirsiniz, ancak doğrulama işlemi bunları içermez. Doğrulama hataları, aralarında hiçbir bağımlılığın görünmediği ayrı katmanlara bağlanmış projelere veya derlemelere olan başvurular için görünmez. Kod bu başvuruları kullanmazsa böyle başvurular bağımlılık olarak düşünülmez.

  1. Bağımlılık diyagramında bir veya daha fazla katman seçin, seçiminize sağ tıklayın ve ardından Bağlantıları Görüntüle'ye tıklayın.

  2. Katman Gezgini'nde Doğrulamayı Destekler sütununa bakın. Değer false ise, öğe doğrulamayı desteklemez.

Diğer .NET derlemelerini ve projelerini doğrulama için dahil etme

Öğeleri bağımlılık diyagramına sürüklediğinizde, ilgili .NET derlemelerine veya projelerine başvurular modelleme projesindeki Katman Başvuruları klasörüne otomatik olarak eklenir. Bu klasör, doğrulama sırasında analiz edilen derlemeler ve projeler için başvurular içerir. Doğrulama için diğer .NET derlemelerini ve projelerini bağımlılık diyagramına el ile sürüklemeden ekleyebilirsiniz.

  1. Çözüm Gezgini'de modelleme projesine veya Katman Başvuruları klasörüne sağ tıklayın ve ardından Başvuru Ekle'ye tıklayın.

  2. Başvuru Ekle iletişim kutusunda derlemeleri veya projeleri seçin ve ardından Tamam'a tıklayın.

Kodu el ile doğrulama

Çözüm öğelerine bağlı açık bir bağımlılık diyagramınız varsa diyagramdan Kısayolu doğrula komutunu çalıştırabilirsiniz. Komut istemini, /p:ValidateArchitecture özel özelliği True olarak ayarlanmış şekilde msbuild komutunu çalıştırmak için de kullanabilirsiniz. Örneğin, kodda değişiklik yaparken bağımlılık çakışmalarını önceden yakalayabilmek için düzenli olarak katman doğrulama gerçekleştirin.

Açık bağımlılık diyagramından kodu doğrulama

  1. Diyagram yüzeyine sağ tıklayın ve ardından Mimariyi Doğrula'ya tıklayın.

    Not

    Varsayılan olarak, bağımlılık diyagramı (.layerdiagram) dosyasındaki Derleme Eylemi özelliği Doğrula olarak ayarlanır, böylece diyagram doğrulama işlemine eklenir.

    Hata Listesi penceresi, oluşan hataları bildirir. Doğrulama hataları hakkında daha fazla bilgi için bkz . Katman doğrulama sorunlarını giderme.

  2. Her hatanın kaynağını görüntülemek için Hata Listesi penceresinde hataya çift tıklayın.

    Not

    Visual Studio hatanın kaynağı yerine bir kod eşlemesi gösterebilir. Bu durum, kodun bağımlılık diyagramı tarafından belirtilmeyen bir derlemeye bağımlılığı olduğunda veya kodda bağımlılık diyagramı tarafından belirtilen bir bağımlılık eksik olduğunda oluşur. Bağımlılığın mevcut olup olmadığını belirlemek için kod eşlemesini veya kodu gözden geçirin. Kod eşlemeleri hakkında daha fazla bilgi için bkz . Çözümlerinizde bağımlılıkları eşleme.

  3. Hataları yönetmek için bkz . Katman doğrulama hatalarını çözme.

Komut isteminde kodu doğrulama

  1. Visual Studio komut istemini açın.

  2. Aşağıdakilerden birini seçin:

    • Çözümdeki belirli bir modelleme projesine karşı kodu doğrulamak için MSBuild'i aşağıdaki özel özellik ile çalıştırın.

      msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true
      

      -veya-

      Modelleme projesi (.modelproj) dosyasını ve bağımlılık diyagramını içeren klasöre göz atın ve aşağıdaki özel özellik ile MSBuild'i çalıştırın:

      msbuild /p:ValidateArchitecture=true
      
    • Kodu çözümdeki tüm modelleme projelerine karşı doğrulamak için MSBuild'i aşağıdaki özel özellik ile çalıştırın:

      msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true
      

      -veya-

      Bağımlılık diyagramı içeren bir modelleme projesi içermesi gereken çözüm klasörüne göz atın ve aşağıdaki özel özellik ile MSBuild'i çalıştırın:

      msbuild /p:ValidateArchitecture=true
      

      Oluşan hatalar listelenecektir. MSBuild hakkında daha fazla bilgi için bkz . MSBuild ve MSBuild Görevi.

    Doğrulama hataları hakkında daha fazla bilgi için bkz . Katman doğrulama sorunlarını giderme.

Doğrulama hatalarını yönetme

Geliştirme işlemi sırasında, doğrulama esnasında bildirilen çakışmaların bazılarını gizlemek isteyebilirsiniz. Örneğin, zaten çözdüğünüz veya özel senaryonuzla ilgili olmayan hataları gizlemek isteyebilirsiniz. Bir hatayı gizlediğinizde, Team Foundation'da bir iş öğesini günlüğe kaydetmek iyi bir uygulamadır.

Uyarı

Bir iş öğesi oluşturmak veya bu öğeye bağlanmak için zaten TFS Kaynak Kodu Denetimi'ne (SCC) bağlı olmanız gerekir. Farklı bir TFS SCC'sine bağlantı açmaya çalışırsanız, Visual Studio geçerli çözümü otomatik olarak kapatır. Bir iş öğesi oluşturmaya veya bu öğeye bağlanmaya çalışmadan önce uygun SCC'ye zaten bağlı olduğunuzdan emin olun. Visual Studio'nun sonraki sürümlerinde, bir SCC'ye bağlı değilseniz menü komutları kullanılamaz.

Doğrulama hatası için iş öğesi oluşturma

  • Hata Listesi penceresinde hataya sağ tıklayın, İş Öğesi Oluştur'un üzerine gelin ve oluşturmak istediğiniz iş öğesi türüne tıklayın.

Hata Listesi penceresinde doğrulama hatalarını yönetmek için şu görevleri kullanın:

İşlem Buradaki adımları izleyin
Doğrulama sırasında seçili hataları gizleme Seçilen bir veya birden çok hataya sağ tıklayın, Doğrulama Hatalarını Yönet'in üzerine gelin ve Hataları Gizle'ye tıklayın.

Gizlenen hatalar üstü çizili biçimde görünür. Doğrulamayı daha sonra çalıştırdığınızda bu hatalar görünmez.

Gizlenen hatalar, ilgili bağımlılık diyagramı dosyası için bir .suppressions dosyasında izlenir.
Seçili hataların gizlenmesini durdurma Seçili gizlenen hataya veya hatalara sağ tıklayın, Doğrulama Hatalarını Yönet'in üzerine gelin ve Hataları Gizlemeyi Durdur'a tıklayın.

Doğrulamayı daha sonra çalıştırdığınızda seçili gizlenen hatalar görünecektir.
Hata Listesi penceresindeki tüm gizlenen hataları geri yükleme Hata Listesi penceresinde herhangi bir yere sağ tıklayın, Doğrulama Hatalarını Yönet'in üzerine gelin ve ardından Tüm Gizlenen Hataları Göster'e tıklayın.
Tüm gizlenen hataları Hata Listesi penceresinde gizle Hata Listesi penceresinde herhangi bir yere sağ tıklayın, Doğrulama Hatalarını Yönet'in üzerine gelin ve ardından Tüm Gizlenen Hataları Gizle'ye tıklayın.

Kodu otomatik olarak doğrulama

Her yerel bir yapı çalıştırışınızda katman doğrulama gerçekleştirebilirsiniz. Ekibiniz Azure DevOps kullanıyorsa, özel bir MSBuild görevi oluşturarak belirtebileceğiniz geçitli iadelerle katman doğrulama gerçekleştirebilir ve doğrulama hatalarını toplamak için derleme raporlarını kullanabilirsiniz. Geçitli iade derlemeleri oluşturmak için bkz . TFVC geçitli iade.

Kodu yerel yapı sırasında otomatik olarak doğrulamak için

Modelleme projesi (.modelproj) dosyası açmak için metin düzenleyicisi kullanın ve ardından aşağıdaki özelliği ekleyin:

<ValidateArchitecture>true</ValidateArchitecture>

- veya -

  1. Çözüm Gezgini'da, bağımlılık diyagramını veya diyagramları içeren modelleme projesine sağ tıklayın ve ardından Özellikler'e tıklayın.

  2. Özellikler penceresinde modelleme projesinin Mimariyi Doğrula özelliğini True olarak ayarlayın.

    Bu, doğrulama işlemi içinde modelleme projesini içerir.

  3. Çözüm Gezgini'da, doğrulama için kullanmak istediğiniz bağımlılık diyagramı (.layerdiagram) dosyasına tıklayın.

  4. Özellikler penceresinde, diyagramın Derleme Eylemi özelliğinin Doğrula olarak ayarlandığından emin olun.

    Bu, doğrulama işlemindeki bağımlılık diyagramını içerir.

Hata Listesi penceresindeki hataları yönetmek için bkz . Katman doğrulama hatalarını çözme.

Katman doğrulama sorunlarını giderme

Aşağıdaki tabloda katman doğrulama sorunları ve bunların çözümü açıklanmaktadır. Bu sorunlar, kod ve tasarım arasındaki çakışmalarla sonuçlanan hatalardan ayrılır. Bu hatalar hakkında daha fazla bilgi için bkz . Katman doğrulama sorunlarını giderme.

Sorun Olası Neden Çözünürlük
Doğrulama hataları beklendiği gibi gerçekleşmez. Doğrulama, Çözüm Gezgini ve aynı modelleme projesindeki diğer bağımlılık diyagramlarından kopyalanan bağımlılık diyagramlarında çalışmaz. bu şekilde kopyalanan bağımlılık diyagramları, özgün bağımlılık diyagramıyla aynı başvuruları içerir. Modelleme projesine yeni bir bağımlılık diyagramı ekleyin.

Kaynak bağımlılık diyagramındaki öğeleri yeni diyagrama kopyalayın.

Katman doğrulama hatalarını çözme

Bir bağımlılık diyagramında kodu doğruladığınızda, kod tasarımla çakıldığında doğrulama hataları oluşur. Örneğin, aşağıdaki durumlar doğrulama hatalarının oluşmasına neden olabilir:

  • Yapı yanlış katmana atanmış. Bu durumda, yapıyı taşıyın.

  • Sınıf gibi bir yapı, başka bir sınıfı mimarinizle çakışacak şekilde kullanıyor. Bu durumda, bağımlılığı kaldırmak için kodu yeniden düzenleyin.

Bu hataları çözmek için doğrulama sırasında daha fazla hata görünmeyene kadar kodu güncelleştirin. Bu görevi yinelemeli bir şekilde gerçekleştirebilirsiniz.

Aşağıdaki bölümde, bu hatalarda kullanılan sözdizimi belirtilmekte, bu hataların anlamı açıklanmakta ve bunları çözmek veya yönetmek için yapabilecekleriniz önerilmektedir.

Söz dizimi Açıklama
ArtifactN(ArtifactTypeN) ArtifactN , bağımlılık diyagramındaki bir katmanla ilişkili bir yapıttır.

ArtifactTypeN, Sınıf veya Yöntem gibi ArtifactN türüdür, örneğin:

MySolution.MyProject.MyClass.MyMethod(Method)
NamespaceNameN Bir ad alanının adı.
LayerNameN Bağımlılık diyagramındaki bir katmanın adı.
Dependencytype Yapıt1 ile Artifact2 arasındaki bağımlılık ilişkisinin türü. Örneğin, Artifact1'in Artifact2 ile bir Çağrılar ilişkisi vardır.
Hata Söz Dizimi Hata Açıklaması
DV0001: Geçersiz Bağımlılık Katmana eşlenen bir kod öğesi (ad alanı, tür, üye) başka bir katmana eşlenen bir kod öğesine başvurduğunda ancak bu katmanları içeren bağımlılık doğrulama diyagramında bu katmanlar arasında bağımlılık oku olmadığında bu sorun bildirilir. Bu bir bağımlılık kısıtlaması ihlalidir.
DV1001: Geçersiz ad alanı adı Bu sorun, "İzin Verilen Ad Alanı Adları" özelliğinin bu kod öğesinin tanımlandığı ad alanını içermeyen bir katmanla ilişkilendirilmiş bir kod öğesinde bildirilir. Bu bir adlandırma kısıtlaması ihlalidir. "İzin Verilen Ad Alanı Adları" söz diziminin, ile ilişkilendirilmiş kod öğelerinin katman tanımlanmasına izin verilen ad alanlarının noktalı virgülle ayrılmış listesi olduğunu unutmayın.
DV1002: Başvurulamayan ad alanına bağımlılık Bu sorun, katmanla ilişkilendirilmiş bir kod öğesinde bildirilir ve katmanın "Başvurulamaz Ad Alanı" özelliğinde tanımlanan bir ad alanında tanımlanan başka bir kod öğesine başvurur. Bu bir adlandırma kısıtlaması ihlalidir. "Başvurulamayacak Ad Alanları" özelliğinin, bu katmanla ilişkili kod öğelerinde başvurulmaması gereken ad alanlarının Noktalı virgülle ayrılmış listesi olarak tanımlandığını unutmayın.
DV1003: İzin verilmeyen ad alanı adı Bu sorun, "İzin Verilmeyen Ad Alanı Adları" özelliğinin bu kod öğesinin tanımlandığı ad alanını içerdiği bir katmanla ilişkilendirilmiş bir kod öğesinde bildirilir. Bu bir adlandırma kısıtlaması ihlalidir. "İzin verilmeyen ad alanı adı" özelliğinin, bu Katmanla ilişkili kod öğelerinin tanımlanmaması gereken ad alanlarının Noktalı virgülle ayrılmış listesi olarak tanımlandığını unutmayın.
DV2001: Katman Diyagramı İletişim Durumu Bu sorun, bağımlılık diyagramı dosyası içermeyen ancak bağımlılık doğrulama çözümleyicilerine başvuran bir projede bildirilir. Bağımlılık Doğrulaması kullanılmadıysa, "Microsoft.DependencyValidation.Analyzers" öğesini doğrudan Çözüm Gezgini kaldırabilir veya bu uyarıyı gizleyebilirsiniz. Bağımlılık diyagramı eklemek için bkz. Kodunuzdan bağımlılık diyagramları oluşturma.
DV2002: Eşlenmemiş Türler Tabanı Bir kod öğesi herhangi bir katmana eşlenmediğinde bu sorun bildirilir.
DV3001: Eksik Bağlantı Katman 'LayerName', bulunamayan 'Artifact' bağlantısına bağlanır. Eksik bir derleme başvurunuz mu var?
DV9001: Mimari analiz iç hatalar buldu Sonuçlar tamamlanmamış olabilir. Daha fazla bilgi için ayrıntılı yapı olay günlüğü veya çıkış penceresine bakın.