PDA

View Full Version : Osservatorio complessita'


fek
05-02-2008, 10:22
Package # Classes Line Coverage Branch Coverage Complexity
All Packages 138 85%

92%

1.304054054054054;1.304
it.diamonds 5 86%

100%

1.5;1.5
it.diamonds.droppable 10 98%

100%

1.3448275862068966;1.345
it.diamonds.droppable.gems 5 100%

100%

2.1666666666666665;2.167
it.diamonds.droppable.interfaces 6 N/A

N/A

1.0;1
it.diamonds.droppable.pair 5 100%

100%

1.0;1
it.diamonds.droppable.types 6 95%

N/A

1.0;1
it.diamonds.engine 10 86%

89%

1.3043478260869565;1.304
it.diamonds.engine.audio 6 11%

0%

1.0;1
it.diamonds.engine.input 11 68%

86%

1.1428571428571428;1.143
it.diamonds.engine.modifiers 3 100%

100%

1.0;1
it.diamonds.engine.video 14 53%

51%

1.3653846153846154;1.365
it.diamonds.grid 4 100%

100%

1.1153846153846154;1.115
it.diamonds.grid.action 11 99%

100%

1.7777777777777777;1.778
it.diamonds.grid.iteration 1 100%

100%

1.5;1.5
it.diamonds.grid.query 1 100%

100%

1.75;1.75
it.diamonds.grid.state 13 100%

100%

1.4838709677419355;1.484
it.diamonds.gui 5 100%

100%

1.2307692307692308;1.231
it.diamonds.handlers 7 100%

100%

1.3333333333333333;1.333
it.diamonds.menu 6 98%

N/A

1.0;1
it.diamonds.renderer 1 100%

N/A

1.0;1
it.diamonds.tests 4 99%

100%

0.0;0
it.diamonds.tests.droppable.gems 1 100%

N/A

0.0;0
it.diamonds.tests.engine.input 2 100%

N/A

0.0;0
it.diamonds.tests.helper 1 88%

N/A

0.0;0


La formattazione fa un po' schifo, magari lo metto in Excel e lo riformatto a breve.
Comunque, le percentuali indicano la copertura dei test per ogni pacchetto. Il numero indica la complessita' ciclomatica media del pacchetto. Diamonds al momento ha complessita' 1.304 e copertura del 92% e 86% (linee e branch). Provero' a postare questi dati regolarmente per vedere se scende (bene), o sale (vi spezzo le dita).

fek
05-02-2008, 21:20
Package 05 February 2008 04 February 2008 03 February 2008
it.diamonds 1.304 1.33 1.298
it.diamonds.droppable.gems 2.167 2.167 2.167


Package 05 February 2008 04 February 2008 03 February 2008
it.diamonds 86% 85% 85%
it.diamonds.droppable.gems 100% 100% 100%


Package 05 February 2008 04 February 2008 03 February 2008
it.diamonds 138 138 136
it.diamonds.droppable.gems 5 5 5


E' una sintesi piu' chiara dell'andamento negl'ultimi tre giorni. Notare come siano aumentate le classi, si sia alzata la complessita' l'altro ieri, ma sia di nuovo scesa a seguito dei refactoring.

Ufo13
06-02-2008, 09:03
complessita` in che senso? Numero di nested branch/loop o cosa?

fek
06-02-2008, 09:32
complessita` in che senso? Numero di nested branch/loop o cosa?

Complessita' ciclometrica. E' una misura di quanti test hai bisogno per coprire tutti i code path di un metodo.

fek
06-02-2008, 09:55
http://fcarucci.homeip.net:8080/cruisecontrol/buildresults/diamonds-nightly?tab=Cobertura

In pausa pranzo compilo qualche risultato nel mio spreadseet, che sto tenendo aggiornato in questo periodo di refactoring per valutare i progressi.
La complessita' corrente e' 1.293, piu' bassa di ieri, mentre le classi sono passate da 138 a 140 (le due description che ho aggiunto ieri).

Secondo me per la fine di questo periodo di refactoring possiamo puntare ad una complesita' media di 1.200, che significa in soldoni, che quattro classi su cinque che scriviamo hanno un solo code path, quello principale, e nessuna condizione o loop. Fa molto OOP :)

Questo miglioramento si nota anche solo guardando il codice, che e' diventato piu' semplice da gestire e manipolare nelle ultime due settimane. Complimenti a tutti. Ma c'e' ancora molto lavoro da fare, soprattutto su gems, Droppable, BigGem e Grid.

Ma la situazione migliora ed ora abbiamo uno strumento per misurare questo cambiamento.

Jocchan
06-02-2008, 10:48
Bravissimi tutti :)

thebol
06-02-2008, 10:50
http://www.testearly.com/2008/02/05/fine-grained-code-coverage/

parla di un software di coverage, che misura la distanza fra un test è la riga testata. Si riallaccerebe al discorso di fek, del codice testato troppo in alto.

fek
06-02-2008, 10:56
http://www.testearly.com/2008/02/05/fine-grained-code-coverage/

parla di un software di coverage, che misura la distanza fra un test è la riga testata. Si riallaccerebe al discorso di fek, del codice testato troppo in alto.

Grazie lo guardo nel finesettimana. Purtroppo i tool devono supportare Ant, e poi mi devono fornire una qualche pagina html da sbattere sulla build machine, perche' non ho intenzione di imparare a scrivere gli XSLT o come diamine si chiamano :D

thebol
06-02-2008, 11:27
Grazie lo guardo nel finesettimana. Purtroppo i tool devono supportare Ant, e poi mi devono fornire una qualche pagina html da sbattere sulla build machine, perche' non ho intenzione di imparare a scrivere gli XSLT o come diamine si chiamano :D

una roba del genere per java che non supporti ant è un abominio...

ps.ho guardato il progetto, sembra essere molto prematuro, mancano anche i binari, bisogna costruirsi il jar dal cvs....mi sa che l'addozione sarebbe un po prematura, ma si può guardare se evolve.

pps.oppure estendere cobertura per far sto lavoro. Alla fine da quel che ho letto misura la distanza in base allo stack trace, ci si potrebbe pensare..

Ufo13
06-02-2008, 11:50
Grazie lo guardo nel finesettimana. Purtroppo i tool devono supportare Ant, e poi mi devono fornire una qualche pagina html da sbattere sulla build machine, perche' non ho intenzione di imparare a scrivere gli XSLT o come diamine si chiamano :D

Io le sapevo scrivere le trasformazioni XSLT

fek
06-02-2008, 13:17
Io le sapevo scrivere le trasformazioni XSLT

Abbiamo un volontario!

fek
06-02-2008, 13:19
pps.oppure estendere cobertura per far sto lavoro. Alla fine da quel che ho letto misura la distanza in base allo stack trace, ci si potrebbe pensare..

Guarda, la mia idea su Diamonds e' usare solo tool "off the shelf" per la continuous integration. In pratica non voglio scrivere codice, ma semplicemente usare i tool che ci sono. Lo sviluppo dei tool di Java e' assolutamente impressionante per quante cose si possono fare senza scrivere codice.

thebol
06-02-2008, 13:26
Guarda, la mia idea su Diamonds e' usare solo tool "off the shelf" per la continuous integration. In pratica non voglio scrivere codice, ma semplicemente usare i tool che ci sono. Lo sviluppo dei tool di Java e' assolutamente impressionante per quante cose si possono fare senza scrivere codice.

dicevo cosi come ipotesi..che non deve essere per forza legata a diamonds

fek
06-02-2008, 13:43
Magari dopo Diamonds non mi dispiacerebbe contribuire con qualche tool per Java :)

Bonfo
06-02-2008, 18:58
Magari dopo Diamonds non mi dispiacerebbe contribuire con qualche tool per Java :)

Figo... siamo gia' nel futuro :asd: :asd: :asd:

fek
07-02-2008, 09:54
La complessita' di oggi e' 1.289. Ma la copertura e' scesa all'84%

Questo metodo e' da testare:

public WaitNextCrushState(Environment environment, long time, AbstractControllerState returnState)

27 0

{

28 0

this.allGemsHaltedTimeStamp = time;

29 0

this.delayBeforeNextCrush = environment.getConfig().getInteger("DelayBetweenCrushes");

30 0

this.crushState = new CrushState(environment, returnState);

31 0

}

in WaitNextCrushState.

Un volontario?

Ufo13
07-02-2008, 10:09
Sicuramente causa del test che ho cancellato. Me lo prendo io :)

Bonfo
12-02-2008, 05:55
Ehm... la build-machine è un po' impazzita!

Builda correttamente il progetto diamonds, ma fallisce dimaonds-nightly.
In più non viene generata la pagina di cobertura.

fek
12-02-2008, 09:20
Ci sto guardando ora.

fek
12-02-2008, 09:25
Verde.
Complessita' corrente: 1.278 :)

Ufo13
12-02-2008, 09:28
Quella e` la complessita` media? Esiste anche il report per package? Non ho il link da qui :S

fek
12-02-2008, 09:39
Quella e` la complessita` media? Esiste anche il report per package? Non ho il link da qui :S

http://fcarucci.homeip.net:8080/buildresults/diamonds-nightly?tab=Cobertura

Esiste il report riga di codice per riga di codice :)

fek
19-02-2008, 09:38
Complessita': 1.282
Copertura: 82%

Stanno entrambi andando giu', alziamo la copertura.

thebol
21-02-2008, 21:49
è normale che non venga generato il report cobertura?
http://fcarucci.homeip.net:8080/cruisecontrol/buildresults/diamonds?tab=Cobertura&log=log20080220143045Lbuild.176

forse ho capito, viene generato solo nella nightly

fek
23-02-2008, 10:55
è normale che non venga generato il report cobertura?
http://fcarucci.homeip.net:8080/cruisecontrol/buildresults/diamonds?tab=Cobertura&log=log20080220143045Lbuild.176

forse ho capito, viene generato solo nella nightly

Solo la nightly build.

Copertura 82%, complessita 1.268.

Servono piu' test! Una linea di codice su 5 non e' testata.

fek
26-02-2008, 12:57
Nightly-build rotta.


http://fcarucci.homeip.net:8080/dashboard/build/detail/diamonds-nightly

Class it.diamonds.tests.TestAbstractLoop$1 has no public constructor TestCase(String name) or TestCase()

junit.framework.AssertionFailedError: Class it.diamonds.tests.TestAbstractLoop$1 has no public constructor TestCase(String name) or TestCase()


Thebol, hai lanciato ant dist?

thebol
26-02-2008, 13:45
Nightly-build rotta.


http://fcarucci.homeip.net:8080/dashboard/build/detail/diamonds-nightly

Class it.diamonds.tests.TestAbstractLoop$1 has no public constructor TestCase(String name) or TestCase()

junit.framework.AssertionFailedError: Class it.diamonds.tests.TestAbstractLoop$1 has no public constructor TestCase(String name) or TestCase()


Thebol, hai lanciato ant dist?
ovviamente no...
qualè il problema con ant dist, o meglio in cosa differisce rispetto a una build normale?
Il fix è quello dello ant postato nell'altro thread, ora provo a guardare se va messo anche in altri task di ant

thebol
26-02-2008, 13:51
ho individuato la modifica, la sto testsando con un dist in locale......funziona

committo subito la modifica al build.xml


ps. si può pensare di unire i 2 fileset per evitare che la build passi e la dist no :\
pps. si può configurare cc per spedire una mail se la build notturna fallisce?

fek
26-02-2008, 14:24
ho individuato la modifica, la sto testsando con un dist in locale......funziona

committo subito la modifica al build.xml


ps. si può pensare di unire i 2 fileset per evitare che la build passi e la dist no :\
pps. si può configurare cc per spedire una mail se la build notturna fallisce?

ps. Non credo, Tiger?
pps. Si'.

In generale, per tutti, lanciate ant dist prima di ogni commit.

thebol
26-02-2008, 14:55
<fileset id="test.fileset" dir="${testBin}/debug">
<include name="**/Test*.class"/>
<exclude name="**/*Test*$$*"/>
</fileset>



<!-- unit testing task -->
<target name="test" depends="compile-debug">
<junit haltonfailure="yes" printsummary="off" fork="yes" forkmode="once" dir="${root}">
<classpath refid="classpath.dev"/>
<formatter type="xml"/>
<formatter usefile="false" type="brief"/>
<jvmarg value="-Djava.library.path=${library.path}"/>
<batchtest fork="yes" todir="${reports}">
<fileset refid="test.fileset"/>
</batchtest>
</junit>
</target>



<target name="cover-test" depends="instrument">
<mkdir dir="${reports}/instrumented"/>
<junit haltonfailure="yes" printsummary="off" fork="yes" forkmode="once" dir="${root}">
<jvmarg value="-Djava.library.path=${library.path}"/>
<formatter type="xml"/>
<formatter usefile="false" type="brief"/>
<classpath location="${instrumented}"/>
<classpath refid="classpath.dev"/>

<batchtest fork="yes" todir="${reports}/instrumented">
<fileset refid="test.fileset"/>
</batchtest>
</junit>
</target>


provato e funziona

fek
26-02-2008, 15:16
Puoi fare il commit? La nightly-build e' ancora rossa.

Poi vai qui:
http://fcarucci.homeip.net:8080/dashboard/dashboard?s=1

Il primo tasto a destra della barra della nightly-build serve per forzare una build. Lanciala quando hai fatto il commit. Grazie!

thebol
26-02-2008, 15:42
fatto, ora è verde

fek
26-02-2008, 16:13
Ottimo, grazie :)

thebol
01-03-2008, 10:25
la dashboard sembra giu (outOfMemory)

Jocchan
01-03-2008, 10:35
la dashboard sembra giu (outOfMemory)

Già.
HTTP ERROR: 500

Handler processing failed; nested exception is java.lang.OutOfMemoryError: Java heap space

RequestURI=/dashboard/dashboard

fek
01-03-2008, 10:51
Urka. Devo aggiungere altri 2gb in settimana.
Edit: Fixed. Nulla che un reboot non possa fissare.

Complessita': 1.267
Copertura: 83%

^TiGeRShArK^
01-03-2008, 11:58
ps. Non credo, Tiger?

Ora gli do un occhiata e vedo se si riesce a fare qualcosa :p

^TiGeRShArK^
01-03-2008, 12:04
Ora gli do un occhiata e vedo se si riesce a fare qualcosa :p
ah ok..
l'aveva già fatto thebol ..apposta non capivo quali fileset bisognava unire :D
...Devo imparare a leggere tutto il thread mi sa... :stordita:

thebol
04-03-2008, 08:42
è voluto che it.diamonds.tests, it.diamonds.tests.droppable.gems, it.diamonds.tests.grid.iteration e it.diamonds.test.helper siano esaminati da cobertura??

fek
04-03-2008, 09:54
è voluto che it.diamonds.tests, it.diamonds.tests.droppable.gems, it.diamonds.tests.grid.iteration e it.diamonds.test.helper siano esaminati da cobertura??

No. Chi li ha aggiunti?

thebol
04-03-2008, 10:49
No. Chi li ha aggiunti?
penso sia il fileset

<fileset dir="${bin}/debug">
<include name="**/*.class"/>
<exclude name="**/Test*.class"/>
<exclude name="**/*Mock*.class"/>
</fileset>

che sia troppo largo...

sto provando

<fileset dir="${bin}/debug">
<include name="**/*.class"/>
<exclude name="**/tests/*.class"/>
</fileset>


che dovrebbe tagliare fuori tutte le classi sotto package test

thebol
04-03-2008, 11:00
<fileset dir="${bin}/debug">
<include name="it/diamonds/**/*.class"/>
<exclude name="it/diamonds/tests/**/*.class"/>
</fileset>


questa ha funzionato.

committo e rebuildo la nightly (sono 9 classi in meno)

thebol
13-03-2008, 10:41
la dashboard sembra non andare, e le mail nn mi arrivano da un po

fek
13-03-2008, 11:35
la dashboard sembra non andare, e le mail nn mi arrivano da un po

Controllo. Effettivamente e' su da quasi un mese alla faccia di 71104 :D

Edit: e' giu', sorry, devo fissarla stasera. Sono vicino al code complete qui, e non torno a casa mai prima delle vostre 22. Abbiate pazienza :)

thebol
13-03-2008, 11:41
Controllo. Effettivamente e' su da quasi un mese alla faccia di 71104 :D

Edit: e' giu', sorry, devo fissarla stasera. Sono vicino al code complete qui, e non torno a casa mai prima delle vostre 22. Abbiate pazienza :)

no prob, notificavo solo