[ Este artigo foi expandido e melhorado pela equipe do InfoQ Brasil ]
Um estudo realizado pela Coverity conclui que código Open Source tem em média uma quantidade de defeitos menor do que código comercial, mas que após o uso regular de ferramentas de teste, em especial análise estática de código, ambos atingem melhorias equivalentes, para código de tamanhos similares. O relatório também conclui que receios quanto à qualidade do código não podem ser usados para justificar o não uso de software Open Source.
A Coverity Scan é uma empresa privada focada na pesquisa sobre integridade de código e foi originada em um projeto contratado pelo Departamento de Segurança Doméstica dos EUA, junto à Universidade de Standford em 2006. A Coverity divulga desde 2009 o Relatório de Análise de Código Open Source, sendo a terceira edição, de 2011, a primeira a incluir uma comparação com projetos comerciais.
O relatório é baseado no uso da ferramenta de Análise Estática Coverity, que vem sendo usada para avaliar e melhorar a qualidade de código de mais de 300 projetos Open Source durante os últimos 5 anos. A ferramenta ajudou a encontrar (e depois corrigir), por exemplo, mais de 6.000 bugs em projetos de código aberto só em 2006. Já os dados de projetos de software comercial (proprietário) vêm de clientes que são usuários dos produtos e serviços da própria empresa Coverity.
O Relatório de Análise de 2011 (PDF), publicado recentemente, conclui que na média os projetos Open Source contém menos defeitos do que projetos comerciais. Foi analizado o código-fonte dos 45 projetos Open Source mais ativos durante 2011, totalizando mais de 37 milhões de linhas de código, em que só foram considerados defeitos de impacto médio e alto. O estudo não inclui dados sobre defeitos encontratados durante testes de controle de qualidade, nem pelos usuários depois da implantação.
A maioria dos projetos analisados tinha entre 100 a 500 mil linhas de código (LOC), ignorando comentários e linhas em branco, e dois projetos tinham mais de 7 milhões de linhas. A taxa de defeitos encontrada nos projetos Open Source foi de 0.45 defeitos a cada mil linhas de código, enquanto que a média geral da indústria estaria em torno de 1 defeito por mil linhas de código, para empresas que não usam ferramentas automatizadas de teste como análise estática.
A análise acompanhou 14 tipos de defeitos, sendo que os 5 defeitos mais encontrados em código Open Source foram:
Defeito |
Quantidade |
Impacto |
Controle de Fluxo Suspeito |
3.128 |
Médio |
Referências a ponteiros nulos |
2.818 |
Médio |
Variáveis não-inicializadas |
2.051 |
Alto |
Memória corrompida |
1.551 |
Alto |
Tratamento de erros deficiente |
1.535 |
Médio |
O estudo também analisou mais de 300 milhões de linhas de código de 41 produtos comerciais, abrangendo diversas áreas de aplicações e tamanhos de código, com uma média de 7.4 milhões de linhas de código por projeto, concluindo que, se compararmos projetos de tamanhos similares, as melhorias de qualidade obtidas a partir da análise estática de código são similares em projetos código aberto e projetos proprietários.
Por exemplo, o Linux 2.6 tem quase 7 milhões de linhas de código e uma densidade de defeitos de 0.62, enquanto que a média para o código proprietário que vem usado o Coverity Scan nos últimos anos é de 0.64. Versões anteriores do Linux tinham uma densidade ainda mais baixa, entretanto sua base de código cresceu de 5,3 milões para 6,8 milhões linhas de código somente em 2011. Sobre o Linux, o CTO da Coverity, Andy Shou, comenta:
A base de código do Linux, com aproximadamente 7 milhões de linhas de código, tem uma densidade de defeitos melhor que a da média, se comparado com base de códigos e comunidades de desenvolvedores de mesmo tamanho.
O estudo destaca ainda o PHP 5.3 e o PostgreSQL 9.1 como projetos-modelo de alta qualidade, apresentando densidades de bugs de 0,2 e 0,21 respectivamente. Infelizmente, cláusulas de sigilo com os clientes da Coverity impedem que o relatório inclua informações específicas sobre os projetos comerciais analisados, por isso não se sabe quais deles se destacam. Também não é conhecido se entre os projetos comerciais analisados há algum software de alta popularidade no mercado, ou concorrente dos projetos Open Source citados.
A conclusão do estudo é que a adoção de testes automatizados, incluindo análise estática de código, são eficientes na diminuição da quantidade de defeitos de código, e que receios quanto à qualidade de código não justifica evitar o uso de componentes open source dentro de projetos comerciais.
Projetos Open Source qualificados tem acesso gratuito aos serviços da Coverity, em troca do uso das suas informações pela empresa e sua colaboração no aperfeiçoamento das ferramentas. Porém estes projetos estão sujeitos aos termos de confidencialidade sobre o funcionamento de recursos mais avançados da ferramenta Coverity Scan.