Android

12 fev, 2016

Integrando ferramentas de análise de código no Android – Parte 04

Publicidade

Finalizando a nossa série sobre ferramentas de análise de código no Android, vamos conhecer o Lint. Introduzido na versão 16 do ADT, o Lint é uma ferramenta de análise estática de código que verifica os códigos e recursos de um projeto Android em busca de bugs e possibilidades de otimização, buscando um código mais conciso, seguro e performático, além de levar em consideração pontos como usabilidade, acessibilidade e internacionalização.

Como ele já faz parte da própria SDK do Android, muito provavelmente você já se deparou com avisos relacionados a strings hard-coded, ausência da propriedade contentDescription em um ImageView e coisas do tipo. Te convido a executar a task check neste momento em seu projeto para ver o que o Lint tem a dizer sobre ele.

O Lint é composto de um conjunto bem grande de regras (que aumentam a cada atualização das ferramentas), divididas nas categorias Correctiness, Correctiness:Messages, Security, Performance, Usability:Typography, Usability:Icons, Usability, Accessibility, Internacionalization e Bi-directional Text. Caso queira listar todas as regras disponíveis na versão atual do SDK, basta executar em um terminal o comando:

lint --list

Cada uma das regras, dentro da configuração padrão, é aplicada de acordo com uma severidade pré-definida, que pode ser configurada. Dentro do Android Studio é possível verificar quais regras estão atualmente ativas, dentro das configurações, no caminho Editor -> Inspections, na seção Android Lint.

1-1-1024x695

Para a configuração do Lint, o plugin do Android permite que ela seja feita por meio de uma DSL específica, o nó lintConfig. Como exemplo, vamos pegar um caso bastante comum, que é a verificação InvalidPackage que gera erros no Lint quando utilizamos o OkHttp em nosso projeto. Esse erro indica que estamos utilizando pacotes da JDK que não estão disponíveis no Android — no caso do OkHttp, ele utiliza algumas classes no pacote java.nio quando disponíveis. A forma mais simples de realizar essa configuração é ignorar a task diretamente no nó lintConfig:

android {
    ...
    lintOptions {
        disable 'InvalidPackage'
    }
}

Para alguns cenários nos quais uma configuração mais refinada do Lint necessita ser feita — seja ignorando algumas regras, seja modificando a severidade de alguma regra — podemos criar um arquivo XML e adicioná-lo na DSL. Um exemplo de arquivo XML para ignorar a mesma InvalidPackage seria assim:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
  <issue id="InvalidPackage" severity="ignore" />
</lint>

Em seguida, basta referenciar o arquivo na configuração do Lint:

android {
  lintConfig {
    lintConfig file("${project.rootDir}/config/lint.xml")
  }  
}

Todas as opções disponíveis para a configuração do Lint podem ser encontradas na documentação oficial, sempre atualizada em relação às últimas versões do plugin do Android.

Como, por padrão a execução do Lint já é ligada à task check, não precisamos fazer nenhuma configuração específica na dependência de tasks. Caso haja algum problema, ou mesmo mensagens de atenção, um relatório HTML / XML é gerado com mais informações sobre a execução, bem como detalhes sobre as ocorrências encontradas no código.

2-1-768x333

E é isso! Encerramos aqui a nossa série de artigos sobre ferramentas de análise de código. Como última dica, recomendo uma espiada no projeto Android App Quality, que traz todas as ferramentas que vimos integradas além de algumas configurações extras, como cobertura de código.

Até a próxima! #KeepCoding

***

O artigo foi originalmente publicado no blog e no Medium pessoal do autor.