Sdílet prostřednictvím


Ověřování kódu pomocí diagramů závislostí

Proč používat diagramy závislostí?

Abyste měli jistotu, že kód není v konfliktu s jeho návrhem, ověřte kód pomocí diagramů závislostí v sadě Visual Studio. To může pomoci při:

  • Najděte konflikty mezi závislostmi v kódu a závislostmi v diagramu závislostí.

  • Vyhledání závislostí, které mohou být ovlivněny navrhovanými změnami.

    Diagram závislostí můžete například upravit tak, aby zobrazoval potenciální změny architektury, a pak kód ověřte, aby se zobrazily ovlivněné závislosti.

  • Refaktorujte nebo přeneste kód do jiného návrhu.

    Vyhledejte kód nebo závislosti, které vyžadují práci při přenesení kódu do jiné architektury.

Požadavky

  • Visual Studio

    Pokud chcete vytvořit diagram závislostí pro projekt .NET Core, musíte mít Visual Studio 2019 verze 16.2 nebo novější.

  • Řešení, které má projekt modelování s diagramem závislostí. Tento diagram závislostí musí být propojený s artefakty v projektech jazyka C# nebo Visual Basic, které chcete ověřit. Viz Vytváření diagramů závislostí z kódu.

Pokud chcete zjistit, které edice sady Visual Studio tuto funkci podporují, přečtěte si téma Podpora edice pro nástroje pro architekturu a modelování.

Kód můžete ověřit ručně z otevřeného diagramu závislostí v sadě Visual Studio nebo z příkazového řádku. Kód můžete také automaticky ověřit při spouštění místních sestavení nebo sestavení Azure Pipelines.

Důležité

Pokud chcete spouštět ověřování vrstev pomocí Team Foundation Serveru (TFS), musíte na svůj buildový server nainstalovat také stejnou verzi sady Visual Studio.

Živé ověřování závislostí

Ověřování závislostí probíhá v reálném čase a chyby se okamžitě zobrazují v seznamu chyb.

  • Živé ověřování je podporováno pro C# a Visual Basic.

  • Pokud chcete povolit úplnou analýzu řešení při použití živého ověřování závislostí, otevřete nastavení možností ze zlatého pruhu , který se zobrazí v seznamu chyb.

    • Zlatý pruh můžete trvale zavřít, pokud vás nezajímá, že se ve vašem řešení zobrazí všechny problémy s architekturou.
    • Pokud nepovolíte úplnou analýzu řešení, analýza se provede jenom u upravovaných souborů.
  • Při upgradu projektů na povolení živého ověření se v dialogovém okně zobrazí průběh převodu.

  • Při aktualizaci projektu pro ověření živých závislostí se verze balíčku NuGet upgraduje tak, aby byla stejná pro všechny projekty a je to nejvyšší použitá verze.

  • Přidání nového projektu ověřování závislostí aktivuje aktualizaci projektu.

Zjištění, zda položka podporuje validaci

Vrstvy můžete propojit s weby, dokumenty Office, soubory ve formátu prostého textu a soubory v projektech, které jsou sdíleny napříč více aplikacemi, ale proces ověřování je nebude obsahovat. Chyby ověřování se neobjeví pro odkazy na projekty nebo sestavení, které jsou připojeny k samostatným vrstvám a v případě, že se mezi těmito vrstvami neobjeví závislosti. Tyto odkazy jsou považovány za závislosti jen tehdy, pokud kód tyto odkazy používá.

  1. V diagramu závislostí vyberte jednu nebo více vrstev, klikněte pravým tlačítkem myši na výběr a potom klikněte na zobrazit odkazy.

  2. V Průzkumníku vrstev se podívejte na sloupec Podporuje ověřování . Pokud je hodnota false, položka ověřování nepodporuje.

Zahrnutí dalších projektů a sestavení .NET pro ověřování

Při přetažení položek do diagramu závislostí se odkazy na odpovídající sestavení nebo projekty .NET automaticky přidají do složky Odkazy na vrstvy v projektu modelování. Tato složka obsahuje odkazy na sestavení a projekty, které jsou analyzovány během ověřování. Můžete zahrnout další sestavení a projekty .NET pro ověření, aniž byste je ručně přetáhli do diagramu závislostí.

  1. V Průzkumník řešení klikněte pravým tlačítkem myši na projekt modelování nebo na složku Odkazy na vrstvu a potom klepněte na tlačítko Přidat odkaz.

  2. V dialogovém okně Přidat odkaz vyberte sestavení nebo projekty a klepněte na tlačítko OK.

Ověřování kódu ručně

Pokud máte otevřený diagram závislostí, který je propojený s položkami řešení, můžete z diagramu spustit příkaz Ověřit zástupce. Příkazový řádek můžete také použít ke spuštění příkazu msbuild s vlastní vlastností /p:ValidateArchitecture nastavenou na True. Například lze při provádění změn v kódu provádět pravidelně ověřování vrstvy, takže bude možné zachytit konflikty závislostí včas.

Ověření kódu z otevřeného diagramu závislostí

  1. Klikněte pravým tlačítkem myši na plochu diagramu a potom klikněte na ověřit architekturu.

    Poznámka:

    Ve výchozím nastavení je vlastnost Akce sestavení v souboru diagramu závislostí (.layerdiagram) nastavena tak, aby se diagram zahrnul do procesu ověřování.

    Okno Seznam chyb hlásí všechny chyby, ke kterým došlo. Další informace o chybách ověřování najdete v tématu Řešení potíží s ověřováním vrstev.

  2. Pokud chcete zobrazit zdroj jednotlivých chyb, poklikejte na chybu v okně Seznam chyb.

    Poznámka:

    Visual Studio může místo zdroje chyby zobrazit mapu kódu. K tomu dochází v případě, že kód má závislost na sestavení, které není určeno diagramem závislostí, nebo kód chybí závislost určená diagramem závislostí. Zkontrolujte mapu kódu nebo kód a zjistěte, jestli má závislost existovat. Další informace o mapách kódu najdete v tématu Mapování závislostí napříč vašimi řešeními.

  3. Informace o správě chyb najdete v tématu Řešení chyb ověřování vrstev.

Ověření kódu na příkazovém řádku

  1. Otevřete příkazový řádek sady Visual Studio.

  2. Vyberte jednu z následujících možností:

    • Pokud chcete ověřit kód proti určitému projektu modelování v řešení, spusťte MSBuild s následující vlastní vlastností.

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

      nebo

      Přejděte do složky, která obsahuje soubor projektu modelování (.modelproj) a diagram závislostí, a pak spusťte MSBuild s následující vlastní vlastností:

      msbuild /p:ValidateArchitecture=true
      
    • Pokud chcete ověřit kód pro všechny projekty modelování v řešení, spusťte MSBuild s následující vlastní vlastností:

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

      nebo

      Přejděte do složky řešení, která musí obsahovat projekt modelování, který obsahuje diagram závislostí, a spusťte MSBuild s následující vlastní vlastností:

      msbuild /p:ValidateArchitecture=true
      

      Zobrazí se všechny chyby, ke kterým dochází. Další informace o nástroji MSBuild naleznete v tématu MSBuild a MSBuild – úloha.

    Další informace o chybách ověřování najdete v tématu Řešení potíží s ověřováním vrstev.

Správa chyb ověřování

Během procesu vývoje můžete chtít potlačit některé vykázané konflikty během ověřování. Například můžete chtít potlačit chyby, které již řešíte nebo které nejsou relevantní k danému scénáři. Když potlačíte chybu, je vhodné protokolovat pracovní položku v Team Foundation.

Upozorňující

Abyste mohli vytvořit nebo propojit pracovní položku, musíte být již připojeni ke správě zdrojového kódu TFS (SCC). Pokud se pokusíte otevřít připojení k jiné sadě TFS SCC, Visual Studio automaticky zavře aktuální řešení. Před pokusem o vytvoření nebo propojení s pracovní položkou se ujistěte, že jste již připojeni k příslušné SCC. V pozdějších verzích sady Visual Studio nejsou příkazy nabídky dostupné, pokud nejste připojení k SCC.

Vytvoření pracovní položky pro chybu ověření

  • V okně Seznam chyb klikněte pravým tlačítkem myši na chybu, přejděte na příkaz Vytvořit pracovní položku a potom klikněte na typ pracovní položky, kterou chcete vytvořit.

Pomocí těchto úloh můžete spravovat chyby ověřování v okně Seznam chyb:

Na Postupujte podle těchto kroků.
Potlačení vybraných chyb během ověřování Klepněte pravým tlačítkem myši na jednu nebo více vybraných chyb, přejděte na příkaz Spravovat chyby ověření a klepněte na tlačítko Potlačit chyby.

Potlačené chyby se zobrazují s přeškrtnutím. Při příštím spuštění ověřování se tyto chyby nezobrazí.

Potlačené chyby se sledují v souboru .suppresss pro odpovídající soubor diagramu závislostí.
Ukončení potlačování vybraných chyb Klikněte pravým tlačítkem myši na vybranou potlačenou chybu nebo chyby, přejděte na příkaz Spravovat chyby ověření a potom klikněte na tlačítko Zastavit potlačení chyb.

Vybrané potlačené chyby se při příštím spuštění ověřování zobrazí.
Obnovit všechny potlačené chyby v okně Seznam chyb Klikněte pravým tlačítkem na libovolné místo v okně Seznam chyb, přejděte na příkaz Spravovat chyby ověření a potom klepněte na příkaz Zobrazit všechny potlačené chyby.
Skrýt všechny potlačené chyby v okně Seznam chyb Klikněte pravým tlačítkem na libovolné místo v okně Seznam chyb, přejděte na příkaz Spravovat chyby ověření a potom klepněte na tlačítko Skrýt všechny potlačené chyby.

Ověřování kódu automaticky

Ověřování vrstev lze provádět při každém spuštění místního sestavení. Pokud váš tým používá Azure DevOps, můžete provést ověření vrstvy pomocí vrátných vrácení se změnami, které můžete určit vytvořením vlastní úlohy MSBuild a použít sestavy sestavení ke shromažďování chyb ověření. Pokud chcete vytvořit zamknutá sestavení vrácení se změnami, přečtěte si článek o vrácení se změnami v TFVC.

Automatické ověřování kódu během místního sestavení

K otevření souboru projektu modelování (.modelproj) použijte textový editor a následně vložte následující vlastnost:

<ValidateArchitecture>true</ValidateArchitecture>

- nebo -

  1. V Průzkumník řešení klikněte pravým tlačítkem myši na projekt modelování, který obsahuje diagram závislostí nebo diagramy, a potom klepněte na příkaz Vlastnosti.

  2. V okně Vlastnosti nastavte vlastnost Validate Architecture projektu modelování na Hodnotu True.

    To zahrne projekt modelování do ověřovacího procesu.

  3. V Průzkumník řešení klikněte na soubor diagramu závislostí (.layerdiagram), který chcete použít k ověření.

  4. V okně Vlastnosti se ujistěte, že je vlastnost Akce sestavení diagramu nastavená na Ověřit.

    To zahrnuje diagram závislostí v procesu ověřování.

Informace o správě chyb v okně Seznam chyb najdete v tématu Řešení chyb ověřování vrstev.

Poradce při potížích s ověřením vrstvy

Následující tabulka popisuje problémy s ověřením vrstvy a jejich řešení. Tyto problémy se liší od chyb, které vzniknou z konfliktů mezi kódem a návrhem. Další informace o těchtochybách

Problém Možná příčina Řešení
Chyby ověřování se nezobrazí podle očekávání. Ověřování nefunguje na diagramech závislostí, které jsou zkopírovány z jiných diagramů závislostí v Průzkumník řešení a které jsou ve stejném projektu modelování. Diagramy závislostí, které se tímto způsobem zkopírují, obsahují stejné odkazy jako původní diagram závislostí. Přidejte do projektu modelování nový diagram závislostí.

Zkopírujte prvky ze zdrojového diagramu závislostí do nového diagramu.

Řešení chyb ověřování vrstev

Když ověříte kód proti diagramu závislostí, dojde k chybám ověření v případě, že je kód v konfliktu s návrhem. Chyby ověřování mohou způsobit například následující podmínky:

  • Artefakt je přiřazen nesprávné vrstvě. V tomto případě přesuňte artefakt.

  • Artefakt, jako je například třída, používá jiné třídy způsobem, který je v konfliktu s architekturou. V tomto případě refaktorujte kód a odeberte závislost.

Chcete-li tyto chyby odstranit, aktualizujte kód, dokud se během ověřování neobjeví žádné chyby. Tuto úlohu lze provést iteračním způsobem.

Následující oddíl popisuje syntaxi, která se u těchto chyb používá, vysvětluje význam těchto chyb a navrhne, jak je vyřešit nebo spravovat.

Syntaxe Popis
ArtifactN(ArtifactTypeN) ArtifactN je artefakt, který je přidružený k vrstvě v diagramu závislostí.

ArtifactTypeN je typ ArtifactN, například třída nebo metoda, například:

MySolution.MyProject.MyClass.MyMethod(Method)
NamespaceNameN Název oboru názvů.
LayerNameN Název vrstvy v diagramu závislostí
DependencyType Typ vztahu závislostí mezi Artifact1 a Artifact2. Například Artifact1relaci Volání s Artifact2.
Syntaxe chyb Popis chyby
DV0001: Neplatná závislost Tento problém se hlásí, když element kódu (obor názvů, typ, člen) namapovaný na vrstvu odkazuje na prvek kódu namapovaný na jinou vrstvu, ale mezi těmito vrstvami v diagramu ověřování závislostí obsahujícím tyto vrstvy neexistuje žádná šipka závislostí. Jedná se o porušení omezení závislostí.
DV1001: Neplatný název oboru názvů Tento problém je hlášen u elementu kódu přidruženého k vrstvě, která vlastnost Allowed Namespace Names neobsahuje obor názvů, ve kterém je tento prvek kódu definován. Jedná se o porušení omezení pojmenování. Všimněte si, že syntaxe "Allowed Namespace Names" (Povolené názvy oborů názvů) je seznam oborů názvů, ve kterých mají být definovány elementy kódu přidružené k vrstvě.
DV1002: Závislost na neodkazovatelném oboru názvů Tento problém se hlásí u elementu kódu přidruženého k vrstvě a odkazování na jiný prvek kódu definovaný v oboru názvů, který je definován ve vlastnosti Unreferenceable Namespace vrstvy. Jedná se o porušení omezení pojmenování. Všimněte si, že vlastnost Unreferenceable Namespaces je definována jako seznam oborů názvů oddělených středníkem, na které by se nemělo odkazovat v elementech kódu přidružených k této vrstvě.
DV1003: Nepovolené jméno oboru názvů Tento problém je hlášen u elementu kódu přidruženého k vrstvě, která vlastnost Disallowed Namespace Names obsahuje obor názvů, ve kterém je tento prvek kódu definován. Jedná se o porušení omezení pojmenování. Všimněte si, že vlastnost "Nepovolit název oboru názvů" je definována jako seznam oborů názvů oddělených středníkem, ve kterých by neměly být definovány prvky kódu přidružené k této vrstvě.
DV2001: Stav diagramu vrstev Tento problém se hlásí v projektu, který neobsahuje soubor diagramu závislostí, ale odkazuje na analyzátory ověření závislostí. Pokud se nepoužilo ověřování závislostí, můžete odebrat Microsoft.DependencyValidation.Analyzers přímo z Průzkumník řešení nebo potlačit toto upozornění. Pokud chcete přidat diagram závislostí, podívejte se na vytváření diagramů závislostí z kódu.
DV2002: Základ nemapovaných typů Tento problém se hlásí, když není prvek kódu namapován na žádnou vrstvu.
DV3001: Chybějící odkaz Vrstva LayerName odkazuje na Artefakt, který nelze najít. Nechybí odkaz na sestavení?
DV9001: Analýza architektury zjistila vnitřní chyby Výsledky nemusí být úplné. Další informace lze nalézt v podrobném protokolu událostí sestavení nebo ve výstupním okně.