Usando Cobertura de Código Java integrado com Jenkins

A ideia de integração continua já discutida em um post anterior ( https://ciranda.me/tsdn/blog-do-desenvolvimento-tecnospeed/post/usando-cobertura-de-codigo-para-delphi-integrado-com-jenkins ), será dada continuidade, nesse post, mostrando agora uma ferramenta para auxilio de cobertura de código para projetos feitos em Java.

As ferramentas que usaremos para fazer a cobertura de código serão plugins do próprio jenkins, diferente da ferramenta usada para Delphi ( deplhi-code-coverage. ) citada no post anterior, que por sua vez só geravam relatórios que seriam usados pelo jenkins.

Usaremos dois plugins que se complementam, são eles o Sonar( http://www.sonarqube.org/ ) e o JaCoCo (https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin) .

Perceba que para o uso desses plugins, é necessário uma plataforma jenkins já instalada e configurada um job para seu projeto que deseja monitorar( http://jenkins-ci.org/ ).

O primeiro passo é fazer o download do sonarqube no link já citado. Descompacte e selecione a pasta correspondente ao seus sistema operacional dentro da pasta bin. Execute o prompt de comando(cmd) nessa pasta e execute o “StartSonar.bat”, ele funciona como um servidor com um banco de dados em memoria, usado para a analise do código.

O segundo passo para o usos desses pluguins é sua instalação.Vá até a opção “Gerenciar Jenkins” no menu principal e escolha a opção gerenciar pluguins. Selecione a aba “Disponíveis” e procure pelo plugin Sonar e JaCoCo.

Depois de sua instalação, dentro do menu “Gerenciar Jenkins” selecione a opção configurar sistema, procure pela seção do plugin Sonar e adicione-o(necessário selecionar um nome). Clique em avançado e coloque o ip da máquina em que o server que o servidor sonar estiver rodando, caso esteja rodando na mesma máquina, basta deixar vazio que a configuração default é a localhost(máquina local).

Agora vá até o job que deseja configurar e selecione “Configurar” e vá até a opção “Add post-build action”. Selecione a opção “Record JaCoCo coverage report”. Ainda na mesma opção adicione também o“Sonar”.

As duas opções devem funcionar automaticamente, sem serem reconfiguradas. Caso se tenha problemas selecione a “?” nas opções que possuem dicas de como ser feita sua configuração.
PS: Perceba que as configurações de como irá surgir o sol(status do job) precisa ser informado em porcentagem de cobertura.

O ultimo passo agora é verificar se o arquivo .pom do seu projeto java está com JaCoCo inserido em sua seção de plugins.

01. < build >

02. < plugins >

03. < plugin >

04. < groupId >org.jacoco</ groupId >

05. < artifactId >jacoco-maven-plugin</ artifactId >

06. < version >${jacoco.version}</ version >

07. < executions >

08. < execution >

09. < goals >

10. < goal >prepare-agent</ goal >

11. </ goals >

12. </ execution >

13. < execution >

14. < id >report</ id >

15. < phase >prepare-package</ phase >

16. < goals >

17. < goal >report</ goal >

18. </ goals >

19. </ execution >

20. </ executions >

21. </ plugin >

22. </ plugins >

23. </ build >

Depois disso basta construir o projeto e ele apresentará os dados da cobertura de código.

Agora será possível ver no próprio job as linhas que estão sendo cobertas pelas linhas de código e as que não estão, divididos em porcentagem.

Clicando no link Sonar que agora se encontra no job, podemos ver os dados gerados pelo sonar. Podemos verificar desde dividas técnicas (segundo regras configuradas) até problemas de escrita no codigo.

É possível ainda incluir muito mais plugins em seu job do Jenkins, que ajudam a tornar o deploy de seus produtos com ainda mais qualidade!

Maiores informações sobre os plugins podem ser encontradas nas referências desse post.

Referencias
http://www.sonarqube.org/measure-coverage-by-integration-tests-with-sonar-updated/

http://www.eclemma.org/jacoco/trunk/doc/maven.html

http://www.methodsandtools.com/tools/tools.php?sonar

http://www.lordofthejars.com/2012/08/jacoco-jenkins-plugin.html

http://java.dzone.com/articles/jacoco-jenkins-plugin