Lint: الأساسيات، المحلل الثابت لمشاريع أندرويد

المؤلف: 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 في مشروع أندرويد
  • Lint baseline — آلية لتجميد التحذيرات الحالية للاعتماد التدريجي
  • تكامل CI — تشغيل Lint على خادم البناء للتحكم الآلي بجودة الكود

ما هو Lint — محلل الكود الثابت؟

Android Lint هي أداة تحليل ثابت مضمنة في SDK أندرويد و Android Studio. يقوم Lint بمسح الكود المصدري للتطبيق دون تشغيله ويجد المشكلات التي يفوتها المترجم: الموارد غير المستخدمة، الترجمة غير الصحيحة، تسرب الذاكرة المحتمل، عدم توافق API مع minSdkVersion وانتهاكات توصيات أداء Google.

التحليل الثابت هو طريقة للتحقق من البرمجيات دون الحاجة إلى تنفيذ الكود فعلياً. على عكس المترجم الذي يتحقق فقط من بناء الجملة والأنواع، يبحث المحلل الثابت عن الأخطاء المنطقية والأنماط المضادة والانحرافات عن أفضل الممارسات. يقوم Lint بأكثر من 200 فحص مدمج عبر فئات: الصحة، الأداء، الأمان، إمكانية الوصول، سهولة الاستخدام و I18N.

يعمل Lint على مستويات متعددة: تحليل XML يتحقق من التخطيطات والموارد (strings, colors, dimens) والملف البياني وملفات الإعدادات. تحليل Java/Kotlin يفحص الكود المصدري بحثاً عن استدعاءات API القديمة ومشاكل الخيوط وتسرب السياق. تحليل Gradle يتحقق من إعدادات البناء لتوافق الإصدارات.

كيف يفحص Lint كود مشاريع أندرويد

فحص Lint يتم تشغيله عبر Android Studio (Analyze > Inspect Code) أو بأمر Gradle: ./gradlew lint. النتيجة هي تقرير HTML في مجلد build/reports/lint-results.html وتقرير XML لأنظمة CI. يحلل Lint كل ملف بشكل مستقل، مطبقاً مجموعة من القواعد (Issues)، لكل منها معرف فريد ووصف وفئة ومستوى خطورة.

مستويات خطورة 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 هو ممارسة قياسية في تطوير أندرويد. الأمر ./gradlew lint يشغل التحليل على جميع الوحدات ويولد التقارير. في تكوينات CI/CD (Jenkins, GitLab CI, GitHub Actions)، يتم تشغيل Lint على كل طلب سحب. في حالة وجود أخطاء، يفشل البناء ويتلقى المطور إشعاراً بتقرير HTML من Lint.

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

تقرير HTML لـ Lint يحتوي على جدول بجميع المشكلات التي تم العثور عليها مع الفئة ومعرف القاعدة والملف والسطر والوصف. يتوفر التقرير على خادم CI أو ينشر كمنتج بناء. تقرير XML (lint-results.xml) يستخدم للتكامل مع أنظمة تحليل الكود (SonarQube, CodeClimate) والإنشاء التلقائي للمهام في أنظمة التتبع (Jira, YouTrack).

Lint في طلبات السحب — قم بتكوين GitHub Actions أو GitLab CI بحيث يتم تشغيل Lint تلقائياً عند إنشاء MR/PR. إذا وجد Lint أخطاء، يعيد CI حالة فشل ويتم حظر الدمج. يمنع هذا وصول الكود المشكل إلى الفرع الرئيسي ويحافظ على جودة قاعدة الكود.

الفئات الرئيسية لقواعد Lint في أندرويد

فئات Lint تغطي جميع جوانب تطوير أندرويد. تقسم 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

قواعد الأداء هي الأكثر فائدة عملياً. UnusedResources يجد الموارد المعلنة في XML ولكن غير المستخدمة في الكود. ViewHolder يتحقق من استخدام نمط ViewHolder في محولات RecyclerView. DrawAllocation يحذر من إنشاء كائنات في طريقة onDraw. إصلاح هذه المشكلات يقلل حجم APK ويسرع التطبيق.

قواعد الأمان إلزامية للتطبيقات المنشورة. ExportedContentProvider يتحقق مما إذا كان ContentProvider قد تم تصديره دون حماية. WorldReadableFiles يحذر من إنشاء ملفات يمكن لجميع التطبيقات الوصول إليها. AllowBackup يتحقق من علامة allowBackup في البيان — يوصى بتعطيلها لأمان البيانات.

الأسئلة الشائعة

ما الفرق بين Lint والمترجم؟

المترجم يتحقق من بناء الجملة والأنواع، ويترجم الكود إلى bytecode للتنفيذ. Lint يحلل الكود دون ترجمة ويجد المشكلات المنطقية التي يفوتها المترجم: المتغيرات غير المستخدمة، تسرب الموارد، مشاكل الترجمة، انتهاكات الأداء وعدم توافق API مع minSdkVersion. Lint يكمل المترجم لكنه لا يحل محله.

كيف يمكن تعطيل تحذير Lint معين في الكود؟

في ملفات XML، استخدم الخاصية tools:ignore مع معرف القاعدة: 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 Studio تلقائياً بالتقاط القواعد المخصصة.

لماذا يعتبر فحص Lint إلزامياً في مشاريع أندرويد؟

Lint يجد مشكلات لا يراها المترجم: تسرب السياق (Activity, Fragment)، عدم توافق API مع minSdkVersion، مشاكل تكوين Gradle، أيقونات PNG كبيرة جداً، نقص الموارد البديلة للغات وتكوينات الشاشة المختلفة. يوصي Google Play باستخدام Lint قبل النشر. بدون Lint، قد يتعطل التطبيق على الأجهزة القديمة.

الملخص

  • Android Lint — محلل كود ثابت مدمج في SDK أندرويد و Android Studio
  • فحص Lint — تحليل XML و Java و Kotlin للأخطاء المحتملة قبل ترجمة التطبيق
  • lint.xml — ملف تكوين لتخصيص قواعد Lint في مشروع أندرويد
  • Lint baseline — آلية لتجميد التحذيرات الحالية للاعتماد التدريجي
  • تكامل CI — تشغيل Lint على خادم البناء يمنع PRs ذات الأخطاء الحرجة
  • فئات Lint — Correctness, Performance, Security, Accessibility و I18N
  • @SuppressLint — تعليق توضيحي لتعطيل Lint على مستوى الطريقة أو الفئة

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا