Usando Cobertura de Código para Delphi integrado com Jenkins

Quando criamos uma suite de teste de uma Unit/Projeto em delphi, verificar se todos os métodos de todas as classes estão sendo cobertos por testes pode ser difícil. Por isso, para auxiliar nesta tarefa, podemos utilizar a ferramenta delphi-code-coverage.

O primeiro passo para seu uso é encontrar onde está o código fonte e onde está sua unit de testes(procure pelo projeto criado para os testes). Com estas informações em mãos faça o download do delphi-code-coverage coloque-o no diretório onde o .exe da sua aplicação de teste é gerado.

Crie dois arquivos de texto com o nome de dcov_paths.lst e dcov_units.lst. Podemos utilizar a ferramenta Delphi-code-coverage-wizard para gerar a estrutura inicial desses arquivos .

O primeiro arquivo ( dcov_paths.lst ) contém o caminho para o código-fonte. Por exemplo :

C:\desenvolvimento\componentes\teste\

C:\desenvolvimento\componentes\teste2\

C:\desenvolvimento\componentes\teste\teste3

O segundo arquivo( dcov_units.lst ) contém os nomes das units que você deseja verificar a cobertura. Por exemplo :

testeIC

unitTeste

unitController

Para que o relatório dos dados possa ser utilizado corretamente é necessário que o seu projeto esteja gerando o arquivo .map detalhadamente. Para configurar essa propriedade em seu projeto, entre nas opções e selecione a opção Linking. Depois, na opção Map File , escolha Detailed .

Depois disso criamos um arquivo .bat ( dcov_execute.bat ) que executará o comando usando o code coverage :

CodeCoverage.exe -e “NomeDoExe.exe” -m “NomeDoExe.map” -uf dcov_units.lst -spf dcov_paths.lst -od “emma” -lt -emma -meta -xml -html

O uso e significado de cada comando e alguns outros podem ser encontrados no site onde fizemos o download do CodeCoverage.

Rode o ponto .bat (depois de compilar a suite de teste que configurada no bat). Depois da execução dos testes, ele será gerado um arquivo CodeCoverage_summary.html no diretório configurado no arquivo .bat.

Neste arquivo são gerados links para os arquivos específicos de cada unit contendo suas linhas de cobertura.

As linhas amarelas são as que não são possíveis ser testadas, as verdes são as já cobertas pelos testes e as azuis são as que ainda não são cobertas por testes.

O que é o Jenkins?

O Jenkins é uma ferramenta de Integração contínua usada para verificar modificações feitas nas funcionalidades de um software em um curto tempo de sua implementação. Veja mais sobre Jenkins em https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins .

Como integrar com o Jenkins?

Vá até o menu do projeto que deseja inserir o report e selecione a opção configurar.

Selecione a opção “Add post-build action”, que adiciona opções depois que ele executar o projeto. Depois selecione a opção “Publish HTML reports”.

Clique no botão “Adicionar” e insira o diretório dos arquivos HTML e o nome do report gerado que no caso do CodeCoverage é CodeCoverage_summary.html. Depois clique em salvar no fim da mesma página.

Volte ao projeto e a opção de HTML Report estará visível, sendo ela um link para o relatório gerado pelo Code Coverage.

Referências:

http://thundaxsoftware.blogspot.com.br/2013/02/using-delphi-code-coverage.html

https://code.google.com/p/delphi-code-coverage/

https://code.google.com/p/delphi-code-coverage-wizard/

http://en.wikipedia.org/wiki/Continuous_integration

https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins