[ninux-dev] Netdiff: badge & controlli automatizzati - IMPORTANTE
nemesis
nemesis at ninux.org
Tue Nov 11 17:11:33 CET 2014
Premessa:
ignorate quelle prime quattro mail che sono arrivate da coveralls.io,
erano dei test. Ma fate attenzione se arrivassero altre mail.
Potrebbe arrivare qualche altra email di test da travis-ci.org.
Notate i badge aggiunti sul README:
https://github.com/ninuxorg/netdiff/blob/master/README.rst
Ora vi spiego cosa sono in ordine da sinistra verso destra.
*Primo badge: Travis CI*
https://travis-ci.org/ninuxorg/netdiff
Come funziona (per chi non lo sa):
Ogni volta che viene fatto un commit travis fa partire una procedura
chiamata "build".
La build è definita qui:
https://github.com/ninuxorg/netdiff/blob/master/.travis.yml
La build può essere marcata come "passed" se tutto è andato bene o
"failed" se ci sono stati problemi.
Le build vengono fatte anche quando si inviano delle pull request sul
branch master, gli status delle build vengono mostrati sulla pull
request.
La configurazione dovrebbe essere abbastanza chiara:
* *language*: indica che il linguaggio è python
* *python*: indica le versioni di python testate: 2.7 e 3.4
* *branches*: indica che la build viene eseguita solo per i commit che
vengono fatti sul branch master
* *install*: indica quali sono i comandi per installare l'occorrente
per fare la build
* *script*: indica il comando per far partire i test, è lo stesso che
sta nel README
* *after_success*: indica i comandi da eseguire quando la build è
successful, nel nostro caso viene eseguito il comando "coveralls"
installato prima con "pip install coverage coveralls", il comando si
occupa di mandare il coverage report al servizio coveralls.io che spiego
più avanti
* *notifications*: indica dove mandare le notifiche, fino ad oggi non
ho mai usato questa sezione perchè di solito le notifiche me le becco
solo io che ho l'account github linkato a travis, ma ora sto cercando di
fare in modo che le notifiche arrivino anche qui, quindi ho messo
temporaneamente "always" per fare arrivare le notifiche ad ogni commit,
ma l'obiettivo è fare in modo che vengano mandate notifiche solo quando
la build cambia stato
*Secondo badge: Coveralls*
Quando vengono eseguite le build è possibile calcolare la percentuale
del codice testato dalla test suite. Avere una percentuale sopra il 90%
è una buona pratica che fa dormire sonni tranquilli. Non è una sicurezza
completa che non ci siano bug, ma è un indice significativo.
Coveralls è semplicemente una bella interfaccina che fa una versione
HTML del comando: nosetests --with-coverage --cover-package=netdiff
E offre qualche altra funzionalità in più come le notifiche quando la
percentuale di coverage cambia sensibilmente.
Il coverage viene ricalcolato solo sulle build che passano.
Il coverage viene calcolato anche sulle pull request, ad esempio qui
c'è un info interessante sulla PR di leonardo:
https://coveralls.io/files/349872331
Noterete delle righe con sfondo rosso, quelle sono le righe che non
vengono eseguite durante la build.
*Terzo badge: Landscape*
Questo è un tool abbastanza nuovo, permette di fare analisi automatica
del codice con strumenti tipo pylint e simili.
Anche questo non da una garanzia assoluta che il codice sia stato
scritto da mostri della programmazione, però individua problemi con 3
livelli di gravità:
* code errors
* code smells
* style warnings
Per esempio, nel primo commit c'era 1 solo problema individuato:
https://landscape.io/github/ninuxorg/netdiff/1/modules/netdiff/olsr1.py
Old-style class defined.
Se non è chiaro perchè una cosa è un problema basta googlare.
*Quarto badge: requires.io*
Requires.io fa monitoring dei requirements indicati in:
https://github.com/ninuxorg/netdiff/blob/master/requirements.txt
Ci sono tre possibili stati:
* uptodate
* outofdate
* insecure
Nel requirements.txt vanno indicati tutte le dipendenze per far
funzionare il pacchetto, nel nostro caso al momento solo networkx, ma
sicuramente aggiungeremo qualcos altro (tipo matplotlib se vogliamo che
la funzionalità aggiunta da leonardo funzioni).
Anche requires.io manda delle email ma al momento posso configurare una
sola mail per tutti i repository che monitorizzo, non credo si possano
specificare mail diverse per repo diversi.
*Quinto badge: pypi version*
Indica la versione dell'ultimo rilascio effettuato su pypi (Python
Package Index).
Questa è la versione che verrà installata quando si farà: "pip install
netdiff"
Al momento la versione registrata è 0.1alpha ed è solo un placeholder.
*Sesto badge: pypi downloads"
Indica i downloads della libreria effettuati attraverso pypi.
Al momento sono 0 ovviamente.
Nemesis
More information about the ninux-dev
mailing list