Compartilhar via


Validar o código com diagramas de camada

Para garantir que o código não entre em conflito com seu design, valide o código com diagramas da camada no Visual Studio Ultimate e no Visual Studio Premium. Isso pode ajudar a:

  • Encontrar conflitos entre dependências no código e nas dependências do diagrama de camada.

  • Encontre dependências que talvez sejam afetadas por alterações propostas.

    Por exemplo, é possível editar o diagrama de camada para mostrar alterações na arquitetura em potencial e, em seguida, validar o código para ver as dependências afetadas.

  • Refatore ou migre o código para um design diferente.

    Encontre o código ou as dependências que exijam trabalho quando você move o código para uma arquitetura diferente.

É possível validar manualmente o código com base em um diagrama de camada aberto no Visual Studio ou em um prompt de comando. Também é possível validar o código automaticamente durante a execução de compilações locais ou do Team Foundation Build. Consulte Vídeo do Canal 9: projetar e validar a arquitetura usando diagramas de camada.

Importante

Se quiser executar a validação da camada com o Team Foundation Build, você também deverá instalar o Visual Studio Ultimate no servidor de compilação.

Requisitos

  • Visual Studio Ultimate ou Visual Studio Premium

  • Visual Studio Ultimate no servidor do Team Foundation Build para validar automaticamente o código com o Team Foundation Build

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

  • Verificar se um item dá suporte à validação

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

  • Validar código manualmente

  • Validar código automaticamente

  • Solucionar problemas de validação da camada

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

Verificar se um item dá suporte à validação

É possível vincular camadas a sites, documentos do Office, arquivos de texto sem formatação e arquivos em projetos compartilhados entre vários aplicativos, mas o processo de validação não os incluirá. Os erros de validação não serão exibidos para referências a projetos ou assemblies vinculados a camadas separadas quando nenhuma dependência for exibida entre essas camadas. Essas referências não serão consideradas dependências, a menos que o código use essas referências.

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

  2. Em Gerenciador de Camadas, examine a coluna Dá Suporte à Validação. Se o valor for falso, o item não dará suporte à validação.

Incluir outros assemblies e projetos do .NET para validação

Quando você arrasta itens para o diagrama de camada, as referências para os assemblies ou projetos do .NET correspondentes são adicionadas automaticamente à pasta Referências de Camada no projeto de modelagem. Essa pasta contém referências aos assemblies e aos projetos analisados durante a validação. É possível incluir outros assemblies e projetos do .NET para avaliação sem arrastá-los manualmente para o diagrama de camada.

  1. No Gerenciador de Soluções, clique com botão direito do mouse no projeto de modelagem ou na pasta Referências de Camada e, em seguida, clique em Adicionar Referência.

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

Validar código manualmente

Se tiver um diagrama de camada aberto vinculado a itens de solução, você poderá executar o comando de atalho Validar no diagrama. Também é possível usar o prompt de comando para executar o comando msbuild com a /p:ValidateArchitecture propriedade personalizada definida como True. Por exemplo, à medida que fizer alterações no código, execute a validação da camada regularmente de forma que você possa capturar conflitos de dependência com antecedência.

Para validar o código com base em um diagrama de camada aberto

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

    Dica

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

    A janela Lista de Erros relata todos os erros ocorridos. Para obter mais informações sobre erros de validação, consulte Compreender e resolver erros na validação de camada.

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

    Dica

    Visual Studio pode mostrar um gráfico de dependência, em vez da origem do erro.Isso ocorre quando o código tem uma dependência em um assembly não especificado pelo diagrama de camada ou o código não tem uma dependência especificada pelo diagrama de camada.Examine o gráfico de dependência ou o código para determinar se a dependência deve existir.Para obter mais informações sobre gráficos de dependência, consulte Mapear dependências em seu código nos 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. Abra o prompt de comando do Visual Studio.

  2. Escolha uma das seguintes opções:

    • Para validar o código em um projeto de modelagem específico na solução, execute MSBuild com a propriedade personalizada a seguir.

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

      -ou-

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

      msbuild /p:ValidateArchitecture=true 
      
    • Para validar o código em todos os projeto de modelagem na solução, execute MSBuild com a propriedade personalizada a seguir:

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

      -ou-

      Navegue até a pasta da solução, que deve conter um projeto de modelagem com um diagrama de camada e, em seguida, execute MSBuild com a seguinte propriedade personalizada:

      msbuild /p:ValidateArchitecture=true
      

    Todos os erros ocorridos serão listados. Para obter mais informações sobre MSBuild, consulte MSBuild e Tarefa MSBuild.

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

Gerenciar erros na validação

Durante o processo de desenvolvimento, você talvez queira suprimir alguns dos conflitos reportados durante a validação. Por exemplo, você talvez queira suprimir erros que já esteja resolvendo ou que não sejam relevantes para seu cenário específico. Quando você suprime um erro, é uma prática recomendada registrar em log um item de trabalho em Team Foundation.

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

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

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

Para

Siga estas etapas

Suprimir erros selecionados durante a validação

Clique com o botão direito do mouse em um ou em vários erros selecionados, aponte para Gerenciar Erros de Validação e, em seguida, clique em Suprimir Erros.

Os erros suprimidos são exibidos com formatação de tachado. Quando você executar a validação da próxima vez, esses erros não serão exibidos.

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

Parar a supressão de erros selecionados

Clique com o botão direito do mouse no erro ou nos erros suprimidos selecionados, aponte para Gerenciar Erros de Validação e, em seguida, clique em Parar de Suprimir Erros.

Os erros suprimidos selecionados serão exibidos quando você executar a validação na próxima vez.

Restaurar todos os erros suprimidos na janela Lista de Erros

Clique com o botão direito do mouse em qualquer lugar na janela Lista de Erros, aponte para Gerenciar Erros de Validação e, em seguida, clique em Mostrar Todos os Erros Suprimidos.

Ocultar todos os erros suprimidos na janela Lista de Erros

Clique com o botão direito do mouse em qualquer lugar na janela Lista de Erros, aponte para Gerenciar Erros de Validação e, em seguida, clique em Ocultar Todos os Erros Suprimidos.

Validar código automaticamente

É possível executar a validação da camada sempre que você executa uma compilação local. Se a equipe usar o Team Foundation Build, será possível executar a validação da camada com check-ins restritos, que você pode especificar criando uma tarefa MSBuild personalizada, e usar relatórios de compilação para coletar erros de validação. Para criar compilações de check-in restrito, consulte Usar um processo de compilação de check-in restrito para validar alterações.

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

  • Use um editor de texto para abrir o arquivo do projeto de modelagem (.modelproj) e, em seguida, inclua a seguinte propriedade:
<ValidateArchitecture>true</ValidateArchitecture>

-ou-

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

  2. Na janela Propriedades, defina a propriedade Validar Arquitetura do projeto de modelagem como Verdadeiro.

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

  3. No Gerenciador de Soluções, clique com o botão direito do mouse no arquivo do diagrama de camada (.layerdiagram) que você talvez queira usar na validação.

  4. Na janela Propriedades, verifique se a propriedade Compilar Ação do diagrama está 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 um Team Foundation Build

  1. No Team Explorer, clique duas vezes na definição da compilação e, em seguida, clique em Processo.

  2. Em Parâmetros do processo de compilação, expanda Compilação e digite o seguinte no parâmetro Argumentos de MSBuild:

    /p:ValidateArchitecture=true

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

Solucionar problemas de validação da camada

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

Problema

Possível Causa

Resolução

Os erros de validação não ocorrem como esperado.

A validação não funciona em diagramas de camada copiados de outros diagramas de camada no Gerenciador de Soluções e que estejam no mesmo projeto de modelagem. Os diagramas de camada copiados dessa maneira contêm as mesmas referências do diagrama de camada original.

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

  2. Copie os elementos do diagrama de camada de origem para o novo diagrama.

Compreendendo e Resolvendo Erros de Validação da Camada

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

  • Um artefato é atribuído à camada errada. Nesse caso, mova o artefato.

  • Um artefato como, por exemplo, uma classe usa outra classe de maneira a entrar em conflito com a arquitetura. Nesse caso, refatore o código para remover a dependência.

Para resolver esses erros, atualize o código até que mais nenhum erro seja exibido durante a validação. É possível realizar essa tarefa de maneira iterativa.

A seção a seguir descreve a sintaxe usada nesses erros, explica o significado desses erros e sugere o que é possível fazer para o resolver ou gerenciá-los.

Sintaxe

Descrição

ArtefatoN(ArtefatoTipoN)

ArtefatoN é um artefato associado a uma camada no diagrama de camada.

TipoArtefatoN é o tipo de ArtefatoN como, por exemplo, Classe ou Método:

MySolution.MyProject.MyClass.MyMethod(Method)

NomeNamespaceN

O nome de um namespace.

NomeCamadaN

O nome de uma camada no diagrama de camada.

DependencyType

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

Erro de Sintaxe

Descrição do Erro

AV0001: Dependência inválida: Artefato1(TipoArtefato1) --> Artefato2(TipoArtefato2)

   Camadas: NomeCamada1, NomeCamada2 | Dependências: TipoDependência

Artefato1 em NomeCamada1 não deve ter uma dependência em Artefato2 no NomeCamada2 porque NomeCamada1 não tem uma dependência direta em NomeCamada2.

AV1001: Namespace Inválido: Artefato

   Camada: NomeCamada | Namespace Obrigatório: NomeNamespace1 | NamespaceAtual: NomeNamespace2

NomeCamada exige que seus artefatos associados devam pertencer a NomeNamespace1. Artefato está no NomeNamespace2, não no NomeNamespace1.

AV1002: Depende do Namespace Proibido: Artefato1(TipoArtefato1) | Artefato2(TipoArtefato2)

   Camada: NomeCamada | Namespace Proibido: NomeNamespace | Dependências: TipoDependência

NomeCamada exige que seus artefatos associados não devam depender de NomeNamespace. Artefato1 não pode depender do Artefato2 porque o Artefato2 está no NomeNamespace.

AV1003: No Namespace Proibido: Artefato(TipoArtefato)

   Camada: NomeCamada | Namespace Proibido: NomeNamespace

NomeCamada exige que seus artefatos associados não possam pertencer ao NomeNamespace. Artefato pertence ao NomeNamespace.

AV3001: Link Ausente: não foi possível encontrar os links da camada 'NomeCamada' com o 'Artefato'. Você não tem uma referência de assembly?

Não foi possível encontrar os links da camada NomeCamada com um artefato. Por exemplo, um link para uma classe talvez não seja encontrado porque o projeto de modelagem não tem uma referência para o assembly que contém a classe.

AV9001: A análise arquitetônica encontrou erros internos. Os resultados talvez não estejam completos. Para obter mais informações, consulte o log de eventos da compilação detalhado ou a janela de saída.

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

Consulte também

Conceitos

Validando o sistema durante o desenvolvimento