Skip to content

Most visited

Recently visited

navigation

Melhorar seu código com Lint

Além de testar o aplicativo Android para garantir o cumprimento de requisitos funcionais, é importante verificar se o código não tem problemas estruturais. Código com estrutura deficiente pode afetar a confiabilidade e a eficiência de aplicativos Android e dificultar a manutenção. Por exemplo, arquivos de recursos XML com namespaces não utilizados desperdiçam espaço e processamento. Outros problemas estruturais, como o uso de elementos obsoletos ou chamadas de API não compatíveis com as versões visadas da API, podem causar falhas na execução do código.

Visão geral

O Android Studio oferece uma ferramenta de verificação de código denominada lint para ajudar a identificar e corrigir problemas com a qualidade estrutural do código, sem executar o aplicativo nem criar casos de teste. Cada problema detectado pela ferramenta é relatado com uma mensagem descritiva e um nível de severidade, permitindo priorizar rapidamente quais aprimoramentos essenciais serão efetuados. Além disso, você pode reduzir o nível de gravidade de um problema para ignorar problemas não relevantes para o projeto, bem como aumentar o nível de gravidade para destacar problemas específicos.

A ferramenta lint verifica os arquivos de origem de um projeto Android para identificar possíveis erros e otimizações de precisão, segurança, desempenho, usabilidade, acessibilidade e internacionalização. Quando você usa o Android Studio, a compilação de um aplicativo sempre executa as inspeções configuradas do lint e do IDE. No entanto, é possível executar manualmente as inspeções ou executar o lint na linha de comando.

Observação: quando o código é compilado no Android Studio, inspeções de código adicionais do IntelliJ são executadas para dinamizar a revisão de código.

A figura 1 mostra como a ferramenta lint processa os arquivos de origem do aplicativo.

Figura 1. Fluxo de trabalho da verificação de código com a ferramenta lint

Arquivos de origem do aplicativo
Os arquivos de origem consistem nos arquivos que compõem o projeto Android, incluindo arquivos Java e XML, ícones e arquivos de configuração do ProGuard.
O arquivo lint.xml
Um arquivo de configuração usado para especificar todas as verificações do lint que você quer excluir e para personalizar os níveis de severidade dos problemas.
A ferramenta lint
Uma ferramenta de verificação de código estático que pode ser executada para o projeto Android na linha de comando ou no Android Studio (consulte Executar manualmente inspeções). A ferramenta lint verifica a existência de problemas de código estruturais que podem afetar a qualidade e o desempenho de um aplicativo Android. É altamente recomendável que você corrija todos os erros detectados pelo lint antes de publicar o aplicativo.
Resultados da verificação do lint
Os resultados do lint podem ser vistos no console ou na janela Inspection Results no Android Studio. Consulte Executar manualmente inspeções.

Executar o lint na linha de comando

Para executar o lint em uma lista de arquivos em um diretório de projeto, use este comando:

lint [flags] <project directory>

Por exemplo, você pode emitir o comando a seguir para verificar os arquivos no diretório myproject e em seus subdiretórios. O ID de problema MissingPrefix informa o lint para verificar apenas a existência de atributos XML sem o prefixo de namespace Android.

lint --check MissingPrefix myproject 

Para ver a lista completa de sinalizadores e argumentos da linha de comando permitidos pela ferramenta, use este comando:

lint --help

Exemplo de saída do lint

O exemplo a seguir mostra a saída do console quando o comando lint é executado em um projeto denominado Earthquake.

$ lint Earthquake

Scanning Earthquake: ...............................................................................................................................
Scanning Earthquake (Phase 2): .......
AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder]
  <uses-sdk android:minSdkVersion="7" />
  ^
AndroidManifest.xml:23: Warning: <uses-sdk> tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
  <uses-sdk android:minSdkVersion="7" />
  ^
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
0 errors, 4 warnings

A saída acima lista quatro avisos e nenhum erro: três avisos (ManifestOrder, UsesMinSdkAttributes e UnusedResources) no arquivo AndroidManifest.xml do projeto e um aviso (IconMissingDensityFolder) no arquivo de layout Preferences.xml.

Executar o lint com o Gradle

Se o projeto incluir variações de compilação, use o wrapper do Gradle para chamar a tarefa lint para todas as variações, inserindo um dos comandos a seguir no diretório raiz do projeto:

Se você quiser executar a tarefa lint apenas para uma determinada variação de compilação, converta a primeira letra do nome da variação em maiúscula e acrescente o prefixo lint.

gradlew lintDebug

Quando a ferramenta lint conclui a verificação, ela informa dois caminhos para as versões XML e HTML do relatório do lint. Para saber mais sobre a execução de tarefas do Gradle na linha de comando, consulte Compilar seu aplicativo na linha de comando.

Configurar o lint

Por padrão, quando você executa uma verificação do lint, a ferramenta procura todos os problemas detectados pelo lint. Também é possível restringir os problemas verificados pelo lint e atribuir níveis de gravidade a esses problemas. Por exemplo, você pode desativar a verificação do lint para problemas específicos não relevantes para o projeto, bem como configurar o lint para relatar problemas não críticos com menor nível de gravidade.

A verificação do lint pode ser configurada para níveis diferentes:

Configurar o lint no Android Studio

A ferramenta incorporada lint verifica o código enquanto você usa o Android Studio. Os avisos e erros podem ser visualizados de duas formas:

Configurar o arquivo do lint

Especifique as preferências de verificação do lint no arquivo lint.xml. Se você criar esse arquivo manualmente, coloque-o no diretório raiz do projeto Android.

O arquivo lint.xml consiste em uma tag pai <lint> que abrange um ou mais elementos filhos <issue>. O lint define um valor de atributo id exclusivo para cada <issue>.

<?xml version="1.0" encoding="UTF-8"?>
    <lint>
        <!-- list of issues to configure -->
</lint>

Você pode alterar o nível de gravidade ou desativar a verificação do lint para um problema definindo o atributo de gravidade na tag <issue>.

Dica: para obter uma lista completa dos problemas detectados pelo lint e seus IDs correspondentes, execute o comando lint --list.

Exemplo de arquivo lint.xml

O exemplo a seguir mostra o conteúdo de um arquivo lint.xml.

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Disable the given check in this project -->
    <issue id="IconMissingDensityFolder" severity="ignore" />

    <!-- Ignore the ObsoleteLayoutParam issue in the specified files -->
    <issue id="ObsoleteLayoutParam">
        <ignore path="res/layout/activation.xml" />
        <ignore path="res/layout-xlarge/activation.xml" />
    </issue>

    <!-- Ignore the UselessLeaf issue in the specified file -->
    <issue id="UselessLeaf">
        <ignore path="res/layout/main.xml" />
    </issue>

    <!-- Change the severity of hardcoded strings to "error" -->
    <issue id="HardcodedText" severity="error" />
</lint>

Configurar a verificação do lint para arquivos de origem Java e XML

É possível desativar a verificação do lint para arquivos de origem Java e XML.

Dica: gerencie o recurso de verificação do lint para arquivos de origem Java ou XML na caixa de diálogo Default Preferences. Selecione File > Other Settings > Default Settings e, no painel esquerdo da caixa de diálogo Default Preferences, selecione Editor > Inspections.

Configurar a verificação do lint em Java

Para desativar a verificação do lint para uma classe ou método específico do Java no projeto Android, adicione a anotação @SuppressLint a esse código Java.

O exemplo a seguir mostra como desativar a verificação do lint para o problema NewApi no método onCreate. A ferramenta lint continua a verificar a existência do problema NewApi em outros métodos dessa classe.

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

O exemplo a seguir mostra como desativar a verificação do lint para o problema ParserError na classe FeedProvider:

@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {

Para suprimir a verificação de todos os problemas do lint no arquivo Java, use a palavra-chave all da seguinte forma:

@SuppressLint("all")

Configurar a verificação do lint em XML

Use o atributo tools:ignore para desativar a verificação do lint para seções específicas de arquivos XML. Coloque o valor de namespace a seguir no arquivo lint.xml para que a ferramenta lint reconheça o atributo:

namespace xmlns:tools="http://schemas.android.com/tools"

O exemplo a seguir mostra como desativar a verificação do lint para o problema UnusedResources no elemento <LinearLayout> de um arquivo de layout XML. O atributo ignore é herdado pelos elementos filho do elemento pai em que o atributo é declarado. Nesse exemplo, a verificação do lint para o elemento filho <TextView> também é desativada.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="UnusedResources" >

    <TextView
        android:text="@string/auto_update_prompt" />
</LinearLayout>

Para desativar mais de um problema, relacione os problemas a desativar em uma string separada por vírgulas. Por exemplo:

tools:ignore="NewApi,StringFormatInvalid"

Para suprimir a verificação de todos os problemas do lint no elemento XML, use a palavra-chave all da seguinte forma:

tools:ignore="all"

Configurar opções do lint com o Gradle

O Android Plugin para Gradle permite configurar algumas opções do lint, como quais verificações serão executadas ou ignoradas, usando o bloco lintOptions {} no arquivo build.gradle do módulo. O snippet de código a seguir mostra algumas propriedades que podem ser configuradas:

android {
  ...
  lintOptions {
    // Turns off checks for the issue IDs you specify.
    disable 'TypographyFractions','TypographyQuotes'
    // Turns on checks for the issue IDs you specify. These checks are in
    // addition to the default lint checks.
    enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
    // To enable checks for only a subset of issue IDs and ignore all others,
    // list the issue IDs with the 'check' property instead. This property overrides
    // any issue IDs you enable or disable using the properties above.
    check 'NewApi', 'InlinedApi'
    // If set to true, turns off analysis progress reporting by lint.
    quiet true
    // if set to true (default), stops the build if errors are found.
    abortOnError false
    // if true, only report errors.
    ignoreWarnings true
  }
}
...

Executar manualmente inspeções

Execute manualmente inspeções configuradas do lint e do IDE selecionando Inspect Code > Analyze. Os resultados da inspeção são exibidos na janela Inspection Results.

Definir escopo e perfil da inspeção

Selecione os arquivos que você quer analisar (escopo da inspeção) e as inspeções que serão executadas (perfil de inspeção) da seguinte forma:

  1. Na visualização Android, abra o projeto e selecione o projeto, uma pasta ou um arquivo a analisar.
  2. Na barra de menus, selecione Analyze > Inspect Code.
  3. Na caixa de diálogo Specify Inspection Scope, revise as configurações. Especificar o escopo da inspeção

    Figura 2. Revise as configurações do escopo da inspeção

    A combinação de opções exibida na caixa de diálogo Specify Inspection Scope varia em função do item selecionado ser um projeto, uma pasta ou um arquivo. É possível alterar o que será inspecionado selecionando um dos outros botões de opção. Consulte a caixa de diálogo Specify Inspection Scope para obter uma descrição de todos os campos possíveis na caixa de diálogo Specify Inspection Scope.

    • Quando você seleciona um projeto, arquivo ou diretório, a caixa de diálogo Specify Inspection Scope exibe o caminho para o Project, File ou Directory selecionado.
    • Quando você seleciona mais de um projeto, arquivo ou diretório, a caixa de diálogo Specify Inspection Scope exibe um botão de opção marcado em Selected files.
  4. Em Inspection profile, mantenha o perfil padrão (Project Default).
  5. Clique em OK para executar a inspeção. A figura 3 mostra os resultados do lint e de outras inspeções do IDE gerados pela execução de Inspect Code:

    Figura 3. Selecione um problema para ver sua resolução

  6. Na visualização em árvore, veja os resultados da inspeção expandindo e selecionado categorias e tipos de erro, e problemas.

    O painel direito exibe o relatório de inspeção para a categoria ou tipo de erro ou problema e informa o nome e a localização do erro. Se for o caso, o relatório de inspeção exibe outras informações, como um resumo do problema para ajudar na correção.

  7. Na visualização em árvore no painel esquerdo, clique com o botão direito do mouse em uma categoria, tipo ou problema para exibir o menu de contexto.

    Dependendo do contexto, você poderá executar algumas ou todas estas atividades: ir para a origem, excluir e incluir itens selecionados, suprimir problemas, editar configurações, gerenciar alertas de inspeção e executar uma inspeção novamente.

Para ver descrições dos botões da barra de ferramentas à esquerda, dos itens do menu de contexto e dos campos do relatório de inspeção, consulte Janela da ferramenta de inspeção.

Usar um escopo personalizado

Você pode usar um dos escopos personalizados fornecidos no Android Studio da seguinte forma:

  1. Na caixa de diálogo Specify Inspection Scope, clique em Custom scope.
  2. Clique na lista suspensa Custom scope para exibir as opções.

    Escolher o escopo da inspeção

    Figura 4. Selecione o escopo personalizado que deseja usar

    • Project Files: todos os arquivos do projeto atual.
    • Project Production Files: somente os arquivos de produção do projeto atual.
    • Project Test Files: somente os arquivos de teste do projeto atual. Consulte Tipos e localização de testes.
    • Open Files: somente os arquivos abertos do projeto atual.
    • Module <your-module>: somente os arquivos da pasta do módulo correspondente do projeto atual.
    • Current File: somente o arquivo atual do projeto atual. Exibido quando você seleciona um arquivo ou pasta.
    • Class Hierarchy: quando você seleciona este escopo e clica em OK, é exibida uma caixa de diálogo com todas as classes do projeto atual. Use o campo Search by Name da caixa de diálogo para filtrar e selecionar as classes a serem inspecionadas. Se você não filtrar a lista de classes, a inspeção do código verificará todas as classes.
  3. Clique em OK.

Criar um escopo personalizado

Quando você quiser inspecionar uma seleção de arquivos e diretórios diferente de todos os escopos personalizados disponíveis, poderá criar um novo escopo personalizado.

  1. Na caixa de diálogo Specify Inspection Scope, selecione Custom scope.
  2. Clique nos três pontos após a lista suspensa Custom Scope.

    Figura 5. Caixa de diálogo Specify Inspection Scope

    A caixa de diálogo Scopes é exibida.

    Figura 6. Crie um escopo personalizado

  3. Clique em Add para definir um novo escopo.
  4. Na lista suspensa Add Scope, selecione Local.

    Os escopos locais e compartilhados são usados no projeto pelo recurso Inspect Code. Um escopo Shared também pode ser usado por outros recursos do projeto com um campo de escopo. Por exemplo, quando clicar em Edit Settings para alterar as configurações de Find Usages, a caixa de diálogo exibida terá um campo Scope onde você poderá selecionar um escopo compartilhado.

    Figura 7. Selecione um escopo personalizado na caixa de diálogo Find Usages

  5. Atribua um nome ao escopo e clique em OK.

    O painel direito da caixa de diálogo Scopes será preenchido com as opções que permitem definir o escopo personalizado.

  6. Na lista suspensa, selecione Project.

    Será exibida uma lista dos projetos disponíveis.

    Observação: é possível criar o escopo personalizado para projetos ou pacotes. Nos dois casos, as etapas são as mesmas.

  7. Expanda as pastas do projeto, selecione o que quer adicionar ao escopo personalizado e clique em um dos botões à direita.

    Figura 8. Defina um escopo personalizado

    • Include: incluir esta pasta e seus arquivos, mas não incluir nenhuma de suas subpastas.
    • Include Recursively: incluir esta pasta e todos os seus arquivos, subpastas e seus arquivos.
    • Exclude: excluir esta pasta e seus arquivos, mas não excluir nenhuma subpasta.
    • Exclude Recursively: excluir esta pasta e todos os seus arquivos, subpastas e seus arquivos.

    A figura 9 mostra que a pasta main é incluída e que a pasta java é incluída recursivamente. A cor azul indica pastas incluídas parcialmente e a cor verde indica pastas e arquivos incluídas recursivamente.

    Figura 9. Exemplo de padrão para um escopo personalizado

    • Se você selecionar a pasta java e clicar em Exclude Recursively, o destaque em verde desaparecerá na pasta java e em todas as suas pastas e arquivos.
    • Se, em vez disso, você selecionar o arquivo verde destacado MainActivity.java e clicar em Exclude, o arquivo MainActivity.java deixará de ser destacado em verde, mas todos os demais itens na pasta java serão destacados em verde.
  8. Clique em OK. O escopo personalizado é exibido na parte inferior da lista suspensa.

Revisar e editar perfis de inspeção

O Android Studio é fornecido com vários perfis do lint e outros perfis de inspeção, atualizados por meio das atualizações do Android. Você pode usar esses perfis como estão ou editar seus nomes, descrições, gravidades e escopos. Também é possível ativar e desativar grupos inteiros de perfis ou perfis individuais em um grupo.

Para acessar a caixa de diálogo Inspections:

  1. Selecione Analyze > Inspect Code.
  2. Na caixa de diálogo Specify Scope em Inspection Profile, clique em More.

    A caixa de diálogo Inspections é exibida, com uma lista das inspeções permitidas e suas descrições.

    Figura 10. Inspeções permitidas e suas descrições

  3. Selecione a lista suspensa Profile para alternar entre inspeções Default (Android Studio) e Project Default (o projeto ativo). Para obter mais informações, consulte a página Specify Inspection Scope Dialog do IntelliJ.
  4. Na caixa de diálogo Inspections no painel esquerdo, selecione uma categoria de perfil de nível superior ou expanda um grupo e selecione um perfil específico. Quando você seleciona uma categoria de perfil, pode editar todas as inspeções dessa categoria como uma única inspeção.
  5. Selecione a lista suspensa Manage que você quer copiar ou renomear ou na qual quer adicionar descrições ou exportar/importar inspeções.
  6. Ao concluir, clique em OK.
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)