Ativando a cobertura de código a partir de um script Ant
Para verificar se o código que você está construindo corresponde aos seus critérios de aceitação de cobertura de código especificados, é possível ativar a cobertura de código a partir de um script Ant. Para fazer isso, é necessário:
Também é possível visualizar os resultados da cobertura de código no ambiente de trabalho.
Configure um script Ant para ativar a cobertura de código
Para configurar um script Ant para ativar a cobertura de código, adicione
o seguinte à sua variável de ambiente CLASSPATH:
<install_dir>/plugins/com.ibm.rational.llc.engine_1.0.0.<version_number>
e defina uma nova tarefa no arquivo de compilação. Por exemplo:
<taskdef name="instrument"
classname="com.ibm.rational.llc.engine.instrumentation.anttask.InstrumentationTask"
classpath="${install_dir}/plugins/com.ibm.rational.llc.engine_1.0.0.<version_number>"/>
O formato da tarefa de instrumentação é:
<instrument buildPath="" baseLineFile="" saveBackups="" outputDir=""/>
em que:
- buildPath:
- Especifica os arquivos para os quais os dados da cobertura de código serão coletados. O caminho de construção pode referenciar um nome de arquivo de classe, um nome de arquivo jar ou um nome de diretório. Ele pode ser definido como qualquer outra referência de caminho usada em Ant.
- baseLineFile:
- Especifica o caminho no qual o arquivo de linha de base está armazenado. O arquivo de linha de base é o arquivo em relação ao qual o código instrumentado é comparado e as estatísticas de cobertura de código são geradas. Ele também serve como entrada para a tarefa ant de geração de relatório.
- saveBackups:
- Especifica se a classe original e os arquivos jar devem ser
renomeados para *.bak. Configurar saveBackups para true gerará os arquivos de backup; configurar saveBackups para false resultará na sobreposição (e, portanto, perda) dos arquivos originais.
Nota: saveBackups é opcional e seu valor padrão é false.
- outputDir:
- Especifica o local no qual os arquivos instrumentados serão armazenados. Por padrão, os arquivos instrumentados são armazenados no mesmo local dos arquivos que estão sendo instrumentados.
Exemplo 1
No exemplo a seguir, os dados de cobertura de código são coletados para todos os arquivos em bin/, o arquivo de linha de base é armazenado em blfile.coveragedata, nenhum backup é gerado para esses arquivos e os arquivos instrumentados são armazenados em coverageData_files.
<instrument saveBackups="false" baseLineFile="blfile.coveragedata" buildPath="bin/" outputDir="coverageData_files"/>
Exemplo 2
No exemplo a seguir, os dados de cobertura de código são coletados para todos os arquivos em bin referenciados como build.Dir, o arquivo de linha de base é armazenado em blfile.coveragedata e um backup de cada um desses arquivos é gerado.
<path id="build.Dir">
<pathelement location="bin"/>
</path>
<instrument saveBackups="true" baseLineFile="blfile.coveragedata" buildPathRef="build.Dir" />
Exemplo 3
No exemplo a seguir, os dados de cobertura de código são coletados para todos os arquivos em bin, o arquivo de linha de base é armazenado em blfile.coveragedata e um backup de cada um desses arquivos é gerado.
<instrument saveBackups="true" baseLineFile="blfile.coveragedata">
<buildPath>
<pathelement location="bin"/>
</buildPath>
</instrument>
Exemplo 4
No exemplo a seguir, os dados de cobertura de código são ativados para todos os subdiretórios em bin/ que contêm com no nome do diretório e arquivos de exclusão nesses subdiretórios cujo nome contém Test. Um backup é gerado para cada arquivo que passa pela análise de cobertura de código e o arquivo de linha de base é armazenado em blfile.coveragedata.
<instrument saveBackups="true" baseLineFile="blfile.coveragedata">
<buildPath>
<fileset dir="bin">
<exclude name="**/*Test*"/> <include name="**/*com*/*">
</fileset>
</buildPath>
</instrument>
Exemplo 5
No exemplo a seguir, os dados de cobertura de código são ativados para todos os arquivos em bin/, com exceção daqueles arquivos nos subdiretórios de bin cujos nomes contêm Test e bin2. Um backup é gerado para cada arquivo que passa pela análise de cobertura de código e o arquivo de linha de base é armazenado em blfile.coveragedata.
<instrument saveBackups="true" baseLineFile="blfile.coveragedata">
<buildPath>
<fileset dir="bin">
<exclude name="**/*Test*"/>
</fileset>
</buildPath>
<buildPath>
<pathelement location="bin2"/>
</buildPath>
</instrument>
Execute o script Ant
Após ter configurado o script Ant para ativar a cobertura de código, é possível executar o script Ant a partir da linha de comandos ou a partir do ambiente de trabalho.
Executando a partir da linha de comandos
Para executar o script Ant a partir da linha de comandos:
- Defina a variável de ambiente JAVA_HOME para o diretório no qual o JDK está instalado.
- Assegure-se de que a variável de ambiente CLASSPATH contenha o caminho e o nome de arquivo completos do arquivo probekit.jar. O arquivo probekit.jar está localizado na subpasta org.eclipse.hyades.probekit com o número de versão mais alto e o registro de data e hora mais recente da pasta de plug-ins da instalação do seu produto.
- Assegure-se de que a variável de ambiente CLASSPATH contenha JAVA_HOME (o caminho para a sua instalação Java como JAVA_HOME/bin/java é válido).
- Assegure-se de que sua variável de ambiente PATH contenha o caminho completo para a subpasta de org.eclipse.hyades.probekit apropriada para sua plataforma. Por exemplo:
- No Windows:
<install_dir>\plugins\org.eclipse.hyades.probekit_<version>\os\win32\x86
- No Linux:
<install_dir>/plugins/org.eclipse.hyades.probekit_<version>/os/linux/x86
- Defina o LLC_PLUGIN como o caminho para a pasta de plug-ins:
set LLC_PLUGIN=<install_dir>\plugins
Exemplo
ant -lib=<install_dir>\plugins\org.eclipse.hyades.probekit_<version>\probekit.jar myTarget
Executando a partir do ambiente de trabalho
Para executar o script Ant a partir do ambiente de trabalho:
- Selecione seu arquivo de compilação
- Dê um clique com o botão direito do mouse e selecione Executar Como > Compilação Ant...
- Selecione a guia Caminho da Classe
- Selecione Entradas do Usuário
- Clique em Incluir JARs Externos...
- Inclua <install_dir>\plugins\org.eclipse.hyades.probekit_<version>\probekit.jar ao CLASSPATH a partir da subpasta do plug-in org.eclipse.hyades.probekit com o número de versão mais alto e registro de data e hora mais recente
- Selecione a guia Destinos
- Verifique o(s) destino(s) desejado(s)
- Selecione a guia Ambiente
- Clique no botão Novo...
- A partir do diálogo Nova Variável de Ambiente, no campo Nome, digite LLC_Plugin e, no campo Valor, digite o caminhopara LLC_PLUGIN (por exemplo, <install_dir>\plugins)
- Clique em OK
- Clique no botão Novo...
- A partir do diálogo Nova Variável de Ambiente, no campo Nome, digite PATH e, no campo Valor, digite: <install_dir>\plugins\org.eclipse.hyades.probekit_<version>\os\win32\x86
- Clique em OK
- Clique em Executar
Gerando as estatísticas de cobertura de código
Certifique-se de que o seu caminho de classe contenha o seguinte:
<install_dir>\plugins\com.ibm.rational.llc.engine_1.0.0.<version_number>
Para gerar estatísticas de cobertura de código a partir da linha de comandos, a partir do diretório acima do código, execute:
java -Dcoverage.out.file=C:\coverage_report\coverage_data.coveragedata com.ibm.rational.llc.example
Nota: Você pode precisar definir seu Java para corresponder àquele da instalação do produto.
Gerando relatórios de cobertura de código
Para gerar um relatório usando Ant:
Faça o download do Mecanismo de Relatório de Tempo de Execução BIRT e descompacte seu conteúdo.
Defina as seguintes variáveis de ambiente:
- CLASSPATH - apontar para org.eclipse.equinox.common_<version_number>.jar
- LLC_COMMON_PLUGIN - apontar para com.ibm.rational.llc.common_1.0.0.<version_number>
- LLC_REPORT_PLUGIN - apontar para com.ibm.rational.llc.report.birt_1.0.0.<version_number>
- BIRT_HOME - apontar para o diretório ReportEngine a partir do tempo de execução BIRT
Por exemplo,
<path id="lib.path">
<pathelement location="${env.LLC_COMMON_PLUGIN}"/>
<pathelement location="${env.LLC_REPORT_PLUGIN}"/>
<fileset dir="${env.BIRT_HOME}/lib" includes="*.jar"/>
</path>
Defina uma nova tarefa no arquivo de compilação para a geração do relatório de cobertura de código, por exemplo:
<taskdef name="code-coverage-report"
classname="com.ibm.rational.llc.report.birt.adapters.ant.ReportGenerationTask"
classpathref="lib.path"/>
O formato da tarefa de relatório de cobertura de código é:
<code-coverage-report outputDir="" coverageDataFile="" baseLineFiles=""> <filters> <filter type="" value=""/> </filters> <configurations> <configuration name="" value=""/> </configurations> </code-coverage-report>
em que:
- outputDir:
- Especifica o local no qual os resultados do relatório serão armazenados.
- coverageDataFile:
- Especifica um ou mais arquivos de dados de cobertura nos quais gerar o relatório. Ele pode ser definido como qualquer outra referência de caminho usada em Ant.
- baseLineFiles:
- Especifica um ou mais arquivos de linha de base que foram gerados como parte da tarefa de instrumentação. Ele pode ser definido como qualquer outra referência de caminho usada em Ant.
- filtros:
- Opcional: Usado para filtrar resultados do relatório.
- filtro:
- tipo: O tipo de filtro a ser aplicado ao relatório.
- valor: O valor do filtro a ser aplicado ao relatório.
- Filtros disponíveis:
- Limite de Cobertura de Linha: define um limite para o relatório de cobertura de linha para exibir dados abaixo do valor de porcentagem especificado. type=line_coverage_threshold, value=threshold value
- Configurações:
- Opcional: Usado para especificar várias configurações de cálculo.
- Configuração:
- nome: O nome da configuração.
- valor: O valor da configuração.
- Configurações disponíveis:
- Inclusão do construtor padrão: Configure se os construtores padrão são excluídos ou incluídos nos cálculos de cobertura de código. Por padrão, os construtores padrão são incluídos. Se uma classe não define nenhum construtor, o compilador gera um construtor sem argumento padrão. Porém, este construtor não aparece no arquivo de origem real. Durante a execução do programa, se esta classe não é instanciada, então este construtor padrão oculto não é executado e, assim, a cobertura não se iguala a 100% como esperado. Este comportamento pode ser alterado por esta configuração: name=excludeDefaultConstructor, value=true ou false
Exemplo 1
No exemplo a seguir, a geração de relatório é coletada em coverage-data/coverage.coveragedata usando coverage-data/blfile.coveragedata como o arquivo de linha de base, o relatório é armazenado em coverage-reports e o filtro line_coverage_threshold é aplicado com um limite de 80%. Os construtores padrão são excluídos dos cálculos de cobertura de código.
<code-coverage-report outputDir="coverage-reports/"
coverageDataFile="coverage-data/coverage.coveragedata"
baseLineFiles="coverage-data/blfile.coveragedata">
<filters>
<filter type="line_coverage_threshold" value="80"/>
</filters>
<configurations>
<configuration name="excludeDefaultConstructor" value="true"/>
</configurations>
</code-coverage-report>
Exemplo 2
No exemplo a seguir, a geração de relatório é coletada em dois arquivos de cobertura coverage1.coveragedata e coverage2.coveragedata usando blfile1.coveragedata e blfile2.coveragedata como os arquivos de linha de base, o relatório é armazenado em coverage-reports. Por padrão, os construtores padrão são incluídos nos cálculos de cobertura de código.
<code-coverage-report outputDir="coverage-reports/"
coverageDataFile="coverage-data/coverage1.coveragedata;coverage-data/coverage2.coveragedata"
baseLineFiles="coverage-data/blfile1.coveragedata;coverage-data/blfile2.coveragedata">
</code-coverage-report>
Visualizando os resultados da cobertura de código no ambiente de trabalho
Para visualizar os resultados da cobertura de código do script Ant no ambiente de trabalho:
- Importe o arquivo de resultados dos dados da cobertura:
- Selecione Arquivo > Importar...
- Selecione Cobertura de Código > Arquivo de Dados de Cobertura de Código
- Clique no botão Avançar
- Selecione o tipo de importação do Sistema de Arquivos
- Clique no botão Avançar
- Digite o local do arquivo de dados da cobertura a ser importado (coverage_data.coveragedata no exemplo acima), o nome da pasta na qual ele será importado, e o(s) projeto(s) associado(s) com o arquivo de dados da cobertura
- Clique no botão Concluir. Você então será avisado para reconstruir o projeto se ele ainda não estiver ativado para cobertura de código.
- Gere o relatório de cobertura de código:
- Selecione Executar > Cobertura de Código > Gerar Relatório...
- Selecione uma ou mais ativações Java sob a coluna Nome
- Escolha um relatório baseado em Eclipse ou em HTML
- Clique em Executar
Nota: Você tem a opção de, em vez de selecionar um ou mais arquivos de dados de cobertura, dar um clique com o botão direito do mouse e então selecionar Cobertura de Código > Gerar Relatório.... Especifique o projeto associado e o local da pasta para o relatório e clique em Concluir.
Desativando a cobertura de código
Para desativar as classes instrumentadas usando a tarefa ant, recompile o projeto ou substitua os arquivos .class pelos arquivos .class.bak, se saveBackups foi ativado.
Conceitos relacionados
Indicadores de cobertura de código
Tarefas Relacionadas
Ativando a cobertura de código
Configurando os níveis e filtros de cobertura de código
Configurando os indicadores de cobertura de código
Analisando os relatórios de cobertura de código
(C) Copyright IBM Corporation 2007, 2008. Todos os direitos reservados.