Bit a bit, si cresce sempre


Blog di un ingeformatico
Statistiche
  • Views Home Page: 528.625
  • Views Posts: 1.658.020
  • Views Gallerie: 881.163
  • n° Posts: 520
  • n° Commenti: 301
Ora e Data
Archivio Posts
Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005

NDepend

Sono ormai diversi mesi che faccio un uso costante di un tool per applicazioni .NET da un prezzo abbastanza contenuto, NDepend, creato da un Microsoft MVP su C#, Patrick Smacchia. 

 

Serve per misurare lo stato di salute del proprio codice, operazione tutt’altro che semplice ma fattibile se si misurano scientificamente alcuni parametri significativi.

Questo programma analizza il codice e suggerisce possibili azioni di miglioramento, sia come complessità computazionale, sia come performance.

Riporto innanzitutto la pagina del sito di NDepend dove sono riassunte le caratteristiche principali. 

 

Come si potrà vedere, tante sono le funzionalità messe in campo e rese disponibili agli sviluppatori.

Ecco una (parziale) lista:

 

          CQL (Code Query Language) Queries & Constraints

          Quality & Metrics

          Dependencies Layering & Refactoring

          Code Snapshot Comparison

          Code Coverage

          State & Mutability

          Dead Code

          Optimal Encapsulation

          Naming Convention

          Object model

          Build Process Health

          Code Impacted

 

Con il Code Query Language (CQL) si possono impartire interessanti query del tipo:

 

          SELECT TOP 10 METHODS ORDER BY NbLinesOfCode DESC

          SELECT METHODS WHERE NbLinesOfCode > 10

          SELECT METHODS WHERE IsDirectlyUsing ?System.String?

          SELECT METHODS WHERE NbLinesOfCode > 10 AND PercentageComments < 30

          SELECT METHODS WHERE NbVariables > 10

 

 

Non c’è bisogno di spiegare queste “Select”; parlano già da sole, ed ovviamente non c’è nemmeno bisogno di scriversele a mano, dato che fa tutto il programma, basta chiedergli quello a cui si è interessati.

E ce ne sono una quantità smisurata, che nemmeno in mesi di utilizzo si riuscirà a provarle tutte.

 

Installazione

 

Una volta scaricato e scompresso il pacchetto, si ha una cartella di circa 17 MB, così composta come in figura:

 

 

Lanciando il file “VisualNDepend.exe” si ottiene questa schermata:

 

 

Da qua, come si vede, si possono intraprendere diverse strade. Si può aprire un progetto esistente (Open: Project – si crea un file xml per un progetto di tipo NDepend);

crearne direttamente uno nuovo (Create: Project – opzione che forse verrà poco utilizzata, dato che anche qua si crea un progetto di tipo NDepend in formato xml);

analizzare una serie di dll esistenti (Analyze: a set of .NET assemblies) e

paragonare due versioni differenti di una stessa sorgente di codice (Compare: 2 versions of a code base).

 

Si può anche, e lo consiglio senz’altro, installare gli add-in per Visual Studio (2005 e 2008) e per Reflector, il famoso disassemblatore di Lutz Roeder.

La schermata di sotto compare quando nel pc – come nel mio caso – tali add-in sono già installati, e quindi chiede se si vogliono re-installare o disinstallare.

L’integrazione in Visual Studio porta diverse interessanti possibilità, come si vede dalla figura:

 

L’opzione che probabilmente verrà più utilizzata è quella di caricare le dll dei propri progetti.

A questo punto il tool inizia una fase di analisi (abbastanza rapida) che riporterà tutta una lunga serie di statistiche utilissime, compresi eventuali problemi che può aver trovato nel codice.

Quello che mostrerà l’applicazione è talmente ricco di dettagli che, al primo utilizzo, ci si troverà disorientati dall’abbondanza di informazioni, presentate tra l’altro sotto un’eccellente veste grafica.

Ci vorrà del tempo per diventare “confident” con questa interfaccia, ed anche dopo mesi di utilizzo è probabile che si scoprano nuove funzionalità o si approfondiscano meglio strade già intraprese.

 

Qua sotto una schermata presa dalla documentazione del prodotto, nel caso in cui (per prova) si analizza Paint.NET.

 Non manca documentazione di aiuto. Ci sono anche dei validi video in Flash (io li visualizzo con Chrome) e dal sito stesso si possono utilizzare questi come punto di partenza:

 

 

Come si vede materiale non manca di certo, ed è da mettere in conto almeno un weekend di studio (e divertimento!) con queste risorse di varia natura.

Il tempo speso è però subito ricompensato non appena si inizia ad utilizzare il tool.

 

I prezzi, purtroppo, non sono popolari, ed è necessario sborsare una certa quantità di quattrini anche per una sola licenza.

Qua sotto una tabella riepilogativa.

 

Number of licenses  Price per license

 

1             EUR 299   -   US$ 418 

2 to 3      EUR 259   -   US$ 362 

4 to 5      EUR 229   -   US$ 320 

6 to 10    EUR 199   -   US$ 277 

11 to 20  EUR 189   -   US$ 264 

More than 20  EUR 179   -   US$ 250 

 

Il tool, a parte il discorso sul prezzo, è assolutamente fantastico, e credo non debba mancare nella cassetta degli attrezzi di un qualsiasi sviluppatore che ami il proprio lavoro.

La sua non banalità richiede però un minimo di tempo per prenderne completa padronanza. 

 

 

 

Categoria: Dot NET e dintorni
martedì, 20 ott 2009 Ore. 11.00
Meteo
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003