Análise de código: uma visão geral da ferramenta NDepend
A pressão por uma rápida entrega dos projetos corresponde, sem sombra de dúvidas, a uma das principais dificuldades enfrentadas por desenvolvedores de software. Outros desafios a superar e que merecem destaque são o crescimento natural dos sistemas com o decorrer do tempo, além dos diferentes níveis de conhecimento/proficiência dos profissionais engajados em um mesmo projeto. A soma de todos estes fatores pode vir a impactar na forma como um software é entregue, afetando inclusive a qualidade do produto obtido como resultado deste processo.
Levando em consideração todos estes pontos, diversas práticas e padrões foram concebidos de maneira a garantir um nível mínimo de qualidade no código de um projeto de software. No entanto, a utilização destas técnicas pode se revelar em muitos casos como insuficiente. Procurando suprir tais necessidades, ferramentas foram criadas visando auxiliar desenvolvedores e arquitetos de software na busca contínua por uma maior qualidade. Um exemplo disto é a solução “Static Code Analysis” (ou simplesmente “Code Analysis”), a qual é parte integrante do Visual Studio (no caso específico da versão 2013, este recurso encontra-se disponível nas edições Ultimate, Premium e Professional).
O objetivo principal do Code Analisys está em indicar melhorias que possam ser realizadas em uma aplicação (utilizando-se de um conjunto de regras pré-definidas pela própria Microsoft), sem que isto implique em correções automáticas no código. Embora se trate de uma opção extremamente útil, existem ainda alternativas comercializáveis que vão muito além das capacidades oferecidas por este mecanismo do Visual Studio. Uma excelente ferramenta voltada a este tipo de demanda é o NDepend, o qual conta também com uma versão avaliação de 14 dias.
Totalmente integrável ao Visual Studio, o NDepend dispõe de funcionalidades que tornam possíveis:
- A realização de análises a fim de determinar a qualidade do código de um projeto ou solução, com a geração de gráficos que detalham os resultados encontrados;
- A comparação entre diferentes versões de um mesmo arquivo código-fonte, permitindo assim a visualização das modificações realizadas;
- A elaboração de relatórios de integração contínua, gerados durante o processo de build de aplicações;
- Um recurso conhecido como CQLinq (Code Query over LINQ), que viabiliza a realização de consultas para analisar o código a partir de expressões LINQ;
- A obtenção de diagramas para 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 diferentes componentes de uma mesma solução;
- A realização de análises da cobertura de código para efeitos de testes.
Logo após a instalação do NDepend, um menu será criado no Visual Studio para possibilitar o acesso às funcionalidades que compõem o mesmo (Imagem 1).
Imagem 1. Acessando o NDepend a partir do Visual Studio 2013
OBSERVAÇÃO: o teste apresentado neste artigo foi realizado a partir do Microsoft Visual Studio Professional 2013. Quanto ao NDepend, a demonstração utilizou como base a versão 5.4 desta ferramenta.
Uma análise de código pode ser executada acessando o seguinte caminho: NDEPEND > Analyze > Analyze VS Solutions and VS Projects (Imagem 2).
Imagem 2. Executando uma análise de código através do NDepend
Aparecerá então uma tela na qual será preciso selecionar um projeto/solução para análise (Imagem 3). Definida a aplicação, o próximo passo será acionar a opção “Analyze a single .NET Assembly” (Imagem 4).
Imagem 3. Tela para seleção de um projeto/solução para análise
Imagem 4. Projeto selecionado para análise
Após este último procedimento uma nova janela será exibida, para que o usuário possa escolher uma visualização na qual constará o resultado do processo de verificação (Imagem 5).
Imagem 5. Acessando o dashboard do NDepend
Uma interessante opção oferecida pelo NDepend é um dashboard (acessível por meio da opção “View NDepend Dashboard”), no qual constará uma análise bem detalhada de uma aplicação. Por mais que o projeto verificado neste exemplo seja extremamente simples, na Imagem 6 é possível observar um resumo de todas as checagens executadas pela ferramenta NDepend (algo que permite se chegar a uma dimensão do poder desta ferramenta em grandes projetos).
Imagem 6. Dashboard do NDepend
Uma tela com prováveis mensagens a respeito do processo de análise também deverá aparecer no Visual Studio, como indicado na Imagem 7.
Imagem 7. Mensagens produzidas após a execução de uma análise via NDepend
Chego com isto ao fim de mais um post. Conforme informado no início desta discussão, a ideia foi apresentar rapidamente algumas das funcionalidades do NDepend e de que maneira o mesmo pode ser útil no processo de desenvolvimento de software.
Até uma próxima oportunidade!
Links
NDepend
http://www.ndepend.com/
NDepend Product Features
http://www.ndepend.com/features/