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;
...