Lint: basis, statische analysator voor Android-projecten

Auteur: IT Sectr Gepubliceerd: 2026-02-13 Leestijd: 10 min

Android Lint — ingebouwde statische code-analysator in Android Studio en Gradle die bronbestanden controleert op naleving van Google-aanbevelingen. Lint vindt potentiële fouten vóór compilatie: ongebruikte bronnen, prestatiefouten, geheugenlekken en API-incompatibiliteit. De tool analyseert XML-, Java- en Kotlin-bestanden. Meer op Android Lint Guide.

Belangrijkste punten

  • Android Lint — statische analysator ingebouwd in Android Studio en Gradle voor codecontrole
  • Lint-controle — analyse van XML, Java en Kotlin op fouten vóór de compilatiefase van de app
  • lint.xml — configuratiebestand voor het instellen van Lint-regels in een Android-project
  • Lint baseline — mechanisme voor het vastleggen van bestaande waarschuwingen voor geleidelijke implementatie
  • CI-integratie — Lint uitvoeren op de build-server voor automatische kwaliteitscontrole van code

Wat is Lint — statische code-analysator?

Android Lint — statische analysetool die deel uitmaakt van Android SDK en Android Studio. Lint scant de broncode van de app zonder deze uit te voeren en vindt problemen die de compiler mist: ongebruikte bronnen, onjuiste lokalisatie, potentiële geheugenlekken, API-incompatibiliteit met minSdkVersion en schending van Google-aanbevelingen voor prestaties.

Statische analyse — methode voor het controleren van software zonder daadwerkelijke uitvoering van code. In tegenstelling tot de compiler, die alleen syntax en types controleert, zoekt de statische analysator naar logische fouten, antipatronen en afwijkingen van best practices. Lint voert meer dan 200 ingebouwde controles uit in categorieën: correctness, performance, security, accessibility, usability en I18N.

Lint werkt op meerdere niveaus: XML-analyse controleert lay-outs (layout), bronnen (strings, colors, dimens), het manifest en configuratiebestanden. Java/Kotlin-analyse — broncode op aanroepen van verouderde API's, threadproblemen en contextlekken. Gradle-analyse — buildconfiguratie op versiecompatibiliteit.

Hoe Lint de code van Android-projecten controleert

Lint-controle wordt gestart via Android Studio (Analyze > Inspect Code) of Gradle-opdracht: ./gradlew lint. Resultaat — HTML-rapport in de map build/reports/lint-results.html en XML-rapport voor CI-systemen. Lint analyseert elk bestand onafhankelijk en past een reeks regels (Issue) toe, elk met een uniek ID, beschrijving, categorie en ernstniveau.

Ernstniveaus van Lint: Error (fout — blokkeert build), Warning (waarschuwing — beïnvloedt kwaliteit), Informational (informatie — ter informatie), Ignore (standaard genegeerd). Niveaus worden geconfigureerd in lint.xml. Lint-fouten kunnen zo worden ingesteld dat de Gradle-build mislukt wanneer ze aanwezig zijn via lintOptions.abortOnError true.

groovy
android {
    lintOptions {
        abortOnError true
        checkAllWarnings true
        baselineFile file("lint-baseline.xml")
        htmlReport true
        xmlReport true
        lintConfig file("lint.xml")
    }
}

Lint baseline — bestand dat huidige waarschuwingen als acceptabel vastlegt. Wordt gemaakt met de opdracht lint --baseline baseline.xml. Na toevoeging van baseline aan het project rapporteert Lint alleen nieuwe problemen. Dit is handig voor het implementeren van Lint in een oud project met honderden waarschuwingen — het team lost fouten geleidelijk op.

Lint-regels configureren in configuratiebestanden

lint.xml — configuratiebestand in de projectroot voor het instellen van Lint-regels. Het specificeert genegeerde regels, ernstniveaus en uitzonderingen voor specifieke bestanden of mappen. Het bestand wordt handmatig gemaakt en wereldwijd toegepast op alle projectmodules. Zonder lint.xml werken alle regels met standaardinstellingen.

xml
<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Controle op ongebruikte bronnen uitschakelen -->
    <issue id="UnusedResources" severity="ignore" />

    <!-- Ernst van contextlek verhogen -->
    <issue id="StaticFieldLeak" severity="error" />

    <!-- Negeren in gegenereerde bestanden -->
    <issue id="MissingTranslation" severity="ignore">
        <ignore path="build/generated" />
    </issue>
</lint>

@SuppressLint — annotatie voor het uitschakelen van Lint op methode- of klasseniveau in Java/Kotlin. Voorbeeld: @SuppressLint("SetTextI18n") voor een methode waar tekst dynamisch wordt ingesteld in TextView. De @RequiresApi-annotatie specificeert het minimale API-niveau voor een methode — Lint geeft geen waarschuwing als minSdk hoger is dan de opgegeven waarde.

Lint-controle uitvoeren in CI/CD-pipeline

CI-integratie van Lint — standaardpraktijk in Android-ontwikkeling. De opdracht ./gradlew lint start de analyse van alle modules en genereert rapporten. In CI/CD-configuratie (Jenkins, GitLab CI, GitHub Actions) wordt Lint uitgevoerd bij elke pull request. Bij fouten mislukt de build en ontvangt de ontwikkelaar een melding met het HTML Lint-rapport.

yaml
lint-check:
  script:
    - ./gradlew lint
  artifacts:
    paths:
      - app/build/reports/lint-results.html
    when: always

HTML-rapport van Lint bevat een tabel met alle gevonden problemen, inclusief categorie, regel-ID, bestand, regel en beschrijving. Het rapport is beschikbaar op de CI-server of wordt gepubliceerd als build-artefact. XML-rapport (lint-results.xml) wordt gebruikt voor integratie met code-analysesystemen (SonarQube, CodeClimate) en het automatisch aanmaken van taken in trackers (Jira, YouTrack).

Lint in pull request — configureer GitHub Actions of GitLab CI zodat Lint automatisch wordt uitgevoerd bij het maken van MR/PR. Als Lint fouten vindt, retourneert CI de status failure en wordt samenvoegen geblokkeerd. Dit voorkomt dat problematische code in de hoofdtak terechtkomt en handhaaft de kwaliteit van de codebase.

Belangrijkste categorieën Lint-regels in Android

Lint-categorieën dekken alle aspecten van Android-ontwikkeling. Google verdeelt de regels in 12 categorieën, elk verantwoordelijk voor een specifiek type probleem. De belangrijkste categorieën zijn Correctness, Performance, Security en Accessibility. Voor een ontwikkelaar is het voldoende om de belangrijkste controles van elke categorie te kennen om effectief met Lint te werken.

CategorieBeschrijvingVoorbeeldregel
CorrectnessFouten die de werking van de app beïnvloedenMissingPermission, WrongConstant
PerformancePrestatie- en geheugenproblemenUnusedResources, ViewHolder, DrawAllocation
SecurityKwetsbaarheden en beveiligingsinbreukenExportedContentProvider, WorldReadableFiles
AccessibilityToegankelijkheidsproblemen voor gebruikersContentDescription, TouchTargetSize
UsabilityGebruiksvriendelijkheid en gebruikerservaringNotSibling, BackButton, HardcodedText
I18NInternationalisatie en lokalisatieMissingTranslation, ExtraTranslation

Performance-regels — het meest nuttig in de praktijk. UnusedResources vindt bronnen die in XML zijn gedeclareerd maar niet in code worden gebruikt. ViewHolder controleert of in RecyclerView-adapters het ViewHolder-patroon wordt gebruikt. DrawAllocation waarschuwt voor het maken van objecten in de onDraw-methode. Het oplossen van deze problemen vermindert de APK-grootte en versnelt de app.

Security-regels zijn verplicht voor gepubliceerde apps. ExportedContentProvider controleert of ContentProvider zonder bescherming is geëxporteerd. WorldReadableFiles waarschuwt voor het maken van bestanden die toegankelijk zijn voor alle apps. AllowBackup controleert de allowBackup-vlag in het manifest — het wordt aanbevolen deze uit te schakelen voor gegevensbeveiliging.

Veelgestelde vragen

Wat is het verschil tussen Lint en de compiler?

De compiler controleert syntax en types en vertaalt code naar bytecode voor uitvoering. Lint analyseert code zonder compilatie en vindt logische problemen die de compiler mist: ongebruikte variabelen, resourcelekken, lokalisatieproblemen, prestatieovertredingen en API-incompatibiliteit met minSdkVersion. Lint vult de compiler aan, maar vervangt deze niet.

Hoe schakel ik een specifieke Lint-waarschuwing in code uit?

Gebruik in XML-bestanden het attribuut tools:ignore met de regel-ID: tools:ignore="UnusedResources". Voeg in Java/Kotlin de annotatie @SuppressLint toe op een methode of klasse: @SuppressLint("SetTextI18n"). Configureer voor een hele map lint.xml met het issue-knooppunt en severity="ignore". Configureer voor het hele project lint.xml in de module-root.

Wat is Lint baseline en hoe gebruik ik het?

Lint baseline — XML-bestand dat huidige Lint-waarschuwingen als acceptabel vastlegt. Het wordt gemaakt met de opdracht ./gradlew lint -Pbaseline of via lintOptions.baselineFile in build.gradle. Na toevoeging van baseline rapporteert Lint alleen nieuwe problemen. Dit is handig voor het implementeren van Lint in projecten met erfcode — het team lost fouten iteratief op.

Hoe maak ik een eigen Lint-regel?

Maak een nieuwe Java/Kotlin-module met afhankelijkheden van lint-api en lint-checks uit de bibliotheek com.android.tools.lint. Implementeer de klasse Detector voor het vinden van problemen en de klasse Issue voor het beschrijven ervan. Bouw de module naar een JAR, plaats deze in de lintLibs-map van uw Android-project. Android Studio accepteert automatisch aangepaste regels.

Waarom is Lint-controle verplicht in Android-projecten?

Lint vindt problemen die de compiler niet ziet: contextlekken (Activity, Fragment), API-incompatibiliteit met minSdkVersion, Gradle-configuratieproblemen, te grote PNG-pictogrammen, ontbrekende alternatieve bronnen voor verschillende talen en schermconfiguraties. Google Play beveelt Lint aan vóór publicatie. Zonder Lint kan de app crashen op oudere apparaten.

Samenvatting

  • Android Lint — statische code-analysator ingebouwd in Android SDK en Android Studio
  • Lint-controle — analyse van XML, Java en Kotlin op potentiële fouten vóór compilatie van de app
  • lint.xml — configuratiebestand voor het instellen van Lint-regels in een Android-project
  • Lint baseline — mechanisme voor het vastleggen van bestaande waarschuwingen voor geleidelijke implementatie
  • CI-integratie — Lint uitvoeren op de build-server blokkeert PR's met kritieke fouten
  • Lint-categorieën — Correctness, Performance, Security, Accessibility en I18N
  • @SuppressLint — annotatie voor het uitschakelen van Lint op methode- of klasseniveau

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook