تحسين الرموز البرمجية باستخدام عمليات فحص الوبر

بالإضافة إلى إنشاء الاختبارات للتأكد من تلبية تطبيقك لمتطلباته الوظيفية، من المهم أيضًا تشغيل الرمز باستخدام أداة Lint للمساعدة في التأكّد من أنّ الرمز البرمجي لا يواجه أي مشاكل هيكلية. تساعد أداة Lint في العثور على التعليمات البرمجية السيئة البنية التي يمكن أن تؤثر في موثوقية تطبيقات Android وكفاءتها وتجعل صيانة الرمز البرمجي أكثر صعوبة. ننصحك بشدّة بتصحيح أي أخطاء تكتشفها أداة Lint قبل نشر تطبيقك.

على سبيل المثال، إذا كانت ملفات موارد XML تحتوي على مساحات اسم غير مستخدمة، سيشغل ذلك مساحة ويتطلّب معالجة غير ضرورية. قد يؤدي وجود مشاكل بنيوية أخرى، مثل استخدام عناصر متوقّفة نهائيًا أو طلبات بيانات من واجهة برمجة التطبيقات غير المتوافقة مع إصدارات واجهة برمجة التطبيقات المستهدَفة، إلى تعذُّر تشغيل الرمز بشكل صحيح. يمكن أن تساعدك أداة Lint في إزالة هذه المشاكل.

لتحسين أداء استخدام Lint، يمكنك أيضًا إضافة تعليقات توضيحية إلى الرمز.

نظرة عامة

يوفّر "استوديو Android" أداة لفحص الرموز تُسمّى lint ويمكن أن تساعدك في تحديد المشاكل المتعلقة بجودة بنية الرمز البرمجي وتصحيحها بدون الحاجة إلى تنفيذ التطبيق أو كتابة حالات الاختبار. ويتم الإبلاغ عن كل مشكلة اكتشفتها الأداة مع رسالة وصف ومستوى الخطورة حتى تتمكن من تحديد أولويات التحسينات المهمة التي ينبغي إجراؤها. يمكنك أيضًا خفض مستوى خطورة المشكلة لتجاهل المشكلات التي لا صلة لها بمشروعك أو رفع مستوى الخطورة لتسليط الضوء على مشكلات محددة.

تفحص أداة Lint ملفات مصدر مشروع Android بحثًا عن أخطاء محتملة وتحسينات في التحسين بهدف الحفاظ على الصحة والأمان والأداء وسهولة الاستخدام وتسهيل الاستخدام وإضفاء الطابع الدولي. عند استخدام "استوديو Android"، يتم تشغيل عمليات فحص الوبر وبيئة التطوير المتكاملة عند إنشاء تطبيقك، ولكن يمكنك إجراء عمليات الفحص يدويًا أو تشغيل أداة Lint من سطر الأوامر، كما هو موضّح في هذه الصفحة.

تفحص أداة Lint المدمَجة الرمز البرمجي أثناء استخدام "استوديو Android". يمكنك عرض التحذيرات والأخطاء بطريقتين:

  • كنص منبثق في نافذة المحرر. عندما تجد أداة Lint مشكلة، فإنها تسلط الضوء على الكود الذي فيه مشكلة باللون الأصفر. بالنسبة إلى المشاكل الأكثر خطورة، يتم وضع خط تحت الرمز باللون الأحمر.
  • في نافذة نتائج فحص Lint عند النقر على Code > فحص الرمز.

ملاحظة: عند تجميع الرمز البرمجي في "استوديو Android"، يتم إجراء عمليات فحص إضافية لرمز IntelliJ لتبسيط عملية مراجعة الرموز.

يوضح الشكل 1 كيفية معالجة أداة Lint لملفات مصدر التطبيق.

فحص التعليمات البرمجية باستخدام أداة Lint.
الشكل 1. فحص الرموز باستخدام أداة Lint
ملفات مصدر التطبيق
تتكون الملفات المصدر من الملفات التي يتألف منها مشروع Android، بما في ذلك ملفات Kotlin وJava وXML والرموز وملفات إعداد ProGuard.
ملف lint.xml
ملف إعداد يمكنك استخدامه لتحديد أي عمليات تحقّق من أداة Lint تريد استبعادها وتخصيص مستويات خطورة المشكلة.
أداة Lint
أداة فحص الرموز الثابتة التي يمكنك تشغيلها في مشروع Android الخاص بك إما من سطر الأوامر أو في "استوديو Android". تتحقق أداة Lint من مشكلات التعليمات البرمجية الهيكلية التي قد تؤثر في جودة وأداء تطبيق Android.
نتائج فحص أداة Lint
يمكنك عرض النتائج من أداة Lint إما في وحدة التحكّم أو في نافذة نتائج الفحص في "استوديو Android". في حال تنفيذ lint من سطر الأوامر، ستتم كتابة النتائج في مجلد build/. لمعرفة مزيد من التفاصيل، يُرجى الاطّلاع على القسم الذي يتناول إجراء عمليات الفحص يدويًا.

تشغيل أداة Lint من سطر الأوامر

إذا كنت تستخدم "استوديو Android" أو Gradle، يمكنك استخدام برنامج تضمين Gradle لاستدعاء مهمة lint لمشروعك من خلال إدخال أحد الأوامر التالية من الدليل الجذري لمشروعك:

  • على نظام التشغيل Windows:
    gradlew lint
    
  • على نظام التشغيل Linux أو macOS:
    ./gradlew lint
    

ينبغي أن تظهر مُخرجات مشابهة لما يلي:

> Task :app:lintDebug
Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results-debug.html

عندما تكمل أداة Lint عمليات التحقق، فإنها توفر مسارات إلى إصدارات XML وHTML من تقرير Lint. يمكنك بعد ذلك الانتقال إلى تقرير HTML وفتحه في المتصفّح، على النحو الموضّح في الشكل 2.

نموذج تقرير أداة Lint HTML
الشكل 2. نموذج تقرير أداة Lint بتنسيق HTML

إذا كان مشروعك يتضمّن صِيغ إصدار، تتحقّق أداة Lint من الصيغة التلقائية فقط. إذا أردت استخدام أداة Lint على صيغة مختلفة، عليك كتابة اسم الصيغة بأحرف كبيرة وبادئة lint.

./gradlew lintRelease

ولمعرفة مزيد من المعلومات حول تشغيل مهام Gradle من سطر الأوامر، اطّلِع على المقالة إنشاء تطبيقك من سطر الأوامر.

تشغيل أداة Lint باستخدام الأداة المستقلة

إذا لم تكن تستخدم "استوديو Android" أو Gradle، ثبِّت أدوات سطر الأوامر لحزمة تطوير البرامج (SDK) لنظام التشغيل Android لاستخدام أداة Lint المستقلة. حدِّد موقع أداة Lint على android_sdk/cmdline-tools/version/bin/lint.

ملاحظة: إذا حاولت تشغيل الأداة المستقلة في مشروع Gradle، ستظهر رسالة خطأ. يجب عليك دومًا استخدام gradle lint (على Windows) أو ./gradlew lint (على macOS أو Linux) لتشغيل Lint على مشروع Gradle.

لتشغيل lint مقابل قائمة ملفات في دليل المشروع، استخدم الأمر التالي:

lint [flags] <project directory>

على سبيل المثال، يمكنك إصدار الأمر التالي لفحص الملفات ضمن دليل myproject والأدلة الفرعية التابعة له. يخبر معرّف المشكلة MissingPrefix أداة Lint بإجراء فحص فقط بحثًا عن سمات XML التي تفتقد إلى بادئة مساحة الاسم في Android.

lint --check MissingPrefix myproject 

للاطّلاع على القائمة الكاملة للعلامات ووسيطات سطر الأوامر التي توفّرها الأداة، استخدِم الأمر التالي:

lint --help

يوضح المثال التالي مخرجات وحدة التحكم عند تشغيل أمر lint مقابل مشروع يسمى Earthquake:

$ lint Earthquake

Scanning Earthquake: ...............................................................................................................................
Scanning Earthquake (Phase 2): .......
AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder]
  <uses-sdk android:minSdkVersion="7" />
  ^
AndroidManifest.xml:23: Warning: <uses-sdk> tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
  <uses-sdk android:minSdkVersion="7" />
  ^
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
0 errors, 4 warnings

يسرد المثال على الناتج أربعة تحذيرات بدون أخطاء.

هناك تحذيران يتعلقان بملف AndroidManifest.xml للمشروع:

  • ManifestOrder
  • UsesMinSdkAttributes
هناك تحذير واحد يتعلّق بملف تنسيق Preferences.xml: UnusedResources.

يرتبط تحذير واحد بالدليل res: IconMissingDensityFolder.

إعداد أداة Lint لإيقاف التحذيرات

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

مستويات الخطورة هي:

  • enable
  • ‫‎disable أو ‎ignore
  • informational
  • warning
  • error
  • fatal

يمكنك تهيئة التحقق من أداة Lint لمستويات مختلفة:

  • على الصعيد العالمي (المشروع بأكمله)
  • وحدة المشروع
  • وحدة الإنتاج
  • وحدة الاختبار
  • فتح الملفات
  • التدرّج الهرمي للصف
  • نطاقات نظام التحكم في الإصدارات (VCS)

تهيئة ملف Lint

يمكنك تحديد إعداداتك المفضّلة للتحقّق من أداة Lint في ملف lint.xml. إذا كنت تنشئ هذا الملف يدويًا، ضعه في الدليل الجذري لمشروع Android.

يتكون الملف lint.xml من علامة رئيسية <lint> تتضمن عنصرًا <issue> فرعيًا واحدًا أو أكثر. تحدّد أداة Lint قيمة سمة id فريدة لكل <issue>:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- list of issues to configure -->
</lint>

لتغيير مستوى خطورة مشكلة أو إيقاف فحص أداة Lint للمشكلة، اضبط سمة درجة الخطورة في العلامة <issue>.

ملاحظة: للحصول على قائمة كاملة بالمشاكل المتوافقة مع Lint ومعرّفات المشاكل المقابلة لها، شغِّل الأمر lint --list.

نموذج ملف lint.xml

يوضّح المثال التالي محتوى ملف lint.xml:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Disable the IconMissingDensityFolder check in this project -->
    <issue id="IconMissingDensityFolder" severity="ignore" />

    <!-- Ignore the ObsoleteLayoutParam issue in the specified files -->
    <issue id="ObsoleteLayoutParam">
        <ignore path="res/layout/activation.xml" />
        <ignore path="res/layout-xlarge/activation.xml" />
    </issue>

    <!-- Ignore the UselessLeaf issue in the specified file -->
    <issue id="UselessLeaf">
        <ignore path="res/layout/main.xml" />
    </issue>

    <!-- Change the severity of hardcoded strings to "error" -->
    <issue id="HardcodedText" severity="error" />
</lint>

يوضّح هذا المثال طريقة الإبلاغ عن أنواع المشاكل المختلفة. يتم إيقاف فحص IconMissingDensityFolder تمامًا، ولا يتم إيقاف فحص ObsoleteLayoutParam إلا في الملفات المحددة في تعريفات <ignore ... /> المضمّنة.

إعداد التحقّق من أداة Lint لملفات مصدر Kotlin وJava وXML

يمكنك إيقاف التحقق من Lint لملفات مصدر Kotlin وJava وXML في مربع الحوار التفضيلات:

  1. اختَر ملف > الإعدادات (على نظام التشغيل Windows) أو استوديو Android > الإعدادات المفضّلة (على نظام التشغيل macOS أو Linux).
  2. اختَر المحرِّر > عمليات الفحص.
  3. ولإيقافها، ألغِ اختيار ملف المصدر المناسب.

يمكنك ضبط هذه الإعدادات إما لبيئة التطوير المتكاملة أو على مشاريع فردية من خلال اختيار الملف الشخصي المناسب.

إعداد فحص أداة Lint في Java أو Kotlin

لإيقاف فحص أداة Lint لفئة أو طريقة محدَّدة في مشروع Android، أضِف تعليق @SuppressLint التوضيحي إلى ذلك الرمز.

يوضح المثال التالي كيفية إيقاف البحث عن أداة Lint لمشكلة NewApi في طريقة onCreate. تواصل أداة Lint البحث عن مشكلة NewApi في طرق أخرى ضمن هذه الفئة.

Kotlin

@SuppressLint("NewApi")
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

Java

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

يمكن تحقيق الشيء ذاته على أي Composable. يوضِّح مقتطف الرمز التالي كيفية إيقاف عمليات التحقّق من NewApi على أي جهاز قابل للإنشاء.

Kotlin

  @SuppressLint("NewApi")
  @Composable
  fun MyComposable{
    ...
  }
  

يوضّح المثال التالي كيفية إيقاف البحث عن أداة Lint لمشكلة ParserError في الفئة FeedProvider:

Kotlin

@SuppressLint("ParserError")
class FeedProvider : ContentProvider() {

Java

@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {

لإيقاف البحث عن جميع مشاكل أداة Lint في الملف، استخدِم الكلمة الرئيسية all:

Kotlin

@SuppressLint("all")

Java

@SuppressLint("all")

يمكنك استخدام التعليق التوضيحي نفسه لإيقاف عمليات فحص Lint في أي دالة قابلة للتعديل.

إعداد فحص أداة Lint في ملف XML

استخدِم السمة tools:ignore لإيقاف التحقق من الوبر لأقسام معيّنة من ملفات XML. ضَع قيمة مساحة الاسم التالية في ملف lint.xml كي تتعرّف أداة Lint على السمة:

namespace xmlns:tools="http://schemas.android.com/tools"

يوضّح المثال التالي كيفية إيقاف التحقّق من أداة Lint لمشكلة UnusedResources في عنصر <LinearLayout> ضمن ملف بتنسيق XML. يتم اكتساب السمة ignore من خلال العناصر الفرعية للعنصر الرئيسي حيث يتم تعريف السمة. في هذا المثال، يتم إيقاف فحص Lint أيضًا للعنصر <TextView> التابع:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="UnusedResources" >

    <TextView
        android:text="@string/auto_update_prompt" />
</LinearLayout>

لإيقاف أكثر من مشكلة، أدرِج المشاكل المطلوب إيقافها في سلسلة مفصولة بفواصل. على سبيل المثال:

tools:ignore="NewApi,StringFormatInvalid"

لإيقاف البحث عن جميع مشاكل أداة Lint في عنصر XML، استخدِم الكلمة الرئيسية all:

tools:ignore="all"

تهيئة خيارات Lint باستخدام Gradle

يتيح لك مكوّن Android الإضافي لنظام Gradle إمكانية ضبط خيارات أداة Lint معيّنة، مثل عمليات التحقق التي يجب تنفيذها أو تجاهلها، باستخدام كتلة lint{} في ملف build.gradle على مستوى الوحدة.

يعرض مقتطف الرمز التالي بعض السمات التي يمكنك ضبطها:

Kotlin

android {
    ...
    lint {
        // Turns off checks for the issue IDs you specify.
        disable += "TypographyFractions" + "TypographyQuotes"
        // Turns on checks for the issue IDs you specify. These checks are in
        // addition to the default lint checks.
        enable += "RtlHardcoded" + "RtlCompat" + "RtlEnabled"
        // To enable checks for only a subset of issue IDs and ignore all others,
        // list the issue IDs with the 'check' property instead. This property overrides
        // any issue IDs you enable or disable using the properties above.
        checkOnly += "NewApi" + "InlinedApi"
        // If set to true, turns off analysis progress reporting by lint.
        quiet = true
        // If set to true (default), stops the build if errors are found.
        abortOnError = false
        // If set to true, lint only reports errors.
        ignoreWarnings = true
        // If set to true, lint also checks all dependencies as part of its analysis.
        // Recommended for projects consisting of an app with library dependencies.
        checkDependencies = true
    }
}
...

رائع

android {
    ...
    lint {
        // Turns off checks for the issue IDs you specify.
        disable 'TypographyFractions','TypographyQuotes'
        // Turns on checks for the issue IDs you specify. These checks are in
        // addition to the default lint checks.
        enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
        // To enable checks for only a subset of issue IDs and ignore all others,
        // list the issue IDs with the 'check' property instead. This property overrides
        // any issue IDs you enable or disable using the properties above.
        checkOnly 'NewApi', 'InlinedApi'
        // If set to true, turns off analysis progress reporting by lint.
        quiet true
        // If set to true (default), stops the build if errors are found.
        abortOnError false
        // If set to true, lint only reports errors.
        ignoreWarnings true
        // If set to true, lint also checks all dependencies as part of its analysis.
        // Recommended for projects consisting of an app with library dependencies.
        checkDependencies true
    }
}
...

وجميع طرق أداة Lint التي تتجاوز مستوى الخطورة المحدد لمشكلة تلتزم بترتيب الإعدادات. على سبيل المثال، يؤدي ضبط مشكلة على أنّها خطيرة في finalizeDsl() إلى إلغاء إيقافها في DSL الرئيسي.

إنشاء أساس للتحذيرات

ويمكنك أخذ لقطة من مجموعة التحذيرات الحالية لمشروعك، ثم استخدام تلك اللقطة كمرجع لعمليات الفحص المستقبلية بحيث يتم الإبلاغ عن المشاكل الجديدة فقط. تتيح لك النبذة المرجعية بدء استخدام أداة Lint لتعذُّر إنشاء الإصدار بدون الحاجة إلى الرجوع ومعالجة جميع المشاكل الحالية أولاً.

لإنشاء لقطة أساسية، عدِّل ملف build.gradle لمشروعك على النحو التالي:

Kotlin

android {
    lint {
        baseline = file("lint-baseline.xml")
    }
}

رائع

android {
    lintOptions {
        baseline file("lint-baseline.xml")
    }
}

عند إضافة هذا السطر لأول مرة، يتم إنشاء ملف lint-baseline.xml لتحديد خط الأساس. ومن ذلك الحين فصاعدًا، تقرأ الأدوات الملف فقط لتحديد المتوقع. إذا كنت ترغب في إنشاء خط أساس جديد، فاحذف الملف يدويًا وشغّل أداة Lint مرة أخرى لإعادة إنشائه.

بعد ذلك، عليك تشغيل lint من بيئة التطوير المتكاملة (IDE) عن طريق اختيار الرمز > فحص الرمز أو من سطر الأوامر على النحو التالي. تطبع المخرجات موقع الملف lint-baseline.xml. قد يختلف موقع ملف الإعداد عمّا يظهر هنا:

$ ./gradlew lintDebug -Dlint.baselines.continue=true
...
Wrote XML report to file:///app/lint-baseline.xml
Created baseline file /app/lint-baseline.xml

عند تشغيل lint، يتم تسجيل جميع المشاكل الحالية في ملف lint-baseline.xml. ويُطلق على مجموعة المشاكل الحالية اسم الخط المرجعي. ويمكنك التحقّق من ملف lint-baseline.xml للتحكّم في الإصدار إذا كنت تريد مشاركته مع الآخرين.

تخصيص المتوقع

إذا كنت تريد إضافة أنواع معيّنة فقط من المشاكل إلى النوع الأساسي، حدِّد المشاكل التي تريد إضافتها من خلال تعديل ملف build.gradle الخاص بمشروعك على النحو التالي:

Kotlin

android {
    lint {
        checkOnly += "NewApi" + "HandlerLeak"
        baseline = file("lint-baseline.xml")
    }
}

رائع

android {
    lintOptions {
        checkOnly 'NewApi', 'HandlerLeak'
        baseline file("lint-baseline.xml")
    }
}

إذا أضفت أي تحذيرات جديدة إلى قاعدة الرموز بعد إنشاء المتوقع، فإن أداة Lint تسرد فقط الأخطاء التي تم تقديمها حديثًا.

تحذير بشأن الحالة الأساسية

عندما يكون خط الأساس ساري المفعول، تحصل على تحذير إعلامي يخبرك بأنّه تمت فلترة مشكلة واحدة أو أكثر لأنّها مدرَجة في خط الأساس. يساعدك هذا التحذير في تذكر أنك قد قمت بتكوين المتوقع وأنك بحاجة إلى إصلاح جميع المشكلات في نقطة ما.

يتتبع هذا التحذير الإعلامي أيضًا المشاكل التي لم يعد يتم الإبلاغ عنها. تتيح لك هذه المعلومات معرفة ما إذا كنت قد أصلحت المشاكل بالفعل، وبالتالي يمكنك اختياريًا إعادة إنشاء المتوقع لمنع ظهور الخطأ مرة أخرى بدون أن يتم اكتشافه.

ملاحظة: يتم تفعيل الخطوط المرجعية عند إجراء عمليات الفحص في الوضع المجمَّع في بيئة التطوير المتكاملة، ولكن يتم تجاهلها في عمليات التحقّق داخل المحرّر التي يتم تشغيلها في الخلفية عند تعديل ملف. وذلك لأن الخطوط المرجعية مصممة في الحالة التي تحتوي فيها قاعدة الأكواد على عدد كبير من التحذيرات الحالية، ولكنك تريد إصلاح المشكلات محليًا أثناء لمس الرمز.

إجراء عمليات الفحص يدويًا

لتشغيل فحص Lint الذي تم إعداده وغيره من فحص IDE يدويًا، اختَر الرمز > فحص الرمز. تظهر نتائج الفحص في نافذة نتائج الفحص.

تحديد نطاق الفحص والملف الشخصي

اختَر الملفات التي تريد تحليلها (نطاق الفحص) وعمليات الفحص التي تريد إجراؤها (الملف الشخصي للفحص) على النحو التالي:

  1. في طريقة عرض Android، افتح مشروعك واختَر المشروع أو المجلد أو الملف الذي تريد تحليله.
  2. من شريط القوائم، اختَر الرمز > فحص الرمز.
  3. في مربّع الحوار تحديد نطاق الفحص، راجِع الإعدادات.

    تحديد نطاق الفحص
    الشكل 3. مراجعة إعدادات نطاق الفحص

    تختلف الخيارات التي تظهر في مربّع الحوار تحديد نطاق الفحص بناءً على ما إذا كنت قد اخترت مشروعًا أو مجلدًا أو ملفًا:

    • عند اختيار مشروع أو ملف أو دليل واحد، يعرض مربّع الحوار تحديد نطاق الفحص المسار إلى المشروع أو الملف أو الدليل الذي اخترته.
    • عند اختيار أكثر من مشروع أو ملف أو دليل واحد، يعرض مربّع الحوار تحديد نطاق الفحص زر اختيار للملفات المحدَّدة.

    لتغيير البيانات المطلوب فحصها، اختَر أحد أزرار الاختيار الأخرى. راجِع مربّع حوار تحديد نطاق الفحص للحصول على وصف لجميع الحقول المحتملة في مربّع الحوار تحديد نطاق الفحص.

  4. ضمن الملف الشخصي للفحص، اختَر الملف الشخصي الذي تريد استخدامه.
  5. انقر على حسنًا لتشغيل الفحص.

    يعرض الشكل 4 نتائج فحص أداة Lint وغيرها من نتائج فحص بيئة التطوير المتكاملة (IDE) من تشغيل فحص الرمز:

    اختَر مشكلة للاطّلاع على حلها.
    الشكل 4. نتائج الفحص اختَر مشكلة للاطّلاع على الحل.
  6. في لوحة نتائج الفحص، يمكنك الاطّلاع على نتائج الفحص من خلال توسيع واختيار فئات أو أنواع الأخطاء أو المشاكل.

    تعرض لوحة تقرير الفحص تقرير الفحص لفئة الخطأ أو نوعه أو المشكلة التي تم اختيارها في لوحة نتائج الفحص، كما تعرض اسم الخطأ وموقعه. يعرض تقرير الفحص معلومات أخرى، مثل ملخّص المشكلة، لمساعدتك على تصحيحها، حيثما أمكن.

  7. في العرض التدرّجي للوحة نتائج الفحص، انقر بزر الماوس الأيمن على فئة أو نوع أو مشكلة لعرض قائمة السياقات.

    واستنادًا إلى السياق، يمكنك إجراء ما يلي:

    • الانتقال إلى المصدر
    • استبعاد العناصر المحدّدة وتضمينها
    • التغلب على المسائل.
    • تعديل الإعدادات
    • إدارة تنبيهات الفحص
    • إعادة إجراء الفحص

للحصول على أوصاف لأزرار شريط الأدوات وعناصر قائمة السياق وحقول تقرير الفحص، يُرجى الاطّلاع على نافذة أداة فحص نتائج الفحص.

استخدام نطاق مخصّص

استخدِم أحد النطاقات المخصَّصة المقدَّمة في "استوديو Android" على النحو التالي:

  1. في مربّع الحوار تحديد نطاق الفحص، اختَر نطاق مخصّص.
  2. انقر على قائمة النطاق المخصّص لعرض الخيارات التالية:

    اختيار &quot;نطاق الفحص&quot;
    الشكل 5. اختَر النطاق المخصّص الذي تريد استخدامه.
    • كل الأماكن: كل الملفات
    • ملفات المشروع: جميع الملفات في المشروع الحالي
    • ملفات مصدر المشروع: ملفات المصدر في المشروع الحالي فقط
    • ملفات إنتاج المشروع: ملفات الإنتاج في المشروع الحالي فقط.
    • ملفات اختبار المشروع: ملفات الاختبار في المشروع الحالي فقط.
    • الخدوش ووحدات التحكّم: لا تستخدم إلا ملفات الخدش ووحدات التحكّم المفتوحة في المشروع الحالي.
    • الملفات التي تم عرضها مؤخرًا: الملفات التي تم عرضها مؤخرًا في المشروع الحالي فقط
    • الملف الحالي: الملف الحالي فقط في مشروعك الحالي يظهر عند اختيار ملف أو مجلد.
    • الدليل المحدّد: المجلد الحالي فقط في مشروعك الحالي. يظهر عند اختيار مجلد.
    • التدرّج الهرمي للفئة:عند تحديد هذا الخيار والنقر على حسنًا، يظهر مربّع حوار يضم جميع الصفوف في المشروع الحالي. في مربّع الحوار، استخدِم الحقل البحث حسب الاسم لفلترة الفئات واختيار الفئات المطلوب فحصها. إذا لم تتم فلترة قائمة الفئات، يفحص فحص الرمز البرمجي جميع الفئات.

    إذا كان لديك VCS تم ضبطه للمشروع، هناك أيضًا خيارات لحصر البحث على الملفات التي تم تعديلها فقط.

  3. انقُر على موافق.

إنشاء نطاق مخصّص

عندما تريد فحص مجموعة من الملفات والأدلة التي لا يشملها أي من النطاقات المخصّصة المتاحة حاليًا، يمكنك إنشاء نطاق مخصّص:

  1. في مربّع الحوار تحديد نطاق الفحص، اختَر نطاق مخصّص.
  2. انقر على النقاط الثلاث بعد قائمة النطاق المخصّص.

    مربّع حوار تحديد نطاق الفحص
    الشكل 6. تحديد مربّع حوار "نطاق الفحص"

    سيظهر مربّع حوار النطاقات.

    إنشاء نطاق مخصّص
    الشكل 7. أنشئ نطاقًا مخصّصًا.
  3. انقر على الزر في أعلى يمين مربّع الحوار لتحديد نطاق جديد.
  4. في قائمة إضافة نطاق التي تظهر، اختَر محلي.

    يتم استخدام النطاقَين المحلي والمشترك معًا ضمن المشروع لميزة فحص الرمز. يمكن أيضًا استخدام النطاق المشترك مع ميزات المشروع الأخرى التي تحتوي على حقل نطاق. على سبيل المثال، عند النقر على رمز تعديل الإعدادات لتغيير إعدادات البحث عن الاستخدامات، سيظهر في مربّع الحوار الناتج حقل نطاق يمكنك من خلاله اختيار نطاق مشترك.

    اختيار نطاق مشترك من مربّع الحوار &quot;العثور على الاستخدامات&quot;
    الشكل 8. اختَر نطاقًا مشتركًا من مربّع الحوار البحث عن الاستخدامات.
  5. أدخِل اسمًا للنطاق وانقر على حسنًا.

    تتم تعبئة الجزء الأيسر من مربّع حوار النطاقات بالخيارات التي تتيح لك تحديد النطاق المخصّص.

  6. من القائمة، اختَر المشروع.

    ستظهر قائمة بالمشاريع المتاحة.

    ملاحظة: يمكنك إنشاء النطاق المخصّص للمشاريع أو الحِزم. الخطوات هي نفسها.

  7. وسِّع مجلدات المشروع واختَر ما تريد إضافته إلى النطاق المخصّص واختَر ما إذا كنت تريد تضمينه أو استبعاده.

    تحديد نطاق مخصّص
    الشكل 9. حدِّد نطاقًا مخصّصًا.
    • تضمين: يمكنك تضمين هذا المجلد وملفاته، ولكن بدون تضمين أي من مجلداته الفرعية.
    • التضمين بشكل متكرر: يمكنك تضمين هذا المجلد وملفاته بالإضافة إلى مجلداته الفرعية وملفاته.
    • استبعاد: يمكنك استبعاد هذا المجلد وملفاته، ولكن بدون استبعاد أي من مجلداته الفرعية.
    • الاستبعاد بشكل متكرر: استبعِد هذا المجلد وملفاته بالإضافة إلى مجلداته الفرعية وملفاته.

    يوضح الشكل 10 أنّه تم تضمين المجلد الرئيسي، وأنّ المجلد JavaScript وres يتم تضمينه بشكل متكرّر. يشير اللون الأزرق إلى مجلد مضمّن جزئيًا، ويشير اللون الأخضر إلى المجلدات والملفات المضمَّنة بشكل متكرر.

    مثال على نمط لنطاق مخصّص
    الشكل 10. مثال على النمط لنطاق مخصّص
    • إذا اخترت المجلد JavaScript ونقرت على استبعاد بشكل متكرّر، يختفي التمييز باللون الأخضر في المجلد JavaScript وجميع المجلدات والملفات ضمنه.
    • في حال اختيار ملف MainActivity.kt المظلّل باللون الأخضر والنقر على استبعاد، لن يتم تمييز MainActivity.kt باللون الأخضر بعد ذلك، وسيظلّ أيّ محتوى آخر ضمن المجلد JavaScript باللون الأخضر.
  8. انقر على حسنًا. يظهر النطاق المخصّص في أسفل القائمة.

مراجعة الملفات الشخصية للتفتيش وتعديلها

تتوفر في "استوديو Android" مجموعة من أداة Lint وغيرها من الملفات الشخصية للفحص التي يتم تحديثها من خلال تحديثات Android. يمكنك استخدام هذه الملفات الشخصية كما هي أو تعديل أسمائها وأوصافها ودرجة الخطورة ونطاقاتها. يمكنك أيضًا تفعيل وإيقاف مجموعات كاملة من الملفات الشخصية أو ملفات شخصية فردية داخل مجموعة.

للوصول إلى إعدادات عمليات الفحص:

  1. اختَر ملف > الإعدادات. (على نظام التشغيل Windows) أو استوديو Android > الإعدادات المفضّلة (على نظام التشغيل macOS أو Linux).
  2. اختَر المحرِّر > عمليات الفحص.
  3. تعرض لوحة عمليات الفحص قائمة بعمليات الفحص المتوافقة وأوصافها.

    عمليات الفحص المدعومة وأوصافها
    الشكل 11. عمليات الفحص المتوفّرة وأوصافها
  4. اختَر قائمة الملفات الشخصية للتبديل بين عمليات الفحص التلقائي (استوديو Android) والمشروع التلقائي (المشروع النشط).

    للحصول على مزيد من المعلومات، يمكنك الاطِّلاع على صفحة إدارة الملفات الشخصية من IntelliJ.

  5. في قائمة عمليات الفحص في اللوحة اليمنى، اختَر فئة ملف شخصي ذات مستوى أعلى أو وسِّع مجموعة واختَر ملفًا شخصيًا معيَّنًا.

    عند اختيار فئة للملف التجاري، يمكنك تعديل جميع عمليات الفحص في تلك الفئة باعتبارها فحصًا واحدًا.

  6. اختَر قائمة إظهار إجراءات المخطط إظهار رمز إجراءات المخطط لنسخ عمليات الفحص وإعادة تسميتها وإضافة أوصاف إليها وتصديرها واستيرادها.
  7. عند الانتهاء، انقر على حسنًا.