Lint: основе, статички анализатор за Android пројекте

Аутор: IT Sectr Објављено: 2026-02-13 Време читања: 10 мин

Android Lint — уграђени статички анализатор кода у Android Studio и Gradle-у, који проверава изворне датотеке у складу са Google препорукама. Lint проналази потенцијалне грешке пре компилације: неискоришћене ресурсе, проблеме перформанси, цурење меморије и некомпатибилност API-ја. Алат анализира XML, Java и Kotlin датотеке. Више на Android Lint Guide.

Главно

  • Android Lint — статички анализатор уграђен у Android Studio и Gradle за проверу кода
  • Lint провера — анализа XML, Java и Kotlin-а на грешке пре фазе компилације апликације
  • lint.xml — конфигурациона датотека за подешавање Lint правила у Android пројекту
  • Lint baseline — механизам фиксирања постојећих упозорења за постепену имплементацију
  • CI интеграција — покретање Lint-а на серверу за изградњу ради аутоматске контроле квалитета кода

Шта је Lint — статички анализатор кода?

Android Lint — алат за статичку анализу који је део Android SDK-а и Android Studio-а. Lint скенира изворни код апликације без њеног извршавања и проналази проблеме које компајлер прескаче: неискоришћене ресурсе, нетачну локализацију, потенцијална цурења меморије, некомпатибилност API-ја са minSdkVersion и кршење Google препорука за перформансе.

Статичка анализа — метод провере софтвера без стварног извршавања кода. За разлику од компајлера који проверава само синтаксу и типове, статички анализатор тражи логичке грешке, антипатерне и одступања од најбољих пракси. Lint извршава преко 200 уграђених провера по категоријама: correctness, performance, security, accessibility, usability и I18N.

Lint ради на више нивоа: XML анализа проверава изгледе (layout), ресурсе (strings, colors, dimens), манифест и конфигурационе датотеке. Java/Kotlin анализа — изворни код на позиве застарелих API-ја, проблеме са нитима и цурење контекста. Gradle анализа — конфигурацију изградње на компатибилност верзија.

Како Lint проверава код Android пројеката

Lint провера се покреће кроз Android Studio (Analyze > Inspect Code) или Gradle командом: ./gradlew lint. Резултат — HTML извештај у фолдеру build/reports/lint-results.html и XML извештај за CI системе. Lint анализира сваку датотеку независно, примењујући скуп правила (Issue), од којих свако има јединствени ID, опис, категорију и ниво озбиљности.

Нивои озбиљности Lint-а: Error (грешка — блокира изградњу), Warning (упозорење — утиче на квалитет), Informational (информација — за информисање), Ignore (игнорише се подразумевано). Нивои се подешавају у lint.xml-у. Lint грешке се могу подесити тако да Gradle изградња пада када су присутне кроз 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 — датотека која фиксира тренутна упозорења као дозвољена. Креира се командом lint --baseline baseline.xml. Након додавања baseline-а у пројекат, Lint пријављује само нове проблеме. Ово је згодно за увођење Lint-а у стари пројекат са стотинама упозорења — тим исправља грешке постепено.

Подешавање Lint правила у конфигурационим датотекама

lint.xml — конфигурациона датотека у корену пројекта за подешавање Lint правила. У њој се наводе занемарена правила, нивои озбиљности и изузеци за одређене датотеке или директоријуме. Датотека се креира ручно и примењује се глобално на све модуле пројекта. Без lint.xml-а сва правила раде са подразумеваним подешавањима.

xml
<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Искључи проверу неискоришћених ресурса -->
    <issue id="UnusedResources" severity="ignore" />

    <!-- Повећај озбиљност цурења контекста -->
    <issue id="StaticFieldLeak" severity="error" />

    <!-- Занемари у генерисаним датотекама -->
    <issue id="MissingTranslation" severity="ignore">
        <ignore path="build/generated" />
    </issue>
</lint>

@SuppressLint — анотација за искључивање Lint-а на нивоу метода или класе у Java/Kotlin-у. Пример: @SuppressLint("SetTextI18n") за метод где се текст динамички поставља у TextView. Анотација @RequiresApi наводи минимални API ниво за метод — Lint неће издати упозорење ако је minSdk већи од наведене вредности.

Покретање Lint провере у CI/CD пајплајну

CI интеграција Lint-а — стандардна пракса у Android развоју. Команда ./gradlew lint покреће анализу свих модула и генерише извештаје. У CI/CD конфигурацији (Jenkins, GitLab CI, GitHub Actions) Lint се покреће на сваки pull request. При постојању грешака изградња пада, а програмер добија обавештење са HTML извештајем Lint-а.

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

HTML извештај Lint-а садржи табелу свих пронађених проблема са категоријом, ID правила, датотеком, редом и описом. Извештај је доступан на CI серверу или се објављује као артефакт изградње. XML извештај (lint-results.xml) се користи за интеграцију са системима за анализу кода (SonarQube, CodeClimate) и аутоматско креирање задатака у тракерима (Jira, YouTrack).

Lint у pull request-у — подесите GitHub Actions или GitLab CI тако да се Lint покреће аутоматски при креирању MR/PR-а. Ако Lint пронађе грешке, CI враћа статус failure и спајање је блокирано. Ово спречава улазак проблематичног кода у главну грану и одржава квалитет базе кода.

Основне категорије Lint правила у Android-у

Lint категорије покривају све аспекте Android развоја. Google дели правила у 12 категорија, од којих свака одговара за одређени тип проблема. Најважније категорије — Correctness, Performance, Security и Accessibility. Програмеру је довољно да зна кључне провере сваке категорије за ефикасан рад са Lint-ом.

КатегоријаОписПример правила
CorrectnessГрешке које утичу на рад апликацијеMissingPermission, WrongConstant
PerformanceПроблеми перформанси и меморијеUnusedResources, ViewHolder, DrawAllocation
SecurityРањивости и кршења безбедностиExportedContentProvider, WorldReadableFiles
AccessibilityПроблеми приступачности за корисникеContentDescription, TouchTargetSize
UsabilityУпотребљивост и корисничко искуствоNotSibling, BackButton, HardcodedText
I18NИнтернационализација и локализацијаMissingTranslation, ExtraTranslation

Performance правила — најкориснија у пракси. UnusedResources проналази ресурсе декларисане у XML-у али неискоришћене у коду. ViewHolder проверава да ли се у адаптерима RecyclerView користи ViewHolder образац. DrawAllocation упозорава на креирање објеката у методи onDraw. Отклањање ових проблема смањује величину APK-а и убрзава рад апликације.

Security правила су обавезна за објављене апликације. ExportedContentProvider проверава да ли је ContentProvider извезен без заштите. WorldReadableFiles упозорава на креирање датотека доступних свим апликацијама. AllowBackup проверава флаг allowBackup у манифесту — препоручује се његово искључивање ради безбедности података.

Често постављана питања

Која је разлика између Lint-а и компајлера?

Компајлер проверава синтаксу и типове, преводећи код у бајт-код за извршавање. Lint анализира код без компајлирања и проналази логичке проблеме које компајлер прескаче: неискоришћене променљиве, цурење ресурса, проблеме локализације, кршење перформанси и некомпатибилност API-ја са minSdkVersion. Lint допуњава компајлер, али га не замењује.

Како искључити одређено Lint упозорење у коду?

У XML датотекама користите атрибут tools:ignore са ID правила: tools:ignore="UnusedResources". У Java/Kotlin-у додајте анотацију @SuppressLint на метод или класу: @SuppressLint("SetTextI18n"). За цео директоријум подесите lint.xml са чвором issue и severity="ignore". За цео пројекат подесите lint.xml у корену модула.

Шта је Lint baseline и како га користити?

Lint baseline — XML датотека која фиксира тренутна Lint упозорења као дозвољена. Креира се командом ./gradlew lint -Pbaseline или кроз lintOptions.baselineFile у build.gradle-у. Након додавања baseline-а, Lint пријављује само нове проблеме. Ово је згодно за увођење Lint-а у пројекте са наслеђеним кодом — тим исправља грешке итеративно.

Како креирати сопствено Lint правило?

Креирајте нови Java/Kotlin модул са зависностима од lint-api и lint-checks из библиотеке com.android.tools.lint. Имплементирајте класу Detector за проналажење проблема и класу Issue за њихов опис. Саставите модул у JAR, поставите у фолдер lintLibs вашег Android пројекта. Android Studio ће аутоматски прихватити прилагођена правила.

Зашто је Lint провера обавезна у Android пројектима?

Lint проналази проблеме које компајлер не види: цурење контекста (Activity, Fragment), некомпатибилност API-ја са minSdkVersion, проблеме конфигурације Gradle-а, превелике PNG иконе, недостатак алтернативних ресурса за различите језике и конфигурације екрана. Google Play препоручује Lint пре објављивања. Без Lint-а апликација може да се гаси на старим уређајима.

Завршни преглед

  • Android Lint — статички анализатор кода уграђен у Android SDK и Android Studio
  • Lint провера — анализа XML, Java и Kotlin-а на потенцијалне грешке пре компилације апликације
  • lint.xml — конфигурациона датотека за подешавање Lint правила у Android пројекту
  • Lint baseline — механизам фиксирања постојећих упозорења за постепену имплементацију
  • CI интеграција — покретање Lint-а на серверу за изградњу блокира PR-ове са критичним грешкама
  • Lint категорије — Correctness, Performance, Security, Accessibility и I18N
  • @SuppressLint — анотација за искључивање Lint-а на нивоу метода или класе

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође