Question

J'ai essayé NDepend , lu quelques blogposts à son sujet et même entendu un podcast. Je pense que NDepend pourrait être un outil très utile, mais je ne vois toujours pas où je l'utiliser.

Comment utilisez-vous? Utilisez-vous, pourquoi? Pourquoi pas?

Je voudrais entendre parler de quelques exemples réels du monde vers le bas-à-terre.

Était-ce utile?

La solution

Je l'ai utilisé NDepend abondamment au cours des dernières années. Fondamentalement, il est un outil d'analyse de dépendance, et donc cela peut vous aider avec beaucoup de problèmes liés à la dépendance.

L'une des principales choses que je l'utilise pour est d'examiner les dépendances entre mes ensembles, types et méthodes. Cela me permet de garder une vue si le couplage entre les types est hors de la main, et me aide aussi refactorisation possibilités repère.

Lorsque se lancer dans un refactor massif, par exemple, extracting.moving types à d'autres assemblées, ce qui vous permet de voir ce qui dépend de ce que vous ne devez pas faire le vieux « déplacer mes types à un autre ensemble, puis essayer de compiler et de voir ce qui se brise »

NDepend a également une grande matrice visuelle pour la visualisation de ce genre d'informations.

De plus, il a un langage de requête fantastique, CQL, qui vous permet d'écrire des requêtes personnalisées. Ceux-ci peuvent être des choses simples comme « me montrer toutes les méthodes qui appellent cette méthode », aux requêtes pour mettre en évidence le code mort, les requêtes sur la complexité cyclomatique, couplage, etc, et beaucoup plus.

À son tour, il peut être intégré dans un processus de construction, de sorte que vous pouvez construire avertissements / échecs basés sur des requêtes CQL, comme « échec de la construction si une méthode a plus de 100 lignes de code, mais pas de commentaires » (ce est un exemple -. Je ne dis pas que cette mesure particulière est une bonne chose)

Il peut également importer des données de couverture de code et vous donner une représentation visuelle des zones avec peu de couverture de code, ainsi que vous permettant d'exécuter des requêtes CQL contre des informations de couverture de code (par exemple, me montrer des méthodes avec moins de 70% de couverture de code)

Vous pouvez également charger votre version actuelle de votre projet, et une version précédente, et exécuter des requêtes entre eux tels que « me montrer tous les nouveau types qui ont <70% de couverture de code » - cela aide vous introduisez des règles plus strictes sur codebases existantes.

Ceci est un outil fantastique, et il est pas trop difficile à apprendre. Il est effrayant au début, juste à cause du volume de informaiton il vous donne, mais il est fortement recommandé.

Autres conseils

Je trouve aussi une valeur inestimable dans la compréhension de la structure des appels de méthodes complexes. Je peux appeler toutes les méthodes utilisant transitive une méthode particulière ou d'un champ, par exemple, et peut voir s'il y a des problèmes possibles avec des appels circulaires ou des dépendances indésirables, ou les chemins qui sont plus alambiquée que nécessaire, etc.

Le graphe de dépendance est désormais interactive, donc je peux supprimer des méthodes que je ne suis pas actuellement intéressé et déplacer d'autres autour de donner une bonne visualisation de ce qui se passe.

Je l'ai trouvé utile de visualiser les changements entre les versions des assemblées. Même pour un aperçu des changements dans une version donnée ...

Je pense qu'il brille dans un environnement d'intégration continue où vous pouvez configurer les requêtes CQL pour mesurer les métriques de code qui vous intéressent (complexité cyclomatique, longues méthodes, etc.), et vous pouvez mesurer votre amélioration dans ces domaines au cours temps.

En fait, cet outil est utile si vous avez par exemple interface qui utilise par une autre partie de l'application développée par une personne différente / fournisseur. Chaque fois que vous voulez changer l'interface que vous devez savoir qui utilise l'interface pour éviter de casser son code (montage ne construira pas) Ceci est applicable pour les grands projets.

Cet outil est utile lorsque votre application a un grand nombre d'assemblages. Il me aide à trouver les dépendances de code et ainsi que les changements entre les versions

J'utilise aussi NDepend pour comparer deux versions de certains assemblage. NDepend cette fonctionnalité excelent. Thats me donne de vue sur les changements et l'avancement des travaux dans l'assemblage, les méthodes qui ont été ajoutées, les méthodes retirées et beaucoup d'autres.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top