In questo post affronto un argomento abbastanza delicato: come si misura la quantità di codice di un progetto?
La soluzione più immediata è quella di contare le linee di codice (Source Lines of Code, SLOC). Un esempio che ho personalmente applicato per contare le righe di codice di un progetto Java a partire dalla root del progetto, usando gli strumenti che Linux ci mette a disposizione:
find . -type f -name *.java | xargs wc -l
Un tool che svolge lo stesso compito, più raffinato e con un supporto ad un numero maggiore di linguaggi, è sloccount [sicuramente consigliato].
Ma quanto è indicativo il numero delle righe di codice per indicare un progetto? A mio avviso dipende da molti fattori, come:
- lo stile con cui si programma (un’istruzione condizionale, tipo
if
può occupare 3 righe come ne può occupare una, a discrezione del programmatore). - l’utilizzo di librerie esterne e framework (il codice è effettivamente utilizzato ma le righe di codice non vengono conteggiate)
- il conteggio deve includere i test?
In definitiva, il conteggio delle righe di codice (e/o di altre metriche relative al codice) è una grandezza che non riesce ad esprimere in modo chiaro ed esauriente la grandezza di un progetto software.
Esistono altre metriche che ci possono aiutare nella stima della dimensione di un progetto? Voi cosa ne pensate?
All things cnosierded, this is a first class post
Ho avuto a che fare con Sonar https://www.sonarsource.org/ che include diversi criteri per la misura della dimensione di un progetto (anche se la parte più utile è la misura della qualità del codice, che personalmente chiamo allarme anti-cialtroneria).
Molto interessante, grazie per la segnalazione!