Lint: mga batayan, static na tagasuri para sa mga proyektong Android

May-akda: IT Sectr Nai-publish: 2026-02-13 Oras ng pagbabasa: 10 min

Android Lint — nakapaloob na static na tagasuri ng code sa Android Studio at Gradle, na sumusuri sa mga source file para sa pagsunod sa mga rekomendasyon ng Google. Natagpuan ng Lint ang mga potensyal na error bago ang compilation: hindi nagamit na mga resource, problema sa performance, pagtagas ng memorya at hindi pagkakatugma ng API. Sinusuri ng tool ang mga XML, Java at Kotlin file. Higit pa sa Android Lint Guide.

Mga Pangunahing Punto

  • Android Lint — static na tagasuri na nakapaloob sa Android Studio at Gradle para sa pagsusuri ng code
  • Pagsusuri ng Lint — pagsusuri ng XML, Java at Kotlin para sa mga error bago ang yugto ng compilation ng app
  • lint.xml — file ng configuration para sa pagtatakda ng mga panuntunan ng Lint sa proyektong Android
  • Lint baseline — mekanismo ng pag-aayos ng mga kasalukuyang babala para sa unti-unting pagpapatupad
  • Pagsasama ng CI — pagpapatakbo ng Lint sa build server para sa awtomatikong kontrol ng kalidad ng code

Ano ang Lint — static na tagasuri ng code?

Android Lint — kasangkapan ng static na pagsusuri na bahagi ng Android SDK at Android Studio. Ini-scan ng Lint ang source code ng app nang hindi ito pinapatakbo at natatagpuan ang mga problemang hindi napapansin ng compiler: hindi nagamit na mga resource, maling lokalisasyon, potensyal na pagtagas ng memorya, hindi pagkakatugma ng API sa minSdkVersion at paglabag sa mga rekomendasyon ng Google tungkol sa performance.

Static na pagsusuri — paraan ng pagsusuri ng software nang walang aktwal na pagpapatupad ng code. Hindi tulad ng compiler na sumusuri lamang ng syntax at mga uri, ang static na tagasuri ay naghahanap ng mga lohikal na error, anti-pattern at paglihis mula sa mga pinakamahusay na kasanayan. Ang Lint ay nagsasagawa ng higit sa 200 nakapaloob na pagsusuri ayon sa kategorya: correctness, performance, security, accessibility, usability at I18N.

Gumagana ang Lint sa maraming antas: Pagsusuri ng XML sumusuri ng mga layout, resource (strings, colors, dimens), manifest at mga file ng configuration. Pagsusuri ng Java/Kotlin — source code para sa mga tawag sa lumang API, problema sa thread at pagtagas ng konteksto. Pagsusuri ng Gradle — configuration ng build para sa pagkakatugma ng bersyon.

Paano sinusuri ng Lint ang code ng mga proyektong Android

Pagsusuri ng Lint ay pinapatakbo sa pamamagitan ng Android Studio (Analyze > Inspect Code) o utos ng Gradle: ./gradlew lint. Resulta — ulat ng HTML sa folder na build/reports/lint-results.html at ulat ng XML para sa mga sistema ng CI. Sinusuri ng Lint ang bawat file nang nakapag-iisa, na naglalapat ng isang hanay ng mga panuntunan (Issue), bawat isa ay may natatanging ID, paglalarawan, kategorya at antas ng kalubhaan.

Mga antas ng kalubhaan ng Lint: Error (error — humaharang sa build), Warning (babala — nakakaapekto sa kalidad), Informational (impormasyon — para sa kaalaman), Ignore (hindi pinapansin bilang default). Ang mga antas ay isinasaayos sa lint.xml. Ang mga error ng Lint ay maaaring isaayos upang ang Gradle build ay mabigo kapag mayroon sila sa pamamagitan ng 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 — file na nag-aayos ng mga kasalukuyang babala bilang katanggap-tanggap. Ginagawa gamit ang utos na lint --baseline baseline.xml. Pagkatapos idagdag ang baseline sa proyekto, ang Lint ay nag-uulat lamang ng mga bagong problema. Ito ay maginhawa para sa pagpapatupad ng Lint sa isang lumang proyekto na may daan-daang babala — unti-unting inaayos ng koponan ang mga error.

Pagsasaayos ng mga panuntunan ng Lint sa mga file ng configuration

lint.xml — file ng configuration sa ugat ng proyekto para sa pagtatakda ng mga panuntunan ng Lint. Dito tinutukoy ang mga hindi pinapansin na panuntunan, antas ng kalubhaan at mga eksepsiyon para sa mga partikular na file o direktoryo. Ang file ay ginagawa nang manu-mano at inilalapat nang pandaigdigan sa lahat ng modyul ng proyekto. Kung walang lint.xml, lahat ng panuntunan ay gumagana sa mga default na setting.

xml
<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Huwag paganahin ang pagsusuri ng hindi nagamit na mga resource -->
    <issue id="UnusedResources" severity="ignore" />

    <!-- Taasan ang kalubhaan ng pagtagas ng konteksto -->
    <issue id="StaticFieldLeak" severity="error" />

    <!-- Balewalain sa mga nabuong file -->
    <issue id="MissingTranslation" severity="ignore">
        <ignore path="build/generated" />
    </issue>
</lint>

@SuppressLint — anotasyon para hindi paganahin ang Lint sa antas ng pamamaraan o klase sa Java/Kotlin. Halimbawa: @SuppressLint("SetTextI18n") para sa pamamaraan kung saan ang teksto ay dinamikong itinatakda sa TextView. Ang anotasyong @RequiresApi ay tumutukoy sa pinakamababang antas ng API para sa isang pamamaraan — hindi maglalabas ng babala ang Lint kung ang minSdk ay mas mataas kaysa sa tinukoy na halaga.

Pagpapatakbo ng pagsusuri ng Lint sa pipeline ng CI/CD

Pagsasama ng CI ng Lint — karaniwang kasanayan sa pag-develop ng Android. Ang utos na ./gradlew lint ay nagpapatakbo ng pagsusuri ng lahat ng modyul at bumubuo ng mga ulat. Sa configuration ng CI/CD (Jenkins, GitLab CI, GitHub Actions) ang Lint ay pinapatakbo sa bawat pull request. Kapag may mga error, nabigo ang build at ang developer ay makakatanggap ng notipikasyon na may ulat na HTML ng Lint.

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

Ulat na HTML ng Lint ay naglalaman ng talaan ng lahat ng nakitang problema na may kategorya, ID ng panuntunan, file, linya at paglalarawan. Ang ulat ay makukuha sa CI server o inilalathala bilang artifact ng build. Ulat na XML (lint-results.xml) ay ginagamit para sa pagsasama sa mga sistema ng pagsusuri ng code (SonarQube, CodeClimate) at awtomatikong paggawa ng mga gawain sa mga tracker (Jira, YouTrack).

Lint sa pull request — i-configure ang GitHub Actions o GitLab CI upang ang Lint ay awtomatikong tumakbo kapag gumagawa ng MR/PR. Kung ang Lint ay makakita ng mga error, ang CI ay magbabalik ng status na failure at ang pagsasama ay haharangin. Ito ay pumipigil sa problematikong code na pumasok sa pangunahing sangay at nagpapanatili ng kalidad ng base ng code.

Mga pangunahing kategorya ng mga panuntunan ng Lint sa Android

Mga kategorya ng Lint ay sumasaklaw sa lahat ng aspeto ng pag-develop ng Android. Hinahati ng Google ang mga panuntunan sa 12 kategorya, bawat isa ay responsable para sa isang partikular na uri ng problema. Ang pinakamahalagang kategorya — Correctness, Performance, Security at Accessibility. Sapat na para sa developer na malaman ang mga pangunahing pagsusuri ng bawat kategorya para epektibong magtrabaho sa Lint.

KategoryaPaglalarawanHalimbawang panuntunan
CorrectnessMga error na nakakaapekto sa operasyon ng appMissingPermission, WrongConstant
PerformanceMga problema sa performance at memoryaUnusedResources, ViewHolder, DrawAllocation
SecurityMga kahinaan at paglabag sa seguridadExportedContentProvider, WorldReadableFiles
AccessibilityMga problema sa accessibility para sa mga userContentDescription, TouchTargetSize
UsabilityKakayahang gamitin at karanasan ng userNotSibling, BackButton, HardcodedText
I18NInternasyonalisasyon at lokalisasyonMissingTranslation, ExtraTranslation

Mga panuntunan ng Performance — pinakakapaki-pakinabang sa praktika. UnusedResources ay natagpuan ang mga resource na idineklara sa XML ngunit hindi ginagamit sa code. ViewHolder ay sumusuri kung ang pattern na ViewHolder ay ginagamit sa mga adapter ng RecyclerView. DrawAllocation ay nagbababala tungkol sa paggawa ng mga bagay sa pamamaraang onDraw. Ang pag-aayos ng mga problemang ito ay nagbabawas ng laki ng APK at nagpapabilis ng paggana ng app.

Mga panuntunan ng Security ay sapilitan para sa mga nai-publish na app. ExportedContentProvider ay sumusuri kung ang ContentProvider ay na-export nang walang proteksyon. WorldReadableFiles ay nagbababala tungkol sa paggawa ng mga file na naa-access sa lahat ng app. AllowBackup ay sumusuri sa flag na allowBackup sa manifest — inirerekomenda itong huwag paganahin para sa seguridad ng data.

Mga Madalas Itanong

Ano ang pagkakaiba sa pagitan ng Lint at compiler?

Compiler ay sumusuri ng syntax at mga uri, isinasalin ang code sa bytecode para sa pagpapatupad. Lint ay sumusuri ng code nang walang compilation at natatagpuan ang mga lohikal na problemang hindi napapansin ng compiler: hindi nagamit na mga variable, pagtagas ng resource, problema sa lokalisasyon, paglabag sa performance at hindi pagkakatugma ng API sa minSdkVersion. Ang Lint ay tumutulong sa compiler, ngunit hindi ito pinapalitan.

Paano hindi paganahin ang isang partikular na babala ng Lint sa code?

Sa mga XML file gamitin ang atributong tools:ignore na may ID ng panuntunan: tools:ignore="UnusedResources". Sa Java/Kotlin idagdag ang anotasyong @SuppressLint sa pamamaraan o klase: @SuppressLint("SetTextI18n"). Para sa buong direktoryo i-configure ang lint.xml na may node na issue at severity="ignore". Para sa buong proyekto i-configure ang lint.xml sa ugat ng modyul.

Ano ang Lint baseline at paano ito gamitin?

Lint baseline — file na XML na nag-aayos ng mga kasalukuyang babala ng Lint bilang katanggap-tanggap. Ginagawa gamit ang utos na ./gradlew lint -Pbaseline o sa pamamagitan ng lintOptions.baselineFile sa build.gradle. Pagkatapos idagdag ang baseline, ang Lint ay nag-uulat lamang ng mga bagong problema. Ito ay maginhawa para sa pagpapatupad ng Lint sa mga proyektong may minanang code — inaayos ng koponan ang mga error nang iteratively.

Paano gumawa ng sariling panuntunan ng Lint?

Gumawa ng bagong modyul ng Java/Kotlin na may mga dependency sa lint-api at lint-checks mula sa library na com.android.tools.lint. Ipatupad ang klase na Detector para sa paghahanap ng mga problema at klase na Issue para sa paglalarawan ng mga ito. Buuin ang modyul sa JAR, ilagay sa folder na lintLibs ng inyong proyektong Android. Awtomatikong kukunin ng Android Studio ang mga kustom na panuntunan.

Bakit sapilitan ang pagsusuri ng Lint sa mga proyektong Android?

Lint ay natagpuan ang mga problemang hindi nakikita ng compiler: pagtagas ng konteksto (Activity, Fragment), hindi pagkakatugma ng API sa minSdkVersion, mga problema sa configuration ng Gradle, masyadong malalaking icon na PNG, kawalan ng alternatibong resource para sa iba't ibang wika at configuration ng screen. Inirerekomenda ng Google Play ang Lint bago ilathala. Kung walang Lint, ang app ay maaaring mag-crash sa mga lumang device.

Buod

  • Android Lint — static na tagasuri ng code na nakapaloob sa Android SDK at Android Studio
  • Pagsusuri ng Lint — pagsusuri ng XML, Java at Kotlin para sa mga potensyal na error bago ang compilation ng app
  • lint.xml — file ng configuration para sa pagtatakda ng mga panuntunan ng Lint sa proyektong Android
  • Lint baseline — mekanismo ng pag-aayos ng mga kasalukuyang babala para sa unti-unting pagpapatupad
  • Pagsasama ng CI — pagpapatakbo ng Lint sa build server ay humaharang sa mga PR na may kritikal na error
  • Mga kategorya ng Lint — Correctness, Performance, Security, Accessibility at I18N
  • @SuppressLint — anotasyon para hindi paganahin ang Lint sa antas ng pamamaraan o klase

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din