L'affermazione è - nella migliore delle ipotesi - ingenua.
SLOC non è esattamente una metrica affidabile per qualcosa di utile, tranne forse confrontando la dimensione di due o più progetti. Inoltre ci sono due tipi distinti di SLOC, LOC fisico e LOC logico, e quelli potrebbero differire in modo significativo. Considera questo esempio, da Wikipedia :
for (i = 0; i < 100; i += 1) printf("hello");
Qui abbiamo un LOC fisico, ma due logici ( for
e printf
istruzioni). Ma potremmo ovviamente scrivere l'esempio come:
for (i = 0; i < 100; i += 1)
printf("hello");
Il che ci darebbe due LOC fisici e due LOC logici. Penso che sia chiaro che qualsiasi misura di "bug per loc" che dipenderebbe da LOC fisici sarebbe contaminata dallo stile di programmazione, quindi la nostra misurazione sarebbe in gran parte inutile.
Se, d'altra parte, andassimo con LOC logici, allora la nostra misurazione dipenderebbe fortemente dalle idiosincrasie sintattiche della lingua. Sebbene la metrica risultante possa essere un po 'utile quando si confrontano progetti scritti nella stessa lingua, sarebbe abbastanza inutile per progetti scritti in lingue diverse.
Una possibile fonte per l'affermazione sono i fallimenti, le follie e gli errori del software di Les Hatton :
Possiamo concludere che la scelta del linguaggio di programmazione è nella migliore delle ipotesi debolmente correlata all'affidabilità.
Successivamente, l'articolo menziona densità di difetto simili per C e C ++:
In uno studio recente che ha confrontato due sistemi simili di dimensioni simili (circa 50.000 linee ciascuno), uno in C e uno in C ++ progettato per oggetti, le densità di difetto risultanti sono state mostrate intorno allo stesso rispettivamente a 2,4 e 2,9 per 1000 linee.
Ciò, tuttavia, non significa che "bug per LOC" sia costante nei linguaggi di programmazione o che sarebbe significativo se lo fosse.