Lint: grunder, statisk analysator för Android-projekt

Författare: IT Sectr Publicerad: 2026-02-13 Lästid: 10 min

Android Lint — inbyggd statisk kodanalysator i Android Studio och Gradle som kontrollerar källfiler mot Googles rekommendationer. Lint hittar potentiella fel före kompilering: oanvända resurser, prestandaproblem, minnesläckor och API-inkompatibilitet. Verktyget analyserar XML-, Java- och Kotlin-filer. Mer på Android Lint Guide.

Huvudpunkter

  • Android Lint — statisk analysator inbyggd i Android Studio och Gradle för kodgranskning
  • Lint-kontroll — analys av XML, Java och Kotlin för fel före kompileringsfasen av appen
  • lint.xml — konfigurationsfil för att ställa in Lint-regler i Android-projekt
  • Lint baseline — mekanism för att låsa befintliga varningar för gradvis implementering
  • CI-integration — kör Lint på byggservern för automatisk kvalitetskontroll av kod

Vad är Lint — statisk kodanalysator?

Android Lint — statiskt analysverktyg som ingår i Android SDK och Android Studio. Lint skannar applikationens källkod utan att köra den och hittar problem som kompilatorn missar: oanvända resurser, felaktig lokalisering, potentiella minnesläckor, API-inkompatibilitet med minSdkVersion och brott mot Googles prestandarekommendationer.

Statisk analys — metod för att kontrollera programvara utan att faktiskt köra koden. Till skillnad från kompilatorn som bara kontrollerar syntax och typer, letar den statiska analysatorn efter logiska fel, antimönster och avvikelser från bästa praxis. Lint utför över 200 inbyggda kontroller per kategori: correctness, performance, security, accessibility, usability och I18N.

Lint arbetar på flera nivåer: XML-analys kontrollerar layouter (layout), resurser (strings, colors, dimens), manifestet och konfigurationsfiler. Java/Kotlin-analys — källkod för anrop till föråldrade API:er, trådproblem och kontextläckor. Gradle-analys — byggkonfiguration för versionskompatibilitet.

Hur Lint kontrollerar kod i Android-projekt

Lint-kontroll körs via Android Studio (Analyze > Inspect Code) eller Gradle-kommando: ./gradlew lint. Resultat — HTML-rapport i mappen build/reports/lint-results.html och XML-rapport för CI-system. Lint analyserar varje fil oberoende och tillämpar en uppsättning regler (Issue), var och en med unikt ID, beskrivning, kategori och allvarlighetsgrad.

Allvarlighetsgrader för Lint: Error (fel — blockerar bygget), Warning (varning — påverkar kvaliteten), Informational (information — för kännedom), Ignore (ignoreras som standard). Nivåer konfigureras i lint.xml. Lint-fel kan konfigureras så att Gradle-bygget misslyckas när de finns 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 — fil som låser nuvarande varningar som acceptabla. Skapas med kommandot lint --baseline baseline.xml. Efter att baseline har lagts till i projektet rapporterar Lint bara nya problem. Detta är praktiskt för att införa Lint i ett gammalt projekt med hundratals varningar — teamet åtgärdar fel gradvis.

Konfigurera Lint-regler i konfigurationsfiler

lint.xml — konfigurationsfil i projektroten för att ställa in Lint-regler. Den specificerar ignorerade regler, allvarlighetsgrader och undantag för specifika filer eller kataloger. Filen skapas manuellt och tillämpas globalt på alla projektmoduler. Utan lint.xml fungerar alla regler med standardinställningar.

xml
<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Inaktivera kontroll av oanvända resurser -->
    <issue id="UnusedResources" severity="ignore" />

    <!-- Öka allvarlighetsgraden för kontextläcka -->
    <issue id="StaticFieldLeak" severity="error" />

    <!-- Ignorera i genererade filer -->
    <issue id="MissingTranslation" severity="ignore">
        <ignore path="build/generated" />
    </issue>
</lint>

@SuppressLint — annotering för att inaktivera Lint på metod- eller klassnivå i Java/Kotlin. Exempel: @SuppressLint("SetTextI18n") för en metod där text dynamiskt sätts i TextView. Annoteringen @RequiresApi anger lägsta API-nivå för en metod — Lint ger ingen varning om minSdk är högre än det angivna värdet.

Kör Lint-kontroll i CI/CD-pipeline

CI-integration av Lint — standardpraxis inom Android-utveckling. Kommandot ./gradlew lint startar analys av alla moduler och genererar rapporter. I CI/CD-konfiguration (Jenkins, GitLab CI, GitHub Actions) körs Lint vid varje pull request. Vid fel misslyckas bygget och utvecklaren får ett meddelande med HTML Lint-rapporten.

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

HTML-rapport Lint innehåller en tabell över alla hittade problem med kategori, regel-ID, fil, rad och beskrivning. Rapporten finns på CI-servern eller publiceras som byggartefakt. XML-rapport (lint-results.xml) används för integration med kodanalyssystem (SonarQube, CodeClimate) och automatisk skapande av uppgifter i trackers (Jira, YouTrack).

Lint i pull request — konfigurera GitHub Actions eller GitLab CI så att Lint körs automatiskt vid skapande av MR/PR. Om Lint hittar fel returnerar CI status failure och sammanslagning blockeras. Detta förhindrar att problematisk kod kommer in i huvudgrenen och upprätthåller kodbasens kvalitet.

Huvudkategorier av Lint-regler i Android

Lint-kategorier täcker alla aspekter av Android-utveckling. Google delar in reglerna i 12 kategorier, var och en ansvarig för en specifik typ av problem. De viktigaste kategorierna är Correctness, Performance, Security och Accessibility. För utvecklaren räcker det att känna till nyckelkontrollerna för varje kategori för att arbeta effektivt med Lint.

KategoriBeskrivningExempelregel
CorrectnessFel som påverkar applikationens funktionMissingPermission, WrongConstant
PerformancePrestanda- och minnesproblemUnusedResources, ViewHolder, DrawAllocation
SecuritySårbarheter och säkerhetsöverträdelserExportedContentProvider, WorldReadableFiles
AccessibilityTillgänglighetsproblem för användareContentDescription, TouchTargetSize
UsabilityAnvändbarhet och användarupplevelseNotSibling, BackButton, HardcodedText
I18NInternationalisering och lokaliseringMissingTranslation, ExtraTranslation

Performance-regler — mest användbara i praktiken. UnusedResources hittar resurser som deklarerats i XML men inte används i koden. ViewHolder kontrollerar om ViewHolder-mönstret används i RecyclerView-adaptrar. DrawAllocation varnar för att skapa objekt i onDraw-metoden. Att åtgärda dessa problem minskar APK-storleken och påskyndar applikationen.

Security-regler är obligatoriska för publicerade appar. ExportedContentProvider kontrollerar om ContentProvider exporteras utan skydd. WorldReadableFiles varnar för att skapa filer som är tillgängliga för alla appar. AllowBackup kontrollerar flaggan allowBackup i manifestet — det rekommenderas att stänga av den för datasäkerhet.

Vanliga frågor

Vad är skillnaden mellan Lint och kompilatorn?

Kompilatorn kontrollerar syntax och typer och översätter kod till bytekod för exekvering. Lint analyserar kod utan kompilering och hittar logiska problem som kompilatorn missar: oanvända variabler, resursläckor, lokaliseringsproblem, prestandaöverträdelser och API-inkompatibilitet med minSdkVersion. Lint kompletterar kompilatorn men ersätter den inte.

Hur inaktiverar jag en specifik Lint-varning i koden?

I XML-filer använd attributet tools:ignore med regel-ID: tools:ignore="UnusedResources". I Java/Kotlin lägg till annoteringen @SuppressLint på en metod eller klass: @SuppressLint("SetTextI18n"). För en hel katalog konfigurera lint.xml med noden issue och severity="ignore". För hela projektet konfigurera lint.xml i modulroten.

Vad är Lint baseline och hur använder jag det?

Lint baseline — XML-fil som låser nuvarande Lint-varningar som acceptabla. Skapas med kommandot ./gradlew lint -Pbaseline eller via lintOptions.baselineFile i build.gradle. Efter att baseline lagts till rapporterar Lint bara nya problem. Detta är praktiskt för att införa Lint i projekt med ärvd kod — teamet åtgärdar fel iterativt.

Hur skapar jag en egen Lint-regel?

Skapa en ny Java/Kotlin-modul med beroenden till lint-api och lint-checks från biblioteket com.android.tools.lint. Implementera klassen Detector för att hitta problem och klassen Issue för att beskriva dem. Bygg modulen till en JAR, placera i mappen lintLibs i ditt Android-projekt. Android Studio accepterar automatiskt anpassade regler.

Varför är Lint-kontroll obligatorisk i Android-projekt?

Lint hittar problem som kompilatorn inte ser: kontextläckor (Activity, Fragment), API-inkompatibilitet med minSdkVersion, Gradle-konfigurationsproblem, för stora PNG-ikoner, saknade alternativa resurser för olika språk och skärmkonfigurationer. Google Play rekommenderar Lint före publicering. Utan Lint kan appen krascha på äldre enheter.

Sammanfattning

  • Android Lint — statisk kodanalysator inbyggd i Android SDK och Android Studio
  • Lint-kontroll — analys av XML, Java och Kotlin för potentiella fel före kompilering av appen
  • lint.xml — konfigurationsfil för att ställa in Lint-regler i Android-projekt
  • Lint baseline — mekanism för att låsa befintliga varningar för gradvis implementering
  • CI-integration — kör Lint på byggservern blockerar PR med kritiska fel
  • Lint-kategorier — Correctness, Performance, Security, Accessibility och I18N
  • @SuppressLint — annotering för att inaktivera Lint på metod- eller klassnivå

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också