Esse artigo faz parte da revista Engenharia de Software 12 edição especial. Clique aqui para ler todos os artigos desta edição

Desenvolvimento

Ferramentas de Qualidade de Código

Automação do processo de aderência a padrões de codificação com Checkstyle

 

De que se trata o artigo: Este artigo aborda o emprego de ferramentas de qualidade de código, objetivando apresentar aos desenvolvedores como essas ferramentas podem ser úteis na automação da aderência a padrões de codificação estabelecidos.

 

Para que serve: Através de exemplos de aplicação desenvolvidos em uma ferramenta típica de qualidade de código, o Checkstyle, são apresentados os benefícios concretos e ganhos de produtividade no desenvolvimento dessas aplicações.

 

Em que situação o tema é útil: O emprego de ferramentas de qualidade de código é útil em ambientes de desenvolvimento de software no sentido de automatizar a aderência a padrões de codificação, liberando os programadores de um conjunto de tarefas complexas e enfadonhas de serem realizadas sem suporte computacional específico.

 

 

Escrever código de boa qualidade é um requisito importante para os programadores. Mas o que isso de fato significa? Na prática, uma definição clara do que seja código fonte de qualidade pode variar bastante e depender de diversos fatores relacionados ao desenvolvimento de software, entre os quais o leitor pode considerar: ser seguro, rápido, enxuto, de fácil manutenção e possível de estender e de ser entendido por outros desenvolvedores. Além disso, a linguagem de programação utilizada no projeto é fator importante nessa discussão.

O objetivo aqui é apresentar uma ferramenta de qualidade de código que pode ser utilizada em projetos de desenvolvimento em Java. O enfoque do artigo concentra-se no Checkstyle, embora o programador possa utilizar outros softwares similares, tais como PMD, FindBugs, Dependency Finder e SQE. Dada a importância deste assunto, também será abordado um exemplo de integração da ferramenta com o ambiente de desenvolvimento integrado Eclipse, embora os usuários do NetBeans e outros ambientes de desenvolvimento integrado (IDE, do inglês Integrated Development Environment) também possam contar com esse apoio.

 

Parâmetros para avaliar a qualidade de código

Entre os aspectos que podem ser considerados a fim de avaliar a qualidade de código incluem-se: formatação consistente e facilidade de entendimento (endentação e espacejamento); regras de nomeação consistentes; ausência de erros de compilação; capacidade adequada e consistente de tratamento de erros de execução; aderência a boas práticas de programação e de projeto; e documentação abrangente e de fácil entendimento em todo o código fonte.

Naturalmente que algumas dessas características podem ser consideradas mais fáceis de serem implementadas, mas não todas. Muitas empresas e organizações possuem padrões documentados que os desenvolvedores devem seguir. Na prática, tem sido muito difícil para essas organizações obterem sucesso nessa padronização. A questão é que, para se adequarem, os programadores precisam assimilar os padrões adotados e reverem frequentemente o código produzido para garantir a sua conformidade. Esse processo gasta tempo e é complexo de ser conduzido manualmente.

Uma alternativa mais racional é o emprego de ferramentas capazes de automatizar o processo de avaliação da qualidade de código. Certamente o processo torna-se ainda mais produtivo se tais ferramentas puderem ser utilizadas diretamente a partir de IDEs disponíveis.

Checkstyle

Checkstyle é uma ferramenta de qualidade de código projetada para auxiliar os programadores a detectar violações de estilo de codificação em Java. A versão 5, compatível com Java 5 ou superior, foi lançada em meados de 2008 e encontra-se disponível sob licença LGPL. O software pode ser usado como um aplicativo, como parte de um script Ant ou como um plugin para IDEs como Eclipse, NetBeans e BlueJ.

A ferramenta contém diversos controles – “checks” –, um para cada padrão de codificação ou estilo que é capaz de identificar. O desenvolvedor pode configurar o software habilitando os controles necessários conforme o padrão de codificação adotado no escopo do projeto. A partir da avaliação, é gerado um relatório das violações detectadas. É importante ressaltar, porém, que o Checkstyle não é capaz de fazer a refatoração automática do código fonte. Assim, o programador é inteiramente responsável por fazer as correções detectadas durante processo de avaliação do código.

A abrangência dos recursos incorporados ao Checkstyle pode ser observada a partir do número de controles atualmente disponíveis para a verificação da qualidade do código, que ultrapassa a casa de uma centena. Com o sentido de organização, os controles são agrupados de acordo com suas respectivas funcionalidades. Para que o leitor possa ter uma noção do escopo da ferramenta, segue a relação dos agrupamentos com uma breve descrição dos principais controles oferecidos:

Javadoc Comments: verifica se os pacotes utilizados estão associados a um correspondente arquivo de documentação e valida as tags Javadoc incluídas;

Naming Conventions: valida as especificações de nomes de identificadores, para cada um dos tipos (classes, métodos, constantes). Vale mencionar que a verificação baseia-se na avaliação de uma expressão regular, como ^[a-z][a-zA-Z0-9]*$, que, nesse caso, especifica que os identificadores comecem com uma letra minúscula – [a-z] – e o restante dos caracteres sejam letras e números – [a-zA-Z0-9]*, onde o metacaractere * indica a possibilidade de repetição. Os metacaracteres ^ e $ marcam, respectivamente, o início e o fim da expressão regular;

-    Header: verifica a existência de um cabeçalho associado ao código fonte e valida seu conteúdo de acordo com um arquivo texto externo contendo as informações requeridas, como dados do projeto e direitos autorais;

-    Imports: detecta declarações imports com o marcador *, redundâncias, imports não utilizados, ordena imports por grupo – primeiro java, em seguida javax, depois todo o restante – e em ordem alfabética;

-    Size Violations: valida número de linhas do código fonte, de classes e de métodos, tamanho de linhas e número de parâmetros a partir de valores arbitrados para o projeto. Assim, pode-se limitar o número de linhas do código fonte a 1000 ou o número de caracteres por linha a 80, por exemplo;

...

Quer ler esse conteúdo completo? Tenha acesso completo