Visualizando as dependências de um projeto através da ferramenta NDepend
Em um post anterior apresentei a ferramenta NDepend, uma solução totalmente integrável ao Visual Studio e que tem por meta auxiliar profissionais de desenvolvimento .NET na obtenção de um código de maior qualidade. Embora se trate de uma alternativa que dependa da aquisição de licenças, o NDepend disponibiliza uma versão de avaliação que pode ser utilizada durante um período de 14 dias.
Dentre os recursos oferecidos pelo NDepend é possível destacar:
- Funcionalidades de análise capazes de determinar a qualidade do código de um projeto ou solução, com a produção de gráficos detalhando os resultados encontrados;
- A comparação entre diferentes versões de um mesmo arquivo de código-fonte, permitindo assim a visualização das modificações realizadas;
- Meios para a elaboração de relatórios de integração contínua, com dados obtidos durante o processo de build de aplicações;
- O mecanismo conhecido como CQLinq (Code Query over LINQ), o qual torna possível a realização de consultas para análise de código a partir de expressões LINQ;
- A existência de diagramas para a visualização da arquitetura existente, algo que pode ser de extrema valia na identificação das dependências dentro de um projeto;
- A detecção de dependências cíclicas (algo a ser evitado) entre os diferentes componentes que formam uma solução;
- Análises da cobertura de código, as quais seriam úteis para efeitos de testes.
O objetivo deste novo artigo é apresentar, resumidamente, de que maneira o NDepend pode ser utilizado na visualização das dependências em soluções criadas com o Visual Studio. Este tipo de recurso pode ser de grande valia para Desenvolvedores e Arquitetos, já que permite aos mesmos um melhor entendimento acerca da forma como um projeto foi estruturado.
Exemplo de utilização
Para a demonstração proposta por este artigo será utilizada a versão 6.0 da ferramenta NDepend, o Microsoft Visual Studio Professional 2013 Update 4 como IDE de desenvolvimento, além do projeto “Contoso University Web Application”. Este último nada mais é do que uma solução fornecida pela própria Microsoft, tendo por intenção detalhar o uso do Entity Framework Code First em uma aplicação MVC 5. O download do código-fonte pode ser realizado através do seguinte link:
Uma vez descompactado o projeto de testes compilar o mesmo, a fim de permitir a geração dos assemblies que fariam parte de um eventual deploy. Será a partir de tais arquivos que o NDepend conseguirá efetuar uma análise das dependências existentes.
A instalação do NDepend fará com que um menu desta ferramenta seja criado no Visual Studio. O primeiro passo para possibilitar a análise das dependências da aplicação de exemplo será acessar o menu “NDEPEND” e, em seguida, a opção “Attach New NDepend Project to Current VS Solution” (Imagem 1).
Imagem 1. Acessando o NDepend a partir do Visual Studio 2013
Aparecerá então uma tela na qual serão listados os projetos encontrados (Imagem 2). Acionar a opção “Analyze a single .NET Assembly”, fechando em seguida a janela e o browser que forem abertos automaticamente (no caso, um resumo com uma série de análises).
Imagem 2. Tela para seleção a execução de uma análise
Voltando ao menu do NDepend, acionar a opção “Graph” e na sequência o item “View Dependency Graph” (Imagem 3).
Imagem 3. Acessando a opção para visualização das dependências
Neste momento será exibido um gráfico com todas as dependências encontradas para o projeto ContosoUniversity (Imagem 4). Posicionar o mouse sobre um dos elementos possibilitará a visualização de maiores detalhes a respeito da dependência em questão.
Imagem 4. Gráfico com as dependências do projeto ContosoUniversity
Além da funcionalidade demonstrada neste artigo, o NDepend conta com muitos outros recursos que podem ser úteis no dia-a-dia de Desenvolvedores. Maiores detalhes sobre as opções oferecidas por esta ferramenta podem ser obtidos na seção “Referências”.
Até uma próxima oportunidade!
Referências
NDepend
http://www.ndepend.com/
NDepend Product Features
http://www.ndepend.com/features/