Validar o código com diagramas de camada

Para certificar-se de que o código não está em conflito com seu design, é possível validar o código com diagramas de camada no Visual Studio Ultimate e no Visual Studio Premium.Isso pode ajudar:

  • Localize conflito entre dependências em seu código e dependências no diagrama de camada.

  • Localizar as dependências que podem ser afetadas pelas alterações propostas.

    Por exemplo, você pode editar o diagrama de camada para mostrar alterações possíveis de arquitetura e para validar no código para consultar as dependências afetadas.

  • Refactor ou migre o código em um projeto diferente.

    Localizar o código ou dependências que exigem trabalho quando você move o código para uma arquitetura diferente.

Você pode validar o código manualmente de um diagrama aberto da camada no Visual Studio ou de um prompt de comando.Você também pode validar o código automaticamente quando o local em execução compilar ou o team foundation build.Consulte Exibição do canal 9: Criar e validar a arquitetura usando diagramas de camada.

Requisitos

  • Visual Studio Ultimate ou Visual Studio Premium

  • Uma solução que tenha um projeto modelagem com um diagrama de camada.Este diagrama de camada deve ser associado aos artefatos Visual c# ou Visual Basic .NET. NET projetos que você deseja validar.Consulte Criar diagramas de camada a partir do código.

Para

  • Consulte se um item suporta validação

  • Inclua outros assemblies e projetos .NET para validação

  • Validar o código manualmente

  • Validar o código automaticamente

  • Solução de problemas de validação da camada

  • Entender e resolver erros de validação da camada

Consulte se um item suporta validação

  1. No diagrama de camada, selecione uma ou várias camadas, clique com o botão direito do mouse na seleção, clique em Exibir Links.

  2. Em Mergulhe Explorer, veja a coluna de Validação de suporte .Se o valor for false, o item não suporta validação.

Você pode vincular documentos de sites, do Office, e arquivos de texto sem formatação camadas, mas o processo de validação não incluirá as.Erros de validação não aparecerão para referências a projetos ou aos assemblies que estão associados para separar camadas quando nenhuma dependência aparece entre essas camadas.Essas referências não são consideradas dependências a menos que o código usar essas referências.

Inclua outros assemblies e projetos .NET para validação

Quando você arrastar itens ao diagrama de camada, referências a assemblies ou projetos correspondentes do .NET são adicionados automaticamente a pasta de Referências de camada no projeto modelando.Esta pasta contêm referências a assemblies e projetos que são analisados durante a validação.Você pode incluir outros módulos e projetos .NET para validação sem manualmente arrastá-los para o diagrama de camada.

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto modelando ou pasta de Referências de camada , clique em Adicionar Referência.

  2. Na caixa de diálogo Adicionar Referência , selecione assemblies ou projetos, e clique em OK.

Validar o código manualmente

Se você tiver um diagrama aberto da camada que é vinculado a itens de solução, você pode executar o comando de atalho de Validar de diagrama.Você também pode usar o prompt de comando para executar o comando de msbuild com a propriedade personalizada de /p:ValidateArchitecture definida como True.Por exemplo, como você faz alterações no código, execute validação de camada regularmente para que você possa capturar conflitos de dependência no início.

Para validar o código de um diagrama aberto da camada

  1. Clique com o botão direito do mouse na superfície do diagrama, clique em Validar Arquitetura.

    ObservaçãoObservação

    Por padrão, a propriedade de Ação de Compilação no arquivo de diagrama de camada (.layerdiagram) é definida como Validar de modo que o diagrama é incluído no processo de validação.

    A janela de Lista de erros relata os erros que ocorrem.Para obter mais informações sobre erros de validação, consulte Entender e resolver erros de validação da camada.

  2. Para exibir a fonte de cada erro, clique duas vezes no erro na janela de Lista de erros .

    ObservaçãoObservação

    Visual Studio pode mostrar um gráfico de dependência em vez de origem de erro.Isso ocorre quando tanto o código possui uma dependência em um assembly que não está especificado pelo diagrama de camada, ou o código está faltando uma dependência que é especificada pelo diagrama de camada.Examinar o gráfico de dependência ou código para determinar se a dependência deve existir.Para obter mais informações sobre elementos gráficos de dependência, consulte Visualizar dependências de código em gráficos de dependência.

  3. Para gerenciar erros, consulte Gerenciar erros de validação.

Para validar o código no prompt de comando

  1. Abrir o prompt de comando Visual Studio .

  2. Escolha um destes procedimentos:

    • Para validar o código em um projeto modelando específico na solução, execução MSBuild com a seguinte propriedade personalizada.

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

      - ou -

      Navegue até a pasta que contém o arquivo modelagem de projeto (.modelproj) e o diagrama de camada e em MSBuild com a seguinte propriedade personalizada:

      msbuild /p:ValidateArchitecture=true
      
    • Para validar o código contra qualquer modelar projetos na solução, executa MSBuild com a seguinte propriedade personalizada:

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

      - ou -

      Vá para a pasta de solução, que deve conter um projeto modelando que contém um diagrama de camada, e em MSBuild com a seguinte propriedade personalizada:

      msbuild /p:ValidateArchitecture=true 
      

    Todos os erros que ocorrem constarão.Para obter mais informações sobre a MSBuild, consulte MSBuild e Tarefa do MSBuild.

Para obter mais informações sobre erros de validação, consulte Entender e resolver erros de validação da camada.

Dd409395.collapse_all(pt-br,VS.110).gifGerenciar erros de validação

Durante o processo de desenvolvimento, você pode desejar suprimir alguns dos conflitos relatadas durante a validação.Por exemplo, talvez queira suprimir erros que você já de resolução ou que não for relevante para seu cenário específico.Quando você suprime um erro, é uma boa prática registrar um item de trabalho em Team Foundation.

Para criar um item de trabalho para um erro de validação

  • Na janela de Lista de erros , clique com o botão direito do mouse no erro, aponte para Criar Item de Trabalho, e clique no tipo de item de trabalho que você deseja criar.

Use essas tarefas gerenciar erros de validação na janela de Lista de erros :

Para

Siga estas etapas

Suppress selecionou erros durante a validação

Clique com o botão direito do mouse ou erros selecionados múltiplas, aponte para Gerenciar erros de validação, e clicar-los em Suprimir erros.

Erros suprimidos aparecem com formatação de tachado.Quando você executar a validação na próxima vez, esses erros não aparecerão.

Os erros são suprimidos rastreadas em um arquivo de .suppressions para o correspondente arquivo de diagrama de camada.

Parar de suprimir erros selecionados

Clique com o botão direito do mouse no erro ou erros suprimidos selecionados, aponte para Gerenciar erros de validação, e clicar-los Para suprimir de erros.

Erros suprimidos selecionados exibida quando você executa validação na próxima vez.

Restaurar os erros suprimidos na janela de Lista de erros

Clique com o botão direito do mouse em qualquer lugar na janela de Lista de erros , aponte para Gerenciar erros de validação, e clique em Mostrar todos os erros suprimidos.

Ocultar todos os erros suprimidos da janela de Lista de erros

Clique com o botão direito do mouse em qualquer lugar na janela de Lista de erros , aponte para Gerenciar erros de validação, clique em Ocultar todos os erros suprimidos.

Validar o código automaticamente

Você pode executar a validação de camada cada vez que você executar uma compilação local.Se sua equipe usar o team foundation build, você pode executar a validação de camada com barreira, que você pode especificar criando uma tarefa personalizado do MSBuild, e usa relatórios de compilação para coletar erros de validação. Para criar bloqueou compilações de check-in, consulte Definir um processo de compilação Gated Check-In para validar as alterações.

Para validar automaticamente o código durante uma compilação local

  • Use um editor de texto para abrir o arquivo modelagem de projeto (.modelproj), e inclui a propriedade a seguir:
<ValidateArchitecture>true</ValidateArchitecture>

- ou -

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto modelando que contém o diagrama ou os diagramas de camada, clique em Propriedades.

  2. Na janela de Propriedades , defina a propriedade de Validar Arquitetura de projeto modelando como True.

    Isso inclui o projeto modelando no processo de validação.

  3. Em Gerenciador de Soluções, clique o arquivo de diagrama de camada (.layerdiagram) que você deseja usar para validação.

  4. Na janela de Propriedades , certifique-se de que a propriedade de Ação de Compilação do diagrama é definida como Validar.

    Isso inclui o diagrama de camada no processo de validação.

Para gerenciar erros na janela lista de erros, consulte Gerenciar erros de validação.

Para validar automaticamente o código durante a criação do team foundation

  1. Em Team Explorer, clique duas vezes na definição de compilação, clique em Processo.

  2. Em Criar definições de processo, expanda Compilação, e digite o seguinte no parâmetro de MSBuild Arguments :

    =true de/p:ValidateArchitecture

Para obter mais informações sobre erros de validação, consulte Entender e resolver erros de validação da camada.Para obter mais informações sobre a Team Foundation Build, consulte:

Solução de problemas de validação da camada

A tabela a seguir descreve problemas de validação da camada e sua resolução.Esses problemas diferem dos erros que resultam de conflitos entre código e design.Para obter mais informações sobre esses erros, consulte Entender e resolver erros de validação da camada.

Problema

Possíveis causas

Resolução

Erros de validação não ocorrem como esperado.

A validação não funciona em diagramas de camada que são copiados de outros diagramas da camada no solution Explorer e que estão no mesmo projeto modelando.Os mergulhe diagramas que são copiados dessa maneira contêm as mesmas referências que o diagrama original da camada.

  1. Adicione um novo diagrama de camada ao projeto modelando.

  2. Copiar os elementos de diagrama da camada de origem para o novo diagrama.

Entendendo e resolvendo erros de validação da camada

Quando você valide código contra um diagrama de camada, os erros de validação ocorrem quando o código está em conflito com o design.Por exemplo, as seguintes condições podem fazer com que os erros de validação ocorrem:

  • Um produto é atribuído a camada incorreta.Nesse caso, mova o produto.

  • Um produto, como uma classe, usa uma outra classe em uma forma que conflite com a arquitetura.Nesse caso, refatora o código para remover a dependência.

Para resolver esses erros, atualizar o código até que não mais erro aparecer durante a validação.Você pode executar esta tarefa de uma maneira iterativa.

A seção a seguir descreve a sintaxe que é usada nesses erros, explica o significado desses erros, e sugere o que você pode fazer para o resolver ou gerenciar.

Sintaxe

Descrição

ArtifactN(ArtifactTypeN)

ArtifactN é um produto que está associado com uma camada no diagrama de camada.

ArtifactTypeN é o tipo de ArtifactN, como Classe ou Método, por exemplo:

MySolution.MyProject.MyClass.MyMethod (método)

NamespaceNameN

O nome de um namespace.

LayerNameN

O nome de uma camada no diagrama de camada.

DependencyType

O tipo de relação de dependência entre Artifact1 e Artifact2.Por exemplo, Artifact1 tem uma relação de Chamadas com Artifact2.

Sintaxe de erro

Descrição de erro

AV0001: Dependência inválido: Artifact1(ArtifactType1) --> Artifact2(ArtifactType2)

   Camadas: LayerName1, LayerName2 | Dependências: DependencyType

Artifact1 em LayerName1 não deve ter uma dependência em Artifact2 em LayerName2 porque LayerName1 não tem uma dependência direta em LayerName2.

AV1001: Namespace inválido: Produto

   Camada: LayerName | Namespace necessário: NamespaceName1 | Namespace atual: NamespaceName2

LayerName requer que os artefatos associados devem pertencer a NamespaceName1.Produto está em NamespaceName2, não NamespaceName1.

AV1002: Depende do namespace proibida: Artifact1(ArtifactType1) | Artifact2(ArtifactType2)

   Camada: LayerName | Namespace proibida: NamespaceName | Dependências: DependencyType

LayerName requer que os artefatos associados não devem depender de NamespaceName.Artifact1 não pode depender de Artifact2 porque Artifact2 está em NamespaceName.

AV1003: No namespace proibida: Produto(ArtifactType)

   Camada: LayerName | Namespace proibida: NamespaceName

LayerName requer que os artefatos associados não podem pertencer a NamespaceName.Produto pertence a NamespaceName.

AV3001: Em elo não possui: A camada 'LayerName' contém links para 'Produto' que não podem ser encontrados.É que você não possui uma referência de montagem?

LayerName vincula a um produto que não pode ser encontrado.Por exemplo, um link a uma classe pode perder porque o projeto modelando está faltando uma referência ao assembly que contém a classe.

AV9001: A análise arquitetural encontrou erros internos.Os resultados não podem estar concluída.Para obter mais informações, consulte a janela detalhada de log de eventos ou da saída de compilação.

Consulte a janela de log de eventos ou da saída de compilação para obter mais detalhes.

Consulte também

Conceitos

Validando o sistema durante o desenvolvimento