Pergunta

Eu tenho experimentado NDepend, tenho lido alguns posts sobre isso e até ouvi um podcast. Eu acho que o NDepend pode ser uma ferramenta realmente útil, mas ainda não vejo onde o usaria.

como você usa isso? Você usa, por quê? Por que não?

Eu gostaria de ouvir sobre alguns exemplos de mundo real realistas.

Foi útil?

Solução

Eu usei extensivamente o NDEPEND nos últimos anos. Basicamente, é uma ferramenta de análise de dependência e, portanto, isso pode ajudá -lo com muitos problemas relacionados à dependência.

Uma das principais coisas para as quais uso é examinar as dependências entre meus conjuntos, tipos e métodos. Isso me ajuda a manter uma visão de saber se o acoplamento entre os tipos está fora de controle e também me ajuda a identificar oportunidades de refatoração.

Ao embarcar em um enorme refator, por exemplo, extração. "

O NDepend também possui uma ótima matriz visual para visualizar esse tipo de informação.

Além disso, possui uma linguagem de consulta fantástica, CQL, que permite escrever consultas personalizadas. Essas podem ser coisas simples, como "Mostre -me todos os métodos que chamam esse método", para consultas para destacar o código morto, consultas sobre complexidade cilcomática, acoplamento, etc. e muito mais.

Por sua vez, ele pode ser integrado a um processo de construção, para que você possa criar avisos/falhas com base em consultas CQL, como "falhar na construção se um método tiver mais de 100 linhas de código, mas sem comentários" (este é um exemplo - Não estou sugerindo que essa métrica em particular seja uma coisa boa).

Ele também pode importar dados de cobertura de código e fornecer uma representação visual de áreas com pouca cobertura de código, além de permitir que você execute consultas CQL contra informações de cobertura de código (por exemplo, mostre -me métodos com menos de 70% de cobertura de código)

Você também pode carregar sua construção atual do seu projeto e uma construção anterior e executar consultas entre elas, como "Mostre -me a todos novo Tipos que têm <70% de cobertura de código " - isso ajuda a introduzir regras mais rígidas nas bases de código existentes.

Esta é uma ferramenta fantástica e não é muito difícil de aprender. É assustador no início, apenas por causa do grande volume de InformAton que lhe dá, mas é altamente recomendado.

Outras dicas

Também acho inestimável para entender a estrutura de chamadas de método complicadas. Posso ligar para todos os métodos usando transiativamente um método ou campo específico, por exemplo, e posso ver se existem possíveis problemas com chamadas circulares, dependências indesejadas ou caminhos mais complicados do que o necessário etc.

O gráfico de dependência também agora é interativo, para que eu possa remover os métodos nos quais não estou interessado e movo outras pessoas para dar uma boa visualização do que está acontecendo.

Achei útil visualizar alterações entre versões de montagens. Mesmo para um instantâneo de mudanças em um determinado lançamento ...

Eu acho que brilha em um ambiente de integração contínua, onde você pode configurar consultas CQL para medir as métricas de código em que você está interessado (complexidade ciclomática, métodos longos etc.) e, em seguida, você pode medir sua melhoria nessas áreas ao longo do tempo.

Na verdade, essa ferramenta é útil se você tiver a interface EG que está usando por outra parte do aplicativo desenvolvido por uma pessoa/fornecedor diferente. Toda vez que você deseja alterar a interface, você precisa descobrir quem está usando sua interface para evitar quebrar seu código (Assembly não será construído), isso é aplicável a projetos maiores.

Essa ferramenta é útil quando seu aplicativo tem um grande número de montagens. Isso me ajuda a descobrir as dependências do código e também as mudanças entre os lançamentos

Também estou usando o NDepend para comparar duas versões de alguma montagem. O NDepend tem esse recurso excelente. Isso me dá uma visão sobre mudanças e progresso no trabalho na montagem, métodos que foram adicionados, métodos removidos e muito mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top