2010-10-06 19 views
6

Una delle cose su cui ho riflettuto molto è come utilizzare le metriche di qualche tipo per misurare il cambiamento, stiamo andando indietro o no? Questo è nel contesto di una grande base di codici legacy che stiamo migliorando. La maggior parte del codice è C++ con un'eredità C. Alcune nuove funzioni e la GUI sono scritte in C#.Come posso visualizzare le modifiche in una grande qualità del codice base?

Per iniziare, potremmo almeno verificare se il livello di complessità semplice stava cambiando nel tempo nel codice. La difficoltà è nell'avere una rappresentazione - possiamo forse fare una superficie 3D dove una mappa 2D rappresenta il codice e abbiamo una mappa di calore di colore che rappresenta la complessità con la superficie 3D che si gonfia dentro e fuori per mostrare il cambiamento.

Una volta che è possibile generare alcune matrici di numeri, ci sono un sacco di sistemi matematici in giro per occuparsi di cose come questa.

Nel tempo, mi piacerebbe avere numeri più sofisticati, ma le stesse tecniche di visualizzazione utilizzate per rappresentare il cambiamento.

Mi piace l'idea in Crap4j di concentrarsi sul rapporto tra complessità e numero di test unitari che coprono quel codice.

Vorrei anche includere Uncle Bob's SOLID metrics e alcune delle metriche OO di Chidamber e Kemerer. La parte difficile è trovare strumenti per generare questi per C++. L'unica opzione sembra essere Krakatau Essential Metrics (non ho obiezioni a pagare per gli strumenti). Il mio desiderio di utilizzare le metriche CK deriva in parte dai libri Object-Oriented Metrics:Measures of Complexity di Henderson-Sellers e dal precedente Object-Oriented Software Metrics.

Se iniziamo a utilizzare un certo numero di queste metriche, potremmo ritrovarci con una decina di numeri che variano nel tempo. Sono abbastanza ignorante delle statistiche ma sembra che potrebbe essere interessante tracciare un gruppo di tali metriche e quindi prestare attenzione a quali tendono a variare.

Si noti che una domanda correlata è circa measuring code quality across a large code base. Sono più interessato a misurare il cambiare.

risposta

3

Prendere in considerazione l'utilizzo di un Kiviat Diagram per rappresentare più dimensioni di metriche del software che si evolvono nel tempo. Questi diagrammi rappresentano più punti dati in uno scafo concavo attorno a un punto centrale. L'ispezione visiva mostrerà dove una particolare metrica sta andando verso l'alto o verso il basso, e si dovrebbe essere in grado di calcolare un rapporto complessivo di area distorta per valore metrico usando un calcolo di area hueristic.

+1

Grazie, che è stato il termine magia avevo bisogno di essere in grado di restringere le ricerche. Ho trovato un poster molto interessante sull'utilizzo di diagrammi 3D Kiviat http://w3.msi.vxu.se/~kerren/pubs/kerren-softvis10.pdf –

+0

Aggiornamento del collegamento alla carta: http: //homepage.lnu. se/staff/akemsi/pubs/kerren-softvis10.pdf –

1

È inoltre possibile dare un'occhiata a NDepend documentation about code metrics. Disclaimer: Sono uno degli sviluppatori dello strumento NDepend.

Con la funzione Code Rule and Query over LINQ (CQLinq), è possibile richiedere l'evoluzione/andamento del metrica del codice attraverso due diverse istantanee nel tempo del codice di base. Ad esempio c'è una regola predefinita proposta: Avoid making complex methods even more complex illustrato dalla schermata qui sotto:

Avoid making complex methods even more complex

diverse regole trend metrica si propongono come:

Per quanto riguarda la visualizzazione del codice di metrica, NDepend lascia visualizzare i valori metriche del codice attraverso un interactive treemap:

Code Metric viualized through Treemap

+0

Grazie per il suggerimento, ma come ho detto nella domanda, la maggior parte del codice che mi riguarda è C++. Ho visto demo della gelosia di NDepend. Apprezzo il suggerimento di dare un'occhiata alla documentazione della metrica. –

+0

Allora perché non usare CppDepend? http://www.cppdepend.com/ La versione C++ di NDepend? –

+0

Non avevo notato che esistesse. L'unica menzione è nell'angolo in basso a destra della home page "below the fold" e NDepend è pubblicizzato pesantemente come uno strumento .Net. Darò sicuramente un processo. Ti suggerisco anche di parlare con gli addetti al marketing per ottenere una menzione sul banner del sito web per dire che fai anche C++ e Java - mi chiedo quanti altri hanno perso il collegamento C++. Grazie –

Problemi correlati