Android Lint — penganalisis kode statis bawaan di Android Studio dan Gradle yang memeriksa file sumber sesuai rekomendasi Google. Lint menemukan potensi kesalahan sebelum kompilasi: sumber daya tidak terpakai, masalah kinerja, kebocoran memori, dan ketidakcocokan API. Alat ini menganalisis file XML, Java, dan Kotlin. Selengkapnya di Android Lint Guide.
Poin Utama
Android Lint — alat analisis statis yang merupakan bagian dari Android SDK dan Android Studio. Lint memindai kode sumber aplikasi tanpa menjalankannya dan menemukan masalah yang dilewatkan kompiler: sumber daya tidak terpakai, lokalisasi tidak benar, potensi kebocoran memori, ketidakcocokan API dengan minSdkVersion, dan pelanggaran rekomendasi Google tentang kinerja.
Analisis statis — metode pemeriksaan perangkat lunak tanpa eksekusi kode yang sebenarnya. Tidak seperti kompiler yang hanya memeriksa sintaks dan tipe, penganalisis statis mencari kesalahan logis, anti-pola, dan penyimpangan dari praktik terbaik. Lint melakukan lebih dari 200 pemeriksaan bawaan dalam kategori: correctness, performance, security, accessibility, usability, dan I18N.
Lint bekerja pada beberapa level: Analisis XML memeriksa tata letak (layout), sumber daya (strings, colors, dimens), manifes, dan file konfigurasi. Analisis Java/Kotlin — kode sumber untuk pemanggilan API usang, masalah thread, dan kebocoran konteks. Analisis Gradle — konfigurasi build untuk kompatibilitas versi.
Pemeriksaan Lint dijalankan melalui Android Studio (Analyze > Inspect Code) atau perintah Gradle: ./gradlew lint. Hasilnya — laporan HTML di folder build/reports/lint-results.html dan laporan XML untuk sistem CI. Lint menganalisis setiap file secara independen, menerapkan serangkaian aturan (Issue), masing-masing memiliki ID unik, deskripsi, kategori, dan tingkat keparahan.
Tingkat keparahan Lint: Error (kesalahan — memblokir build), Warning (peringatan — mempengaruhi kualitas), Informational (informasi — untuk pengetahuan), Ignore (diabaikan secara default). Tingkat dikonfigurasi di lint.xml. Kesalahan Lint dapat dikonfigurasi agar build Gradle gagal saat ada kesalahan melalui lintOptions.abortOnError true.
android {
lintOptions {
abortOnError true
checkAllWarnings true
baselineFile file("lint-baseline.xml")
htmlReport true
xmlReport true
lintConfig file("lint.xml")
}
}
Lint baseline — file yang menetapkan peringatan saat ini sebagai dapat diterima. Dibuat dengan perintah lint --baseline baseline.xml. Setelah baseline ditambahkan ke proyek, Lint hanya melaporkan masalah baru. Ini berguna untuk menerapkan Lint di proyek lama dengan ratusan peringatan — tim memperbaiki kesalahan secara bertahap.
lint.xml — file konfigurasi di root proyek untuk mengatur aturan Lint. Di dalamnya ditentukan aturan yang diabaikan, tingkat keparahan, dan pengecualian untuk file atau direktori tertentu. File dibuat secara manual dan diterapkan secara global ke semua modul proyek. Tanpa lint.xml semua aturan berjalan dengan pengaturan default.
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Nonaktifkan pemeriksaan sumber daya tidak terpakai -->
<issue id="UnusedResources" severity="ignore" />
<!-- Tingkatkan keparahan kebocoran konteks -->
<issue id="StaticFieldLeak" severity="error" />
<!-- Abaikan di file yang dihasilkan -->
<issue id="MissingTranslation" severity="ignore">
<ignore path="build/generated" />
</issue>
</lint>
@SuppressLint — anotasi untuk menonaktifkan Lint di tingkat metode atau kelas di Java/Kotlin. Contoh: @SuppressLint("SetTextI18n") untuk metode di mana teks diatur secara dinamis di TextView. Anotasi @RequiresApi menentukan tingkat API minimum untuk suatu metode — Lint tidak akan mengeluarkan peringatan jika minSdk lebih tinggi dari nilai yang ditentukan.
Integrasi CI Lint — praktik standar dalam pengembangan Android. Perintah ./gradlew lint menjalankan analisis semua modul dan menghasilkan laporan. Dalam konfigurasi CI/CD (Jenkins, GitLab CI, GitHub Actions) Lint dijalankan pada setiap pull request. Saat ada kesalahan, build gagal dan pengembang mendapat notifikasi dengan laporan HTML Lint.
lint-check:
script:
- ./gradlew lint
artifacts:
paths:
- app/build/reports/lint-results.html
when: always
Laporan HTML Lint berisi tabel semua masalah yang ditemukan dengan kategori, ID aturan, file, baris, dan deskripsi. Laporan tersedia di server CI atau dipublikasikan sebagai artefak build. Laporan XML (lint-results.xml) digunakan untuk integrasi dengan sistem analisis kode (SonarQube, CodeClimate) dan pembuatan tugas otomatis di pelacak (Jira, YouTrack).
Lint di pull request — konfigurasikan GitHub Actions atau GitLab CI agar Lint berjalan otomatis saat membuat MR/PR. Jika Lint menemukan kesalahan, CI mengembalikan status failure dan penggabungan diblokir. Ini mencegah kode bermasalah masuk ke cabang utama dan menjaga kualitas basis kode.
Kategori Lint mencakup semua aspek pengembangan Android. Google membagi aturan menjadi 12 kategori, masing-masing bertanggung jawab untuk jenis masalah tertentu. Kategori terpenting — Correctness, Performance, Security, dan Accessibility. Pengembang cukup mengetahui pemeriksaan kunci setiap kategori untuk bekerja secara efektif dengan Lint.
| Kategori | Deskripsi | Contoh aturan |
|---|---|---|
| Correctness | Kesalahan yang mempengaruhi operasi aplikasi | MissingPermission, WrongConstant |
| Performance | Masalah kinerja dan memori | UnusedResources, ViewHolder, DrawAllocation |
| Security | Kerentanan dan pelanggaran keamanan | ExportedContentProvider, WorldReadableFiles |
| Accessibility | Masalah aksesibilitas bagi pengguna | ContentDescription, TouchTargetSize |
| Usability | Kegunaan dan pengalaman pengguna | NotSibling, BackButton, HardcodedText |
| I18N | Internasionalisasi dan lokalisasi | MissingTranslation, ExtraTranslation |
Aturan Performance — paling berguna dalam praktik. UnusedResources menemukan sumber daya yang dideklarasikan di XML tetapi tidak digunakan dalam kode. ViewHolder memeriksa apakah pola ViewHolder digunakan di adapter RecyclerView. DrawAllocation memperingatkan tentang pembuatan objek di metode onDraw. Memperbaiki masalah ini mengurangi ukuran APK dan mempercepat kinerja aplikasi.
Aturan Security wajib untuk aplikasi yang dipublikasikan. ExportedContentProvider memeriksa apakah ContentProvider diekspor tanpa perlindungan. WorldReadableFiles memperingatkan tentang pembuatan file yang dapat diakses semua aplikasi. AllowBackup memeriksa flag allowBackup di manifes — disarankan untuk menonaktifkannya demi keamanan data.
Pertanyaan Umum
Kompiler memeriksa sintaks dan tipe, menerjemahkan kode menjadi bytecode untuk dieksekusi. Lint menganalisis kode tanpa kompilasi dan menemukan masalah logis yang dilewatkan kompiler: variabel tidak terpakai, kebocoran sumber daya, masalah lokalisasi, pelanggaran kinerja, dan ketidakcocokan API dengan minSdkVersion. Lint melengkapi kompiler, tetapi tidak menggantikannya.
Di file XML gunakan atribut tools:ignore dengan ID aturan: tools:ignore="UnusedResources". Di Java/Kotlin tambahkan anotasi @SuppressLint pada metode atau kelas: @SuppressLint("SetTextI18n"). Untuk seluruh direktori konfigurasikan lint.xml dengan node issue dan severity="ignore". Untuk seluruh proyek konfigurasikan lint.xml di root modul.
Lint baseline — file XML yang menetapkan peringatan Lint saat ini sebagai dapat diterima. Dibuat dengan perintah ./gradlew lint -Pbaseline atau melalui lintOptions.baselineFile di build.gradle. Setelah baseline ditambahkan, Lint hanya melaporkan masalah baru. Ini berguna untuk menerapkan Lint di proyek dengan kode warisan — tim memperbaiki kesalahan secara iteratif.
Buat modul Java/Kotlin baru dengan dependensi lint-api dan lint-checks dari pustaka com.android.tools.lint. Implementasikan kelas Detector untuk menemukan masalah dan kelas Issue untuk mendeskripsikannya. Build modul menjadi JAR, tempatkan di folder lintLibs proyek Android Anda. Android Studio akan secara otomatis menerima aturan kustom.
Lint menemukan masalah yang tidak dilihat kompiler: kebocoran konteks (Activity, Fragment), ketidakcocokan API dengan minSdkVersion, masalah konfigurasi Gradle, ikon PNG terlalu besar, tidak adanya sumber daya alternatif untuk berbagai bahasa dan konfigurasi layar. Google Play merekomendasikan Lint sebelum publikasi. Tanpa Lint, aplikasi bisa crash di perangkat lama.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga