quinta-feira, 11 de setembro de 2008

Contando o número de linhas de um projeto Git

Hoje me deparei com uma situação interessante. No livro Code Complete, o autor diz:
"Industry average experience is about 1–25 errors per 1000 lines of code for delivered software. The software has usually been developed using a hodgepodge of techniques (Boehm 1981, Gremillion 1984, Yourdon 1989a, Jones 1998, Jones 2000, Weber 2003). Cases that have one-tenth as many errors as this are rare(...)

The Applications Division at Microsoft experiences about 10–20 defects per 1000 lines of code during in-house testing and 0.5 defects per 1000 lines of code in released product (Moore 1992)."

(Steve Mcconnell, Code Complete)

Então pensei: "vou calcular a quantidade provável de erros no meu programa usando um valor de 25 defeitos a cada 1000 linhas." Então caiu minha ficha: não sei quantas linhas meu programa tem.



A quantidade de linhas de um programa, na minha concepção, é a quantidade de linhas não-nulas nos arquivos. Portanto um comando capaz de contar o número de linhas do projeto é:
grep -r -v "^[ \t]*$" * |wc -l

Como meu projeto usa o controle de versão Git, um comando equivalente capaz de gerar o resultado mais rapidamente é:
git grep -v "^[ \t]*$" |wc -l

Este projeto em que estou trabalhando é feito em Rails. Quando mandei o Rails criar a estrutura inicial do meu projeto (quando executei "rails nome-do-projeto"), imediamente criei um commit inicial. Quero medir agora o número de linhas que adicinei ao projeto após o commit inicial, para obter um número de linhas que descarte o código do próprio framework (Rails). Para isso, primeiro vou contar o número de linhas do commit inicial (usando o SHA-1 do commit inicial):
git grep -v "^[ \t]*$" f7ed2ae5373a7e045f8b0c092a3f5f4c000911ec |wc -l
7235


Agora vou contar o número de linhas do commit final:
git grep -v "^[ \t]*$" |wc -l
17889


Para saber o número de linhas que adicionei ao projeto: 17889 - 7235 = 10.654 linhas. Usando um valor de 25 defeitos a cada 1.000 linhas, estimo que meu programa teria 266 defeitos.

Nenhum comentário:

Postar um comentário

Por favor identifique-se: primeiro nome, instituição, ou o que lhe convier.