Posts Tagged ‘Checkstyle’

Apache Maven: customizar o relatório Checkstyle

Posted in Tutorial on June 1st, 2009 by Fábio Queiroz – Be the first to comment

Neste artigo mostrarei como customizar o relatório Checkstyle.

Porém, antes de proceguir, recomendo que veja os artigos anteriores.

Pois bem.

O relatório Checkstyle, por padrão, processa e apresenta TODAS as entradas como erro.  Entretanto, alguns dos itens não necessariamente são erros: os itens relacionados a formatação, por exemplo. É claro que isso pode variar para cada empresa, cada profissional.

Diante desse meu argumento, apresentarei uma forma de customizar o relatório gerado pelo Checkstyle.

Em nosso projeto POM, adicionaremos uma entrada na configuração do plugin “maven-checkstyle-plugin”. Editem o arquivo pom.xml do projeto POM e façam com que a configuração fique como abaixo.

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>${basedir}/src/site/checkstyle/checkstyle-custom.xml</configLocation>
</configuration>
</plugin>

Nesse exemplo, adicionamos a entraca “configuration” direcionando para um arquivo específico chamado “checkstyle-costom.xml”.

Salve o arquivo, incremente a versão (deve ser a 1.5, imagino) do POM e faça o deploy.

mvn install

Após esse procedimento, copie o arquivo “checkstyle-custom.xml” no projeto BASE (esse arquivo contém algumas alterações que movem o restuldado “error” para “info”, por exemplo).
Checkstyle Customizado: diretório
Edite o arquivo pom.xml do projeto BASE e atualize a referência para o projeto POM. Gere o site.

mvn site

Veja o resultado gerado para o relatório do Checkstle.

Comparem com a primeira versão de relatório gerado pelo Checksyle e notem as diferenças. Nesta nova versão, muitos erros foram desconsiderados e entradas do tipo “info” foram apresentadas.

Arquivos POM

Até este momento, temos as seguintes versões dos arquivos POM:

Relatórios no Apache Maven : Informações do Projeto e Checkstyle

Posted in Tutorial on May 24th, 2009 by Fábio Queiroz – Be the first to comment

Neste artigo, vamos configurar alguns relatórios para ter uma visão mais concreta dos códigos JAVA produzidos.

Premissas

É interessante que antes de seguir com a leitura desse artigo, você tenha visto os 2 artigos anteriores:

Confira se seus arquivos POM estão como os abaixo:

Projeto POM

 <project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion> <properties> <prop.resourcesDir>C:/apache-maven-2.1.0/www/resources</prop.resourcesDir> <prop.url>http://www.suaempersa.com.br</prop.url> <prop.organization>Sua Empresa</prop.organization> <prop.roleJavaDeveloper>Java Developer</prop.roleJavaDeveloper>  </properties>  <groupId>suaempresa</groupId>  <artifactId>pom</artifactId>  <version>1.1</version> <packaging>pom</packaging>   <reporting>  <outputDirectory>${prop.siteDir}/site/</outputDirectory>  </reporting>  </project> 

Projeto Base

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion> <properties> <prop.siteDir>C:/apache-maven-2.1.0/www/Base</prop.siteDir> <prop.srcMainJava>src/main/java</prop.srcMainJava>  </properties> <parent>  <groupId>suaempresa</groupId>  <artifactId>pom</artifactId>  <version>1.1</version>  </parent>   <groupId>suaempresa</groupId>  <artifactId>base</artifactId> <packaging>jar</packaging>  <version>1.0-SNAPSHOT</version>  <name>base</name>  <url>http://maven.apache.org</url>  <dependencies>  <dependency>  <groupId>junit</groupId>  <artifactId>junit</artifactId>  <version>3.8.1</version>  <scope>test</scope>  </dependency>  </dependencies>   <build>  <directory>${prop.siteDir}</directory>  <sourceDirectory>${prop.srcMainJava}</sourceDirectory>  <outputDirectory>${prop.siteDir}/target/classes</outputDirectory>  </build>  </project> 

Se as duas configurações estiverem similares, pode prosseguir sem medo.

Relatórios

Os relatórios no Maven são configurados como plugins. Existem vários plugins que gerão relatórios agregados ao site gerado.

Veja uma lista de plugins disponíveis para o Maven.

Configurando relatório “project-info-reports”

Este é um relatório padrão gerado pelo Maven (veja o que foi gerado no site anteriormente) que apresenta informações como:

  • Sumário
  • Dependências
  • Licença
  • Equipe do Projeto, etc

Porém, você pode customizar os itens que quer gerar. Para isso, adicione no Projeto POM (exatamente, adicione sempre no pom.xml do Projeto POM sempre que quiser que um relatório seja usado por todos os seus projetos) o trecho de código abaixo da tag “reporting” (como é o primeiro plugin, adicionaremos a tag “plugins”).

 <plugins> <plugin>  <artifactId>maven-project-info-reports-plugin</artifactId>  <reportSets>  <reportSet>  <reports>  <report>cim</report>  <report>dependencies</report>  <report>dependency-convergence</report>  <report>dependency-management</report>  <report>index</report>  <report>license</report>  <report>mailing-list</report>  <report>plugin-management</report>  <report>project-team</report>  <report>scm</report>  <report>summary</report>  </reports>  </reportSet>  </reportSets>  </plugin> </plugins> 

Altere a versão para 1.2.

Vá ao diretório do Projeto POM e digite “mvn install”.

Instalar POM versão 1.2, com relatório maven-project-info-reports-plugin

Instalar POM versão 1.2, com relatório maven-project-info-reports-plugin

Com o Projeto POM na versão 1.2, agora podemos gerar um novo site e verificar o relatório gerado.

Vá ao diretório do Projeto Base, atualize o arquivo pom.xml com a versão referente ao Projeto POM e digite “mvn site”. Um novo site será gerado. Porém, como adicionamos todos os relatórios disponíveis, você não verá diferença com o site gerado no artigo anterior.

Faremos a seguinte alteração: vamos remover alguns relatórios no Projeto POM e criar um novo site. Mantenha somente os relatórios abaixo.

 <reports>  <report>dependencies</report>  <report>index</report>  <report>plugin-management</report>  <report>project-team</report>  <report>summary</report> </reports> 

Pronto. Incremente para a versão 1.3 e gere um novo site, que deverá estar como a imagem abaixo.

Novo site com alguns relatórios base

Novo site com alguns relatórios base

Note que até agora fizemso alterações somente no Projeto POM, que é referenciado pelo Projeto Base. Essa é a idéia.

Configurando relatório “maven-checkstyle-plugin”

O Checkstyle provavelmente é um dos plugins do Maven mais utilizados. Ele propõe a “fofocar” sobre o estilo de código usado pelos desenvolvedores.

Para configurar este relatório, adicione o trecho abaixo no Projeto POM.

 <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-checkstyle-plugin</artifactId> </plugin> 

Incremente para a versão 1.4 (Projeto POM e referência no Projeto Base) e gere um novo site, que deverá estar como a imagem abaixo.

Site agora com relatório Checkstyle

Site agora com relatório Checkstyle

Veja que foi adicionado a entrada “Project Reports” (abaixo de ‘Project Information”) com a entrada para o Checkstyle.

Os resultados do Checkstyle contemplam informações sobre:

  • Sumário: resumo sobre a quantidade de arquivos e ocorrências identificadas como informativos, avisos e erros.
  • Arquivos: resumo por arquivo.
  • Regras: a definição das regras do Checkstyle (pode ser customizado)
  • Detalhes: apresenta os itens relatados por arquivo, apresentado inclusive a linha da ocorrência.
Detalhes do Checkstyle do Projeto Base

Detalhes do Checkstyle do Projeto Base

As configurações do Checkstyle podem ser customizadas, mas não trataremos isso nesse artigo. Se tiver interesse, comente o artigo.

Conclusão

Este artigo apresentou os passos para configurar 2 plugins de relatórios do Maven. São relatórios iniciais para configurar em seus projetos corporativos.

Nos próximos artigos, relatórios mais “chatos” para os desenvolvedores: CPD e PMD.