Lint: základy, statický analyzátor pro Android projekty

Autor: IT Sectr Publikováno: 2026-02-13 Doba čtení: 10 min

Android Lint — vestavěný statický analyzátor kódu v Android Studio a Gradle, který kontroluje zdrojové soubory na shodu s doporučeními Google. Lint nachází potenciální chyby před kompilací: nepoužité zdroje, problémy s výkonem, úniky paměti a nekompatibilitu API. Nástroj analyzuje XML, Java a Kotlin soubory. Více na Android Lint Guide.

Hlavní body

  • Android Lint — statický analyzátor vestavěný v Android Studio a Gradle pro kontrolu kódu
  • Kontrola Lint — analýza XML, Java a Kotlin na chyby před fází kompilace aplikace
  • lint.xml — konfigurační soubor pro nastavení pravidel Lint v Android projektu
  • Lint baseline — mechanismus fixace stávajících upozornění pro postupnou implementaci
  • CI integrace — spuštění Lint na build serveru pro automatickou kontrolu kvality kódu

Co je Lint — statický analyzátor kódu?

Android Lint — nástroj statické analýzy, který je součástí Android SDK a Android Studio. Lint skenuje zdrojový kód aplikace bez jeho spuštění a nachází problémy, které kompilátor přeskakuje: nepoužité zdroje, nesprávnou lokalizaci, potenciální úniky paměti, nekompatibilitu API s minSdkVersion a porušení doporučení Google ohledně výkonu.

Statická analýza — metoda kontroly softwaru bez skutečného spuštění kódu. Na rozdíl od kompilátoru, který kontroluje pouze syntaxi a typy, statický analyzátor hledá logické chyby, anti-vzory a odchylky od nejlepších praktik. Lint provádí více než 200 vestavěných kontrol v kategoriích: correctness, performance, security, accessibility, usability a I18N.

Lint pracuje na několika úrovních: Analýza XML kontroluje rozvržení (layout), zdroje (strings, colors, dimens), manifest a konfigurační soubory. Analýza Java/Kotlin — zdrojový kód na volání zastaralých API, problémy s vlákny a úniky kontextu. Analýza Gradle — konfiguraci sestavení na kompatibilitu verzí.

Jak Lint kontroluje kód Android projektů

Kontrola Lint se spouští přes Android Studio (Analyze > Inspect Code) nebo příkazem Gradle: ./gradlew lint. Výsledek — HTML zpráva ve složce build/reports/lint-results.html a XML zpráva pro CI systémy. Lint analyzuje každý soubor nezávisle a aplikuje sadu pravidel (Issue), z nichž každé má jedinečné ID, popis, kategorii a úroveň závažnosti.

Úrovně závažnosti Lint: Error (chyba — blokuje sestavení), Warning (upozornění — ovlivňuje kvalitu), Informational (informace — pro vědomost), Ignore (ignorováno ve výchozím nastavení). Úrovně se nastavují v lint.xml. Chyby Lint lze nastavit tak, aby sestavení Gradle při jejich výskytu selhalo pomocí 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 — soubor, který fixuje aktuální upozornění jako přijatelná. Vytváří se příkazem lint --baseline baseline.xml. Po přidání baseline do projektu Lint hlásí pouze nové problémy. To je užitečné pro zavedení Lint do starého projektu se stovkami upozornění — tým postupně opravuje chyby.

Nastavení pravidel Lint v konfiguračních souborech

lint.xml — konfigurační soubor v kořeni projektu pro nastavení pravidel Lint. V něm se uvádějí ignorovaná pravidla, úrovně závažnosti a výjimky pro konkrétní soubory nebo adresáře. Soubor se vytváří ručně a aplikuje se globálně na všechny moduly projektu. Bez lint.xml všechna pravidla pracují s výchozím nastavením.

xml
<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Vypnout kontrolu nepoužitých zdrojů -->
    <issue id="UnusedResources" severity="ignore" />

    <!-- Zvýšit závažnost úniku kontextu -->
    <issue id="StaticFieldLeak" severity="error" />

    <!-- Ignorovat v generovaných souborech -->
    <issue id="MissingTranslation" severity="ignore">
        <ignore path="build/generated" />
    </issue>
</lint>

@SuppressLint — anotace pro vypnutí Lint na úrovni metody nebo třídy v Java/Kotlin. Příklad: @SuppressLint("SetTextI18n") pro metodu, kde je text dynamicky nastavován v TextView. Anotace @RequiresApi určuje minimální úroveň API pro metodu — Lint neupozorní, pokud je minSdk vyšší než zadaná hodnota.

Spuštění kontroly Lint v CI/CD pipeline

CI integrace Lint — standardní praxe ve vývoji Android. Příkaz ./gradlew lint spouští analýzu všech modulů a generuje zprávy. V konfiguraci CI/CD (Jenkins, GitLab CI, GitHub Actions) se Lint spouští při každém pull requestu. Při výskytu chyb sestavení selže a vývojář obdrží oznámení s HTML zprávou Lint.

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

HTML zpráva Lint obsahuje tabulku všech nalezených problémů s kategorií, ID pravidla, souborem, řádkem a popisem. Zpráva je k dispozici na CI serveru nebo publikována jako artefakt sestavení. XML zpráva (lint-results.xml) se používá pro integraci se systémy analýzy kódu (SonarQube, CodeClimate) a automatické vytváření úkolů v trackerech (Jira, YouTrack).

Lint v pull requestu — nakonfigurujte GitHub Actions nebo GitLab CI tak, aby se Lint spouštěl automaticky při vytvoření MR/PR. Pokud Lint najde chyby, CI vrátí stav failure a sloučení je blokováno. To zabraňuje vniknutí problematického kódu do hlavní větve a udržuje kvalitu kódové základny.

Hlavní kategorie pravidel Lint v Android

Kategorie Lint pokrývají všechny aspekty vývoje Android. Google dělí pravidla do 12 kategorií, každá zodpovědná za určitý typ problému. Nejdůležitější kategorie — Correctness, Performance, Security a Accessibility. Vývojáři stačí znát klíčové kontroly každé kategorie pro efektivní práci s Lint.

KategoriePopisPříklad pravidla
CorrectnessChyby ovlivňující chod aplikaceMissingPermission, WrongConstant
PerformanceProblémy výkonu a pamětiUnusedResources, ViewHolder, DrawAllocation
SecurityZranitelnosti a porušení bezpečnostiExportedContentProvider, WorldReadableFiles
AccessibilityProblémy přístupnosti pro uživateleContentDescription, TouchTargetSize
UsabilityPoužitelnost a uživatelská zkušenostNotSibling, BackButton, HardcodedText
I18NInternacionalizace a lokalizaceMissingTranslation, ExtraTranslation

Pravidla Performance — nejužitečnější v praxi. UnusedResources nachází zdroje deklarované v XML, ale nepoužívané v kódu. ViewHolder kontroluje, zda se v adaptérech RecyclerView používá vzor ViewHolder. DrawAllocation upozorňuje na vytváření objektů v metodě onDraw. Odstranění těchto problémů snižuje velikost APK a zrychluje aplikaci.

Pravidla Security jsou povinná pro publikované aplikace. ExportedContentProvider kontroluje, zda je ContentProvider exportován bez ochrany. WorldReadableFiles upozorňuje na vytváření souborů přístupných všem aplikacím. AllowBackup kontroluje příznak allowBackup v manifestu — doporučuje se jej vypnout pro bezpečnost dat.

Často kladené otázky

Jaký je rozdíl mezi Lint a kompilátorem?

Kompilátor kontroluje syntaxi a typy, překládá kód do bytekódu pro spuštění. Lint analyzuje kód bez kompilace a nachází logické problémy, které kompilátor přeskakuje: nepoužité proměnné, úniky zdrojů, problémy lokalizace, porušení výkonu a nekompatibilitu API s minSdkVersion. Lint doplňuje kompilátor, ale nenahrazuje jej.

Jak vypnout konkrétní upozornění Lint v kódu?

V XML souborech použijte atribut tools:ignore s ID pravidla: tools:ignore="UnusedResources". V Java/Kotlin přidejte anotaci @SuppressLint na metodu nebo třídu: @SuppressLint("SetTextI18n"). Pro celý adresář nastavte lint.xml s uzlem issue a severity="ignore". Pro celý projekt nastavte lint.xml v kořeni modulu.

Co je Lint baseline a jak jej použít?

Lint baseline — XML soubor, který fixuje aktuální upozornění Lint jako přijatelná. Vytváří se příkazem ./gradlew lint -Pbaseline nebo přes lintOptions.baselineFile v build.gradle. Po přidání baseline Lint hlásí pouze nové problémy. To je užitečné pro zavedení Lint v projektech se zděděným kódem — tým opravuje chyby iterativně.

Jak vytvořit vlastní pravidlo Lint?

Vytvořte nový modul Java/Kotlin se závislostmi na lint-api a lint-checks z knihovny com.android.tools.lint. Implementujte třídu Detector pro hledání problémů a třídu Issue pro jejich popis. Sestavte modul do JAR, umístěte do složky lintLibs vašeho Android projektu. Android Studio automaticky převezme vlastní pravidla.

Proč je kontrola Lint povinná v Android projektech?

Lint nachází problémy, které kompilátor nevidí: úniky kontextu (Activity, Fragment), nekompatibilitu API s minSdkVersion, problémy konfigurace Gradle, příliš velké PNG ikony, chybějící alternativní zdroje pro různé jazyky a konfigurace obrazovky. Google Play doporučuje Lint před publikací. Bez Lint může aplikace padat na starých zařízeních.

Shrnutí

  • Android Lint — statický analyzátor kódu vestavěný v Android SDK a Android Studio
  • Kontrola Lint — analýza XML, Java a Kotlin na potenciální chyby před kompilací aplikace
  • lint.xml — konfigurační soubor pro nastavení pravidel Lint v Android projektu
  • Lint baseline — mechanismus fixace stávajících upozornění pro postupnou implementaci
  • CI integrace — spuštění Lint na build serveru blokuje PR s kritickými chybami
  • Kategorie Lint — Correctness, Performance, Security, Accessibility a I18N
  • @SuppressLint — anotace pro vypnutí Lint na úrovni metody nebo třídy

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také