Convalidare il codice con diagrammi livello

Per assicurarsi che il codice non sia in conflitto con la progettazione, è possibile convalidare il codice ai diagrammi livello in Visual Studio ultimate e Visual Studio premium.Ciò consente di:

  • Cercare eventuali conflitti tra le dipendenze nel codice e le dipendenze nel diagramma livello.

  • Trovare le dipendenze sulle quali potrebbero influire le modifiche proposte.

    Ad esempio, è possibile modificare il diagramma livello per mostrare le potenziali modifiche all'architettura e quindi convalidare il codice per vedere le dipendenze interessate.

  • Effettuare il refactoring o la migrazione del codice in una progettazione diversa.

    Trovare codice o dipendenze che richiedono il lavoro quando si sposta il codice in un'architettura diversa.

È possibile convalidare manualmente il codice da un diagramma livello aperto in Visual Studio o da un prompt dei comandi.È anche possibile convalidare il codice automaticamente durante la compilazione in esecuzione o Team Foundation Build locale.Vedere Video channel 9: Progetti e convalidare l'architettura utilizzando diagrammi livello.

Requisiti

  • Visual Studio premium o ultimate di Visual Studio

  • Una soluzione contenente un progetto di modello con un diagramma livello.Questo diagramma livello deve essere collegato agli elementi in Visual c .NET o Visual Basic .NET. i progetti che si desidera convalidare.Vedere Creare diagrammi livello dal codice.

Per

  • Vedere se l'elemento supporta la convalida

  • Includere altri assembly .NET e progetti per la convalida

  • Convalidare manualmente il codice

  • Convalidare automaticamente il codice

  • Risolvere i problemi di convalida dei livelli

  • Individuare e risolvere gli errori di convalida dei livelli

Vedere se l'elemento supporta la convalida

  1. Nel diagramma livello, selezionare uno o più livelli, fare clic con il pulsante destro del mouse sulla selezione e scegliere Visualizza collegamenti.

  2. In Esplora livello, esaminare la colonna Convalida supporti.Se il valore è false, l'elemento non supporta la convalida.

È possibile collegare i siti Web, i documenti di Office e i file di testo normale ai livelli, ma il processo di convalida non li includerà.Gli errori di convalida non vengono visualizzati per i riferimenti a progetti o assembly collegati a livelli separati quando nessuna dipendenza tra i livelli.Tali riferimenti non vengono considerati dipendenze a meno che il codice non li utilizzi.

Includere altri assembly .NET e progetti per la convalida

Quando si trascinano elementi nel diagramma livello, i riferimenti agli assembly .NET o ai progetti corrispondenti vengono aggiunti automaticamente alla cartella Layer References nel progetto di modello.Questa cartella contiene i riferimenti agli assembly e i progetti analizzati durante la convalida.È possibile includere altri assembly .NET e progetti per la convalida manualmente senza trascinarli nel diagramma livello.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto di modello o sulla cartella Riferimenti livello, quindi scegliere Aggiungi riferimento.

  2. Nella finestra di dialogo Aggiungi riferimento selezionare gli assembly o i progetti, quindi fare clic su OK.

Convalidare manualmente il codice

Se si dispone di un diagramma livello aperto collegato agli elementi della soluzione, è possibile eseguire il comando di scelta rapida Convalida il diagramma.È inoltre possibile utilizzare il prompt dei comandi per eseguire il comando msbuild con la proprietà personalizzata /p:ValidateArchitecture impostata su True.Ad esempio, analogamente alle modifiche nel codice, eseguire regolarmente la convalida dei livelli in modo da intercettare precedenza dei conflitti di dipendenza.

Per convalidare il codice da un diagramma livello aperto

  1. Fare clic con il pulsante destro del mouse sulla superficie del diagramma e scegliere Convalida architettura.

    [!NOTA]

    Per impostazione predefinita, la proprietà Operazione di compilazione del file del diagramma livello (con estensione layerdiagram) viene impostata su Convalida al fine di includere il diagramma nel processo di convalida.

    Nella finestra Elenco errori vengono riportati gli eventuali errori verificatisi.Per ulteriori informazioni sugli errori di convalida, vedere Individuare e risolvere gli errori di convalida dei livelli.

  2. Per visualizzare l'origine di ciascun errore, fare doppio clic sull'errore nella finestra Elenco errori.

    [!NOTA]

    In Visual Studio potrebbe essere visualizzato un grafico delle dipendenze anziché l'origine dell'errore.Ciò si verifica quando il codice presenta una dipendenza in un assembly che non è specificata nel diagramma livello o quando al codice manca una dipendenza specificata nel diagramma livello.Esaminare il grafico delle dipendenze o il codice per determinare se la dipendenza deve esistere.Per ulteriori informazioni sui grafici delle dipendenze, vedere Visualizzare le dipendenze di codice nei grafici dipendenze.

  3. Per gestire gli errori, vedere Gestire gli errori di convalida.

Per convalidare il codice al prompt dei comandi

  1. Aprire il prompt dei comandi di Visual Studio.

  2. Effettuare una delle seguenti operazioni:

    • Per convalidare il codice rispetto a un progetto di modello specifico nella soluzione, eseguire MSBuild con la seguente proprietà personalizzata.

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

      - oppure -

      Passare alla cartella contenente il file di progetto di modello (con estensione modelproj) e il diagramma livello, quindi eseguire MSBuild con la seguente proprietà personalizzata.

      msbuild /p:ValidateArchitecture=true
      
    • Per convalidare il codice rispetto a tutti i progetti di modello nella soluzione, eseguire MSBuild con la seguente proprietà personalizzata:

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

      - oppure -

      Individuare la cartella della soluzione che deve contenere un progetto di modello che a sua volta contiene un diagramma livello, quindi eseguire MSBuild con la seguente proprietà personalizzata.

      msbuild /p:ValidateArchitecture=true 
      

    Verranno elencati tutti gli errori che si verificano.Per ulteriori informazioni su MSBuild, vedere MSBuild e Attività MSBuild.

Per ulteriori informazioni sugli errori di convalida, vedere Individuare e risolvere gli errori di convalida dei livelli.

Dd409395.collapse_all(it-it,VS.110).gifGestire gli errori di convalida

Durante il processo di sviluppo, potrebbe essere necessario eliminare alcuni conflitti segnalati durante la convalida.Ad esempio, è possibile eliminare gli errori che sono già stati corretti o che non sono attinenti allo scenario in questione.Quando si elimina un errore, è buona norma registrare un elemento di lavoro in Team Foundation.

Per creare un elemento di lavoro per un errore di convalida

  • Nella finestra Elenco errori fare clic con il pulsante destro del mouse sull'errore, scegliere Crea elemento di lavoro, quindi fare clic sul tipo di elemento di lavoro che si desidera creare.

Per gestire errori di convalida nella finestra Elenco errori utilizzare queste attività:

Per

Si seguano le seguenti istruzioni

Eliminare gli errori selezionati durante la convalida

Fare clic con il pulsante destro del mouse su uno o più errori selezionati, scegliere Gestisci errori di convalida, quindi fare clic su Elimina errori.

Gli errori eliminati vengono visualizzati come barrati.Alla successiva convalida, questi errori non saranno visualizzati.

Gli errori eliminati vengono registrati in un file con estensione suppressions per il file del diagramma livello corrispondente.

Interrompere l'eliminazione di errori selezionati

Fare clic con il pulsante destro del mouse sull'errore o sugli errori eliminati selezionati, scegliere Gestisci errori di convalida e fare clic su Interrompi eliminazione errori.

Alla successiva convalida, gli errori eliminati selezionati verranno visualizzati.

Ripristinare tutti gli errori eliminati nella finestra Elenco errori

Fare clic con il pulsante destro del mouse su un punto qualsiasi della finestra Elenco errori, scegliere Gestisci errori di convalida, quindi fare clic su Mostra tutti gli errori eliminati.

Nascondere tutti gli errori eliminati dalla finestra Elenco errori

Fare clic con il pulsante destro del mouse su un punto qualsiasi della finestra Elenco errori, scegliere Gestisci errori di convalida, quindi fare clic su Nascondi tutti gli errori eliminati.

Convalidare automaticamente il codice

È possibile eseguire ogni volta la convalida dei livelli che si esegue una compilazione.Se il team utilizza Team Foundation Build, è possibile eseguire la convalida dei livelli nelle archiviazioni gestite, che è possibile specificare la creazione di attività MSBuild personalizzato e utilizzare i rapporti di compilazione per raccogliere gli errori di convalida. Per creare le compilazioni di archiviazione gestita, vedere Definire un processo di compilazione di archiviazione gestita per convalidare le modifiche.

Per convalidare automaticamente il codice durante una compilazione locale.

  • Utilizzare un editor di testo per aprire il file del progetto di modello (.modelproj), quindi includere la proprietà seguente:
<ValidateArchitecture>true</ValidateArchitecture>

- oppure -

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse nel progetto di modello contenente il diagramma o i diagrammi livello, quindi fare clic su Proprietà.

  2. Nella finestra Proprietà, impostare la proprietà Convalida architettura del progetto di modello su True.

    Il progetto di modello viene incluso nel processo di convalida.

  3. In Esplora soluzioni fare clic sul file del diagramma livello (con estensione layerdiagram) che si desidera utilizzare per la convalida.

  4. Nella finestra Proprietà controllare che la proprietà Azione compilazione del diagramma sia impostata su Convalida.

    Il diagramma livello viene incluso nel processo di convalida.

Per gestire errori di convalida nella finestra, vedere Elenco errori.

Per convalidare il codice automaticamente durante un'operazione di Team Foundation Build.

  1. In Team Explorer, fare doppio clic sulla definizione della compilazione e scegliere Processo.

  2. Sotto Parametri processo di compilazione, espandere Compilazione e digitare il seguente nel parametro MSBuild Arguments:

    /p:ValidateArchitecture=true

Per ulteriori informazioni sugli errori di convalida, vedere Individuare e risolvere gli errori di convalida dei livelli.Per ulteriori informazioni su Team Foundation Build, vedere:

Risolvere i problemi di convalida dei livelli

Nella tabella seguente vengono descritti i problemi di convalida dei livelli e la relativa risoluzione.Questi problemi differiscono dagli errori risultanti da conflitti tra il codice e la progettazione.Per ulteriori informazioni su questi errori, vedere Individuare e risolvere gli errori di convalida dei livelli.

Problema

Possibile causa

Risoluzione

Gli errori di convalida non si verificano come previsto.

La convalida non funziona sui diagrammi livello copiati da altri diagrammi livello in Esplora soluzioni e appartenenti allo stesso progetto di modello.I diagrammi livello copiati in questo modo contengono gli stessi riferimenti del diagramma livello originale.

  1. Aggiungere un nuovo diagramma livello al progetto di modello.

  2. Copiare gli elementi dal diagramma livello di origine al nuovo diagramma.

La comprensione e la risoluzione degli errori di convalida dei livelli

Quando si esegue la convalida del codice in base a un diagramma livello, se il codice è in conflitto con la progettazione si verificano errori di convalida.Ad esempio, in presenza delle condizioni seguenti è possibile che si verifichino errori di convalida del livello:

  • Un elemento viene assegnato al livello errato.In questo caso, spostare l'elemento.

  • Un elemento, ad esempio una classe, utilizza un'altra classe in un modo che causa conflitti con l'architettura.In questo caso, eseguire il refactoring del codice per rimuovere la dipendenza.

Per risolvere questi errori, aggiornare il codice finché non verranno più visualizzati errori di convalida.È possibile eseguire questa attività in modo iterativo.

La seguente sezione viene descritta la sintassi utilizzata in questi errori, viene illustrato il significato di questi errori e suggerisce che è possibile eseguire per risolverli o gestirli.

Sintassi

Descrizione

ArtifactN(ArtifactTypeN)

ArtifactN è un elemento associato a un livello nel diagramma livello.

ArtifactTypeN è il tipo di ArtifactN, quale una Classe o un Metodo, ad esempio:

MySolution.MyProject.MyClass.MyMethod(Metodo)

NamespaceNameN

Nome di uno spazio dei nomi.

LayerNameN

Nome di un livello nel diagramma livello.

DependencyType

Tipo di relazione di dipendenza tra Artifact1 e Artifact2.Ad esempio, Artifact1 ha una relazione Chiamate con Artifact2.

Errore di sintassi.

Errore di descrizione.

AV0001: dipendenza non valida: Artifact1(ArtifactType1)--> Artifact2(ArtifactType2)

   Livelli: LayerName1, LayerName2 | Dipendenze: DependencyType

Artifact1 in LayerName1 non deve avere una dipendenza con Artifact2 in LayerName2 perché LayerName1 non ha una dipendenza diretta con LayerName2.

AV1001: spazio dei nomi non valido: Artifact

   Livello: LayerName | Spazio dei nomi richiesto: NamespaceName1 | Spazio dei nomi corrente: NamespaceName2

LayerName richiede che gli elementi associati appartengano a NamespaceName1.Artifact si trova in NamespaceName2, non in NamespaceName1.

AV1002: utilizzo dello spazio dei nomi non consentito: Artifact1(ArtifactType1) | Artifact2(ArtifactType2)

   Livello: LayerName | Spazio dei nomi non consentito: NamespaceName | Dipendenze: DependencyType

LayerName richiede che gli elementi associati non dipendano da NamespaceName.Artifact1 non può dipendere da Artifact2 perché Artifact2 si trova in NamespaceName.

AV1003: nello spazio dei nomi non consentito: Artifact(ArtifactType)

   Livello: LayerName | Spazio dei nomi non consentito: NamespaceName

LayerName richiede che gli elementi associati non possano appartenere a NamespaceName.Artifact appartiene a NamespaceName.

AV3001: collegamento mancante: il livello 'LayerName' si collega a 'Artifact' che non viene trovato.Probabilmente manca un riferimento a un assembly.

LayerName si collega a un elemento che non può essere trovato.Ad esempio, è possibile che manchi un collegamento a una classe perché nel progetto di modellazione manca un riferimento all'assembly che contiene la classe.

AV9001: errori interni durante l'analisi dell'architettura.I risultati potrebbero non essere completi.Vedere il log dettagliato degli eventi di compilazione o la finestra di output per ulteriori informazioni.

Vedere il log dettagliato degli eventi di compilazione o la finestra di output per ulteriori informazioni.

Vedere anche

Concetti

Convalida del sistema durante lo sviluppo