segunda-feira, 9 de dezembro de 2013

jQana - Java Quality Analyzer

Vem aí nossa primeira ferramenta Open Source de análise de código: jQana, criada para ser livre, sempre.





Por que mais uma ferramenta de análise de código Java?

Porque precisamos de ferramentas simples, práticas, integradas ao Maven e que realmente sejam Open Source.

Há uma nova tendência surgindo no mercado de software Open Source, que eu chamo de NSOSS - Not So Open Source Software, ou seja, são projetos classificados como Open Source, mas tachados de "Business friendly", o que não os qualifica como FOSS - Free and Open Source Software.

Recentemente, notei que uma das ferramentas que eu uso e, inclusive, recomendei no meus últimos livros, está se revelando como NSOSS. Os sintomas são:
  • Lançamento de uma versão ou característica paga (Fremium);
  • Mudanças de API destrutivas;
  • Mudar subitamente (e incorretamente) a sua funcionalidade;
  • Passar substituir componentes FOSS por componentes internos;
 Para analisar código Java, precisamos basicamente de ferramentas que:
  1. Mostrem como está a arquitetura do software (JDepend);
  2. Permitam examinar detalhes de implementação (PMD, CheckStyle e Findbugs);
  3. Ver como está a cobertura de testes (Cobertura);
Porém, faltava alguma coisa no meio... Algo que permitisse ver como está o projeto do software, em termos de Acoplamento e Coesão. Métricas como: LCOM4, RFC e Complexidade Ciclomática não são calculadas ou reportadas de forma sumária, como feita na ferramenta NSOSS que eu usava. Então, para ter um conjunto mínimo de ferramentas, eu procurei muito e não encontrei algo que:
  • Fosse preciso;
  • Se integrasse às outras via Maven Site;
  • Funcionasse;
Por esta razão, eu resolvi criar um projeto FOSS para criar uma ferramenta que complementasse os resultados fornecidos pelas ferramentas mais consagradas (JDepend, Cobertura, PMD, CheckStyle e Findbugs), de modo a substituir a ferramenta NSOSS que eu usava.

Mas, já está pronta essa bagaça?

Cara, na boa: software Open Source NUNCA está pronto! É um trabalho em andamento, um produto gerado em comunidade, e não um pacote pronto, que você paga licença e usa. Se você não está acostumado com projetos FOSS, deveria ler este artigo.

Eu conclui os testes iniciais e estou preparando a ferramenta para publica. Vou colocar em um repositório de código fonte público (GitHub, Google Code ou Sourceforge), vou mover o Maven site para um site público (http://jqana.com) e vou começar a procurar colaboradores.

Também vou começar o processo para incluir o artefato no repositório público do Maven. 

Eu diria que ela ainda está na versão alfa, mas já funciona e dá resultados. É claro que eu ainda não estou satisfeito com o código fonte, que precisa melhorar, mas, o processo é assim mesmo: escrevemos testes, codificamos, testamos e depois refatoramos.

Procurei usar componentes prontos o máximo possível... Criei um parser e um lexer com o ANTLR4, e desenvolvi um plugin de relatório Maven, para não ter que inventar nada.

Fui buscar como as métricas devem ser calculadas em suas origens.

Aguarde um pouco que já vou divulgar a URL.