Convalidare il codice con diagrammi livello

 

Per la documentazione più recente di Visual Studio 2017, vedere Documentazione di Visual Studio 2017.

Per assicurarsi che il codice non sia in conflitto con la progettazione, è possibile convalidare il codice con diagrammi livello in Visual Studio. In questo modo è possibile effettuare le operazioni seguenti:

  • Trovare 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 azioni quando si sposta il codice in un'architettura diversa.

Requirements

  • Visual Studio

  • Visual Studio sul server Team Foundation Build in uso per convalidare il codice automaticamente con Team Foundation Build

  • Una soluzione che contiene un progetto di modellazione con un diagramma livello. Questo diagramma livello deve essere collegato agli artefatti nei progetti Visual C# .NET o Visual Basic .NET da convalidare. Vedere creare diagrammi livello dal codice.

Per individuare le versioni di Visual Studio che supportano questa funzionalità, vedere Version support for architecture and modeling tools.

È possibile convalidare manualmente il codice da un diagramma livello aperto in Visual Studio o da un prompt dei comandi. È inoltre possibile convalidare il codice automaticamente quando sono in esecuzione compilazioni locali o Team Foundation Build. Vedere Video di Channel 9: progettazione e convalidare l'architettura con i diagrammi livello.

System_CAPS_ICON_important.jpg Importante

Se si desidera eseguire la convalida dei livelli in Team Foundation Build, è inoltre necessario installare la stessa versione di Visual Studio nel server di compilazione.

È possibile collegare i livelli a siti Web, documenti Office, file di testo normale e file in progetti condivisi tra più app, ma il processo di convalida non li includerà. Gli errori di convalida non verranno visualizzati per i riferimenti a progetti oppure a assembly collegati a livelli separati quando tra tali livelli non è presente alcuna dipendenza. Tali riferimenti non vengono considerati dipendenze a meno che il codice non li usi.

  1. Selezionare uno o più livelli sul diagramma livello, fare doppio clic sulla selezione e quindi fare clic su Visualizza collegamenti.

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

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

  1. In Esplora, fare doppio clic su progetto di modellazione o Riferimenti livello cartella e quindi fare clic su Aggiungi riferimento.

  2. Nel Aggiungi riferimento nella finestra di dialogo selezionare gli assembly o i progetti e quindi fare clic su OK.

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

Per convalidare il codice da un diagramma livello aperto

  1. Pulsante destro del mouse sulla superficie del diagramma e quindi fare clic su Convalida architettura.

    System_CAPS_ICON_note.jpg Nota

    Per impostazione predefinita, il Build Action file diagramma (con estensione layerdiagram) del livello è impostata su convalida in modo che il diagramma è incluso nel processo di convalida.

    Il elenco errori finestra segnala gli eventuali errori. Per ulteriori informazioni sugli errori di convalida, vedere individuare e risolvere gli errori di convalida livello.

  2. Per visualizzare l'origine di ciascun errore, fare doppio clic su errore nel elenco errori finestra.

    System_CAPS_ICON_note.jpg Nota

    In Visual Studio potrebbe essere visualizzata una mappa codice 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 la mappa codice o il codice per determinare se la dipendenza deve esistere. Per ulteriori informazioni sulle mappe codice, vedere mappare le dipendenze delle soluzioni.

  3. Per gestire gli errori, vedere gestire 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 modellazione 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 modellazione (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 modellazione 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 modellazione 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 livello.

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

System_CAPS_ICON_warning.jpg Avviso

Per creare un elemento di lavoro o aggiungere un collegamento ad esso, è necessario essere già connessi al controllo del codice sorgente TFS. Se si prova ad aprire una connessione in un'istanza diversa del controllo del codice sorgente TFS, Visual Studio chiude automaticamente la soluzione corrente. Prima di provare a creare un elemento di lavoro o ad aggiungervi un collegamento, verificare di essere già connessi all'istanza appropriata del controllo del codice sorgente. Nelle versioni successive di Visual Studio, i comandi di menu non sono disponibili se non si è connessi a un'istanza del controllo del codice sorgente.

Per creare un elemento di lavoro per un errore di convalida
  • Nel elenco errori finestra, fare clic sull'errore, scegliere Crea elemento di lavoro, quindi fare clic sul tipo di elemento di lavoro che si desidera creare.

Utilizzare queste attività per gestire gli errori di convalida nel elenco errori finestra:

ASeguire questi passaggi
Eliminare gli errori selezionati durante la convalidaFare clic 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 selezionatiFare clic su selezionato eliminati gli errori, scegliere Gestisci errori di convalida, quindi fare clic su Interrompi eliminazione errori.

Alla successiva convalida, gli errori eliminati selezionati verranno visualizzati.
Ripristinare tutti gli errori eliminati nella elenco errori finestraFare clic nel elenco errori finestra, scegliere Gestisci errori di convalida, quindi fare clic su Mostra tutti gli errori eliminati.
Nascondere tutti gli errori eliminati dal elenco errori finestraFare clic nel elenco errori finestra, scegliere Gestisci errori di convalida, quindi fare clic su Nascondi errori eliminati.

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

Per convalidare automaticamente il codice durante una compilazione locale

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

- oppure -

  1. In Esplora, fare clic sul progetto che contiene il diagramma livello o i diagrammi di modellazione e quindi fare clic su proprietà.

  2. Nel proprietà finestra, impostare il progetto di modellazione Convalida architettura proprietà True.

    Il progetto di modellazione viene incluso nel processo di convalida.

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

  4. Nel proprietà finestra, assicurarsi che il diagramma Build Action proprietà è impostata su convalida.

    Il diagramma livello viene incluso nel processo di convalida.

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

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

  1. In Team Explorer, fare doppio clic sulla definizione di compilazione e quindi fare clic su processo.

  2. In parametri processo di compilazione, espandere compilazione, e digitare quanto segue nel Argomenti MSBuild parametro:

    /p:ValidateArchitecture=true

Per ulteriori informazioni sugli errori di convalida, vedere individuare e risolvere gli errori di convalida livello. Per altre informazioni su Team Foundation Build, vedere:

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

ProblemaPossibile causaRisoluzione
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 modellazione. I diagrammi livello copiati in questo modo contengono gli stessi riferimenti del diagramma livello originale.Aggiungere un nuovo diagramma livello al progetto di modellazione.

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

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

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

  • Un elemento, ad esempio una classe, usa 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 gli errori, aggiornare il codice finché non verranno più visualizzati errori di convalida. È possibile eseguire questa attività in modo iterativo.

Nella sezione seguente viene descritta la sintassi usata negli errori, viene illustrato il significato degli errori e vengono indicate le operazioni che è possibile eseguire per risolverli o gestirli.

SintassiDescrizione
Elementon(Tipoelementon)Elementon è un elemento è associato a un livello nel diagramma livello.

 Tipoelementon è il tipo di Elementon, ad esempio un classe o metodo, ad esempio:

MySolution.MyProject.MyClass.MyMethod(Metodo)
NamespaceNameNNome di uno spazio dei nomi.
LayerNameNNome di un livello nel diagramma livello.
TipodipendenzaIl tipo di relazione di dipendenza tra Elemento1 e Elemento2. Ad esempio, Elemento1 ha un chiamate relazione con Elemento2.
Sintassi erroreDescrizione dell'errore
AV0001: Dipendenza non valida: Elemento1(Tipoelemento1)--> Elemento2(Tipoelemento2)

Livelli: Nomelivello1, Nomelivello2 | Dipendenze: Tipodipendenza
Elemento1 in Nomelivello1 non deve avere una dipendenza in Elemento2 in Nomelivello2 poiché Nomelivello1 non ha una dipendenza diretta in Nomelivello2.
AV1001: Spazio dei nomi non valido: elemento

Livello: nomelivello | Spazio dei nomi richiesto: Nomespaziodeinomi1 | Spazio dei nomi corrente: Nomespaziodeinomi2
Nomelivello richiede che gli elementi collegati appartengano a Nomespaziodeinomi1. Elemento in Nomespaziodeinomi2, non Nomespaziodeinomi1.
AV1002: Dipende dallo spazio dei nomi non consentito: Elemento1(Tipoelemento1) | Elemento2(Tipoelemento2)

Livello: nomelivello | Spazio dei nomi non consentito: NomeSpazioDeiNomi | Dipendenze: Tipodipendenza
Nomelivello richiede che gli elementi associati non dipendano NomeSpazioDeiNomi. Elemento1 non possono dipendere Elemento2 poiché Elemento2 in NomeSpazioDeiNomi.
AV1003: Nello spazio dei nomi non consentito: elemento(Tipoelemento)

Livello: nomelivello | Spazio dei nomi non consentito: NomeSpazioDeiNomi
Nomelivello richiede che gli elementi collegati non possono appartenere a NomeSpazioDeiNomi. Elemento appartiene NomeSpazioDeiNomi.
AV3001: collegamento mancante: livello 'nomelivello'Collega a'elemento' che non viene trovato. Probabilmente manca un riferimento a un assembly.Nomelivello Collega a un elemento 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. Per altre informazioni, vedere il log dettagliato degli eventi di compilazione o la finestra di output.Per altre informazioni, vedere il log degli eventi di compilazione o la finestra di output.

Convalidare il sistema durante lo sviluppo

Mostra: