علاوه بر ساخت تستها برای اطمینان از اینکه برنامه شما الزامات عملکردی خود را برآورده میکند، مهم است که کد را از طریق ابزار lint نیز اجرا کنید تا مطمئن شوید کد شما هیچ مشکل ساختاری ندارد. ابزار lint به یافتن کدهای با ساختار ضعیف که میتوانند بر قابلیت اطمینان و کارایی برنامههای اندروید شما تأثیر بگذارند و نگهداری کد شما را دشوارتر کنند، کمک میکند. اکیداً توصیه میشود قبل از انتشار برنامه، هرگونه خطایی را که lint تشخیص میدهد، اصلاح کنید.
برای مثال، اگر فایلهای منبع XML شما حاوی فضاهای نام استفاده نشده باشند، این امر باعث اشغال فضا و نیاز به پردازش غیرضروری میشود. سایر مشکلات ساختاری، مانند استفاده از عناصر منسوخ شده یا فراخوانیهای API که توسط نسخههای API هدف پشتیبانی نمیشوند، ممکن است منجر به عدم اجرای صحیح کد شوند. Lint میتواند به شما در رفع این مشکلات کمک کند.
برای بهبود عملکرد linting، میتوانید حاشیهنویسیهایی را نیز به کد خود اضافه کنید .
نمای کلی
اندروید استودیو ابزاری برای اسکن کد به نام lint ارائه میدهد که میتواند به شما در شناسایی و اصلاح مشکلات مربوط به کیفیت ساختاری کدتان بدون نیاز به اجرای برنامه یا نوشتن موارد آزمایشی کمک کند. هر مشکلی که توسط این ابزار شناسایی میشود، با یک پیام توضیحی و یک سطح شدت گزارش میشود تا بتوانید بهبودهای حیاتی مورد نیاز را اولویتبندی کنید. همچنین میتوانید سطح شدت یک مشکل را کاهش دهید تا مسائلی که به پروژه شما مربوط نیستند نادیده گرفته شوند یا سطح شدت را افزایش دهید تا مشکلات خاص برجسته شوند.
ابزار lint فایلهای منبع پروژه اندروید شما را برای یافتن اشکالات احتمالی و بهبودهای بهینهسازی برای صحت، امنیت، عملکرد، قابلیت استفاده، دسترسی و بینالمللیسازی بررسی میکند. هنگام استفاده از اندروید استودیو، بازرسیهای lint و IDE پیکربندیشده هنگام ساخت برنامه شما اجرا میشوند. با این حال، میتوانید بازرسیها را به صورت دستی اجرا کنید یا lint را از خط فرمان اجرا کنید ، همانطور که در این صفحه توضیح داده شده است.
ابزار داخلی lint، کد شما را هنگام استفاده از اندروید استودیو بررسی میکند. میتوانید هشدارها و خطاها را به دو روش مشاهده کنید:
- به عنوان متن پاپآپ در پنجره ویرایشگر. وقتی lint مشکلی پیدا میکند، کد مشکلساز را با رنگ زرد هایلایت میکند. برای مشکلات جدیتر، کد را با رنگ قرمز زیرخطدار میکند.
- در پنجره نتایج بازرسی lint وقتی روی Code > Inspect Code کلیک میکنید.
نکته: وقتی کد شما در اندروید استودیو کامپایل میشود، بررسیهای کد IntelliJ اضافی برای سادهسازی بررسی کد اجرا میشوند. اندروید استودیو را تا حد امکان بهروز نگه دارید تا از جدیدترین قوانین و بررسیهای lint اطمینان حاصل شود.
شکل ۱ نحوهی پردازش فایلهای منبع برنامه توسط ابزار lint را نشان میدهد.

- فایلهای منبع برنامه
- فایلهای منبع شامل فایلهایی هستند که پروژه اندروید شما را تشکیل میدهند، از جمله فایلهای Kotlin، Java و XML، آیکونها و فایلهای پیکربندی ProGuard.
- فایل
lint.xml - یک فایل پیکربندی که میتوانید از آن برای مشخص کردن هرگونه بررسی lint که میخواهید حذف کنید و سفارشیسازی سطوح شدت مشکل استفاده کنید.
- ابزار پرزگیری
- یک ابزار اسکن کد استاتیک که میتوانید آن را روی پروژه اندروید خود یا از طریق خط فرمان یا در اندروید استودیو اجرا کنید. ابزار lint مشکلات ساختاری کد را که میتوانند بر کیفیت و عملکرد برنامه اندروید شما تأثیر بگذارند، بررسی میکند.
- نتایج بررسی پرز
- میتوانید نتایج lint را در کنسول یا پنجره نتایج بازرسی در اندروید استودیو مشاهده کنید. اگر
lintاز خط فرمان اجرا کنید، نتایج در پوشهbuild/نوشته میشوند. برای جزئیات بیشتر، به بخش مربوط به اجرای بازرسیها به صورت دستی مراجعه کنید.
اجرای lint از خط فرمان
اگر از اندروید استودیو یا گریدل استفاده میکنید، با وارد کردن یکی از دستورات زیر از دایرکتوری ریشه پروژه خود، از بستهبندی گریدل برای فراخوانی وظیفه lint برای پروژه خود استفاده کنید:
نکته: افزونهی اندروید گریدل (Android Gradle) را تا حد امکان بهروز نگه دارید تا از جدیدترین قوانین lint استفاده کند.
- در ویندوز:
gradlew lint
- در لینوکس یا 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 نشان داده شده است.

اگر پروژه شما شامل build variants باشد، lint فقط variant پیشفرض را بررسی میکند. اگر میخواهید lint را روی یک variant دیگر اجرا کنید، باید نام variant را با حروف بزرگ بنویسید و قبل از آن lint را قرار دهید.
./gradlew lintRelease
نکته: Lint به طور خودکار به عنوان بخشی از ساخت شما اجرا نمیشود. اکیداً توصیه میکنیم که lint را به عنوان بخشی از ساخت یکپارچهسازی مداوم اجرا کنید تا هنگام ساخت کد منبع موجود، آخرین بررسیهای lint را مشاهده کنید.
برای کسب اطلاعات بیشتر در مورد اجرای وظایف Gradle از خط فرمان، بخش «ساخت برنامه از خط فرمان» را مطالعه کنید.
اجرای lint با استفاده از ابزار مستقل
اگر از اندروید استودیو یا گریدل استفاده نمیکنید، ابزارهای خط فرمان اندروید SDK را نصب کنید تا از ابزار مستقل lint استفاده کنید. ابزار lint را در android_sdk /cmdline-tools/ version /bin/lint پیدا کنید.
توجه: اگر سعی کنید ابزار مستقل را روی یک پروژه Gradle اجرا کنید، با خطا مواجه خواهید شد. برای اجرای lint روی یک پروژه Gradle، همیشه باید از gradle lint (در ویندوز) یا ./gradlew lint (در macOS یا Linux) استفاده کنید.
برای اجرای lint روی لیستی از فایلهای موجود در دایرکتوری پروژه، از دستور زیر استفاده کنید:
lint [flags] <project directory>
برای مثال، میتوانید دستور زیر را برای اسکن فایلهای موجود در دایرکتوری myproject و زیرشاخههای آن صادر کنید. شناسهی مشکل MissingPrefix به lint میگوید که فقط آن دسته از ویژگیهای XML را که پیشوند فضای نام اندروید را ندارند، اسکن کند.
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
میتوانید بررسی پرز را برای سطوح مختلف پیکربندی کنید:
- در سطح جهانی (کل پروژه)
- ماژول پروژه
- ماژول تولید
- ماژول تست
- باز کردن فایلها
- سلسله مراتب کلاس
- دامنههای سیستم کنترل نسخه (VCS)
پیکربندی فایل lint
میتوانید تنظیمات بررسی lint خود را در فایل lint.xml مشخص کنید. اگر این فایل را به صورت دستی ایجاد میکنید، آن را در دایرکتوری ریشه پروژه اندروید خود قرار دهید.
فایل lint.xml شامل یک تگ والد <lint> است که شامل یک یا چند عنصر فرزند <issue> است. Lint برای هر <issue> یک مقدار ویژگی id منحصر به فرد تعریف میکند:
<?xml version="1.0" encodin>g<=&qu>ot;UT<F-8"? lint !-- list of is>s<ues t>o configure -- /lint
برای تغییر سطح شدت یک مشکل یا غیرفعال کردن بررسی lint برای آن مشکل، ویژگی severe را در تگ <issue> تنظیم کنید.
نکته: برای مشاهده لیست کاملی از مشکلات پشتیبانی شده توسط lint و شناسههای مشکل مربوطه، دستور lint --list را اجرا کنید. گزینه --list باید از ابزار مستقل lint اجرا شود.
نمونه فایل lint.xml
مثال زیر محتویات یک فایل lint.xml را نشان میدهد:
<?xml version="1.0" encodin>g<=&qu>ot;UT<F-8"? lint !-- Disable the IconMissingDensityFolder chec>k in <this project -- issue id="IconMissingDensityFo>lder&q<uot; severity="ignore" / !-- Ignore the ObsoleteLay>outPa<ram issue in the specified fil>es -- < issue id="ObsoleteLayoutParam"> <ignore path="res/layout/activation.xml">; / < ignore< path="res/layout-xlarge/activation.xml" / >/issu<e> !-- Ignore >the Usele<ssLeaf issue in the specified file >-- < issue id=&<quot;UselessLeaf" ignore path="res/layou>t/mai<n.xml" / /issue !-- Change th>e< seve>rity of hardcoded strings to "error" -- issue id="HardcodedText" severity="error" / /lint
این مثال نشان میدهد که چگونه انواع مختلف مشکل گزارش میشوند. بررسی IconMissingDensityFolder به طور کامل غیرفعال است و بررسی ObsoleteLayoutParam فقط در فایلهای مشخص شده در اعلانهای <ignore ... /> پیوست غیرفعال است.
پیکربندی بررسی lint برای فایلهای منبع Kotlin، Java و XML
میتوانید بررسی lint را برای فایلهای منبع Kotlin، Java و XML خود در کادر گفتگوی Preferences غیرفعال کنید:
- در ویندوز به مسیر File > Settings یا در مک یا لینوکس به مسیر Android Studio > Preferences بروید.
- ویرایشگر > بازرسیها را انتخاب کنید.
- برای غیرفعال کردن، فایل منبع مربوطه را از حالت انتخاب خارج کنید.
شما میتوانید این موارد را برای IDE یا برای پروژههای جداگانه با انتخاب پروفایل مناسب تنظیم کنید.
پیکربندی بررسی lint در جاوا یا کاتلین
برای غیرفعال کردن بررسی lint به طور خاص برای یک کلاس یا متد در پروژه اندروید خود، حاشیهنویسی @SuppressLint را به آن کد اضافه کنید.
مثال زیر نشان میدهد که چگونه میتوانید بررسی lint برای مشکل NewApi را در متد onCreate غیرفعال کنید. ابزار lint همچنان به بررسی مشکل NewApi در سایر متدهای این کلاس ادامه میدهد.
کاتلین
@SuppressLint("NewApi") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main)
جاوا
@SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
همین کار را میتوان روی هر Composable انجام داد. قطعه کد زیر نشان میدهد که چگونه میتوانید بررسیهای NewApi را روی هر Composable غیرفعال کنید.
کاتلین
@SuppressLint("NewApi") @Composable fun MyComposable{ ... }
مثال زیر نحوه غیرفعال کردن بررسی lint برای مشکل ParserError در کلاس FeedProvider را نشان میدهد:
کاتلین
@SuppressLint("ParserError") class FeedProvider : ContentProvider() {
جاوا
@SuppressLint("ParserError") public class FeedProvider extends ContentProvider {
برای جلوگیری از بررسی تمام مشکلات مربوط به lint در فایل، از کلمه کلیدی all استفاده کنید:
کاتلین
@SuppressLint("all")
جاوا
@SuppressLint("all")
شما میتوانید از همین حاشیهنویسی برای جلوگیری از بررسیهای lint در هر تابع Composable استفاده کنید.
پیکربندی بررسی lint در XML
از ویژگی tools:ignore برای غیرفعال کردن بررسی lint برای بخشهای خاصی از فایلهای 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:ignor>e=&quo<t;UnusedResources" T@extView 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 در سطح ماژول انجام میشود.
قطعه کد زیر برخی از ویژگیهایی را که میتوانید پیکربندی کنید نشان میدهد:
کاتلین
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 که سطح شدت داده شده برای یک مشکل را لغو میکنند، ترتیب پیکربندی را رعایت میکنند. برای مثال، تنظیم یک مشکل به عنوان fatal در finalizeDsl() غیرفعال کردن آن در DSL اصلی را لغو میکند.
ایجاد یک خط پایه هشدار
شما میتوانید از مجموعه هشدارهای فعلی پروژه خود یک snapshot بگیرید، سپس از این snapshot به عنوان مبنایی برای بررسیهای آینده استفاده کنید تا فقط مشکلات جدید گزارش شوند. snapshot مبنا به شما امکان میدهد بدون نیاز به بازگشت و رسیدگی به همه مشکلات موجود، از lint برای رفع مشکل ساخت استفاده کنید.
برای ایجاد یک snapshot پایه، فایل build.gradle پروژه خود را به صورت زیر تغییر دهید:
کاتلین
android { lint { baseline = file("lint-baseline.xml") } }
گرووی
android { lintOptions { baseline file("lint-baseline.xml") } }
وقتی برای اولین بار این خط را اضافه میکنید، فایل lint-baseline.xml برای ایجاد خط پایه شما ایجاد میشود. از آن به بعد، ابزارها فقط فایل را برای تعیین خط پایه میخوانند. اگر میخواهید یک خط پایه جدید ایجاد کنید، فایل را به صورت دستی حذف کنید و دوباره lint را اجرا کنید تا دوباره آن را ایجاد کند.
سپس، با انتخاب Code > Inspect Code یا از خط فرمان به صورت زیر، 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 پروژه خود به شرح زیر، مشکلات مورد نظر برای اضافه کردن را مشخص کنید:
کاتلین
android { lint { checkOnly += "NewApi" + "HandlerLeak" baseline = file("lint-baseline.xml") } }
گرووی
android { lintOptions { checkOnly 'NewApi', 'HandlerLeak' baseline file("lint-baseline.xml") } }
اگر بعد از ایجاد خط مبنا، هشدارهای جدیدی به کدبیس اضافه کنید، lint فقط باگهای تازه معرفیشده را فهرست میکند.
هشدار اولیه
وقتی یک خط مبنا فعال میشود، یک هشدار اطلاعاتی دریافت میکنید که به شما میگوید یک یا چند مشکل به دلیل وجود در خط مبنا، فیلتر شدهاند. این هشدار به شما کمک میکند تا به خاطر داشته باشید که یک خط مبنا پیکربندی کردهاید و باید در مقطعی همه مشکلات را برطرف کنید.
این هشدار اطلاعاتی همچنین مشکلاتی را که دیگر گزارش نمیشوند، پیگیری میکند. این اطلاعات به شما اطلاع میدهد که آیا واقعاً مشکلات را برطرف کردهاید یا خیر، بنابراین میتوانید به صورت اختیاری خط مبنا را دوباره ایجاد کنید تا از بروز مجدد خطا بدون تشخیص جلوگیری شود.
نکته: خطوط پایه زمانی فعال میشوند که شما بازرسیها را در حالت دستهای در IDE اجرا میکنید، اما برای بررسیهای درون ویرایشگر که هنگام ویرایش یک فایل در پسزمینه اجرا میشوند، نادیده گرفته میشوند. دلیل این امر این است که خطوط پایه برای مواردی در نظر گرفته شدهاند که یک پایگاه کد تعداد زیادی هشدار موجود دارد، اما شما میخواهید مشکلات را به صورت محلی در حین لمس کد برطرف کنید.
بازرسیها را به صورت دستی اجرا کنید
برای اجرای دستی بازرسیهای پیکربندیشدهی lint و سایر بازرسیهای IDE، Code > Inspect Code را انتخاب کنید. نتایج بازرسی در پنجرهی Inspection Results ظاهر میشود.
دامنه و مشخصات بازرسی را تنظیم کنید
فایلهایی را که میخواهید تجزیه و تحلیل کنید ( دامنه بازرسی) و بازرسیهایی را که میخواهید اجرا کنید ( نمایه بازرسی) به شرح زیر انتخاب کنید:
- در نمای اندروید ، پروژه خود را باز کنید و پروژه، پوشه یا فایلی را که میخواهید آنالیز کنید، انتخاب کنید.
- از نوار منو، گزینه Code > Inspect Code را انتخاب کنید.
در پنجرهی «مشخص کردن محدودهی بازرسی» ، تنظیمات را مرور کنید.

شکل ۳. تنظیمات محدوده بازرسی را بررسی کنید. گزینههایی که در پنجرهی «محدودهی بازرسی را مشخص کنید» ظاهر میشوند، بسته به اینکه پروژه، پوشه یا فایل را انتخاب کردهاید، متفاوت هستند:
- وقتی یک پروژه، فایل یا دایرکتوری را انتخاب میکنید، کادر محاورهای Specify Inspection Scope مسیر پروژه، فایل یا دایرکتوری انتخابی شما را نمایش میدهد.
- وقتی بیش از یک پروژه، فایل یا دایرکتوری را انتخاب میکنید، کادر محاورهای Specify Inspection Scope یک دکمه رادیویی انتخاب شده برای فایلهای انتخاب شده نمایش میدهد.
برای تغییر موارد مورد بازرسی، یکی از دکمههای رادیویی دیگر را انتخاب کنید. برای شرح تمام فیلدهای ممکن در کادر محاورهای «محدوده بازرسی را مشخص کنید» به کادر محاورهای «محدوده بازرسی را مشخص کنید» مراجعه کنید.
- در قسمت مشخصات بازرسی ، مشخصاتی را که میخواهید استفاده کنید انتخاب کنید.
برای اجرای بازرسی، روی تأیید کلیک کنید.
شکل ۴ نتایج بررسی lint و سایر نتایج بررسی IDE را از اجرای Inspect Code نشان میدهد:

شکل ۴. نتایج بازرسی. برای مشاهدهی راهحل، یک مشکل را انتخاب کنید. در پنل نتایج بازرسی ، با باز کردن و انتخاب دستهها، انواع یا مشکلات خطا، نتایج بازرسی را مشاهده کنید.
پنجره گزارش بازرسی ، گزارش بازرسی را برای دسته، نوع یا مشکل انتخاب شده در پنجره نتایج بازرسی نمایش میدهد و نام و محل خطا را نیز نمایش میدهد. در صورت لزوم، گزارش بازرسی اطلاعات دیگری مانند خلاصه مشکل را نیز نمایش میدهد تا به شما در رفع مشکل کمک کند.
در نمای درختی پنل نتایج بازرسی ، روی یک دستهبندی، نوع یا مشکل کلیک راست کنید تا منوی زمینه نمایش داده شود.
بسته به زمینه، میتوانید:
- پرش به منبع.
- موارد انتخاب شده را حذف و اضافه کنید.
- مشکلات را سرکوب کنید.
- تنظیمات را ویرایش کنید.
- مدیریت هشدارهای بازرسی
- بازرسی را دوباره انجام دهید.
برای توضیحات دکمههای نوار ابزار، آیتمهای منوی زمینه و فیلدهای گزارش بازرسی، به پنجره ابزار نتایج بازرسی مراجعه کنید.
استفاده از یک محدوده سفارشی
از یکی از scopeهای سفارشی ارائه شده در اندروید استودیو به شرح زیر استفاده کنید:
- در پنجرهی «مشخص کردن محدودهی بازرسی» ، محدودهی سفارشی را انتخاب کنید.
برای نمایش گزینههای خود، روی لیست محدوده سفارشی کلیک کنید:

شکل ۵. محدوده سفارشی مورد نظر خود را انتخاب کنید. - همه مکانها: همه فایلها.
- فایلهای پروژه: تمام فایلهای موجود در پروژه فعلی.
- فایلهای منبع پروژه: فقط فایلهای منبع در پروژه فعلی.
- فایلهای تولیدی پروژه: فقط فایلهای تولیدی در پروژه فعلی.
- فایلهای آزمایشی پروژه: فقط فایلهای آزمایشی موجود در پروژه فعلی.
- Scratches و Consoles: فقط فایلهای Scratches و Consoles که در پروژه فعلی باز کردهاید.
- فایلهای اخیراً مشاهدهشده: فقط فایلهای اخیراً مشاهدهشده در پروژه فعلی.
- فایل فعلی: فقط فایل فعلی در پروژه فعلی شما. وقتی یک فایل یا پوشه انتخاب شده باشد، ظاهر میشود.
- دایرکتوری انتخابشده: فقط پوشهی فعلی در پروژهی فعلی شما. وقتی پوشهای را انتخاب کردهاید، ظاهر میشود.
- سلسله مراتب کلاس: وقتی این گزینه را انتخاب میکنید و روی تأیید کلیک میکنید، یک کادر محاورهای با تمام کلاسهای پروژه فعلی ظاهر میشود. در این کادر محاورهای، از فیلد جستجو بر اساس نام برای فیلتر کردن و انتخاب کلاسها برای بازرسی استفاده کنید. اگر لیست کلاسها را فیلتر نکنید، بازرسی کد تمام کلاسها را بازرسی میکند.
- روی تأیید کلیک کنید.
اگر VCS برای پروژه پیکربندی شده باشد، گزینههایی نیز برای محدود کردن جستجو به فایلهایی که تغییر یافتهاند وجود دارد.
ایجاد یک محدوده سفارشی
وقتی میخواهید مجموعهای از فایلها و دایرکتوریها را که تحت پوشش هیچ یک از حوزههای سفارشی موجود نیستند، بررسی کنید، میتوانید یک حوزه سفارشی ایجاد کنید:
- در پنجرهی «مشخص کردن محدودهی بازرسی» ، محدودهی سفارشی را انتخاب کنید.
روی سه نقطه بعد از لیست Custom Scope کلیک کنید.

شکل ۶. پنجرهی «محدودهی بازرسی را مشخص کنید». کادر محاورهای Scopes ظاهر میشود.

شکل ۷. ایجاد یک محدوده سفارشی. - کلیک کنید
برای تعریف یک محدوده جدید، روی دکمه در گوشه بالا سمت چپ کادر محاورهای کلیک کنید. - در لیست افزودن محدوده که ظاهر میشود، گزینه محلی (Local) را انتخاب کنید.
هر دو محدوده محلی و مشترک در داخل پروژه برای ویژگی Inspect Code استفاده میشوند. یک محدوده مشترک همچنین میتواند با سایر ویژگیهای پروژه که دارای فیلد محدوده هستند، استفاده شود. به عنوان مثال، وقتی روی ویرایش تنظیمات کلیک میکنید
برای تغییر تنظیمات مربوط به Find Usages ، کادر محاورهای حاصل دارای یک فیلد Scope است که میتوانید در آن یک Scope مشترک را انتخاب کنید. 
شکل ۸. یک محدوده مشترک را از پنجرهی «یافتن کاربردها» انتخاب کنید. - به محدوده یک نام بدهید و روی تأیید کلیک کنید.
پنل سمت راست پنجرهی Scopes شامل گزینههایی است که به شما امکان میدهد محدودهی سفارشی را تعریف کنید.
- از لیست، پروژه را انتخاب کنید.
لیستی از پروژههای موجود ظاهر میشود.
توجه: شما میتوانید برای پروژهها یا بستهها، محدوده سفارشی ایجاد کنید. مراحل یکسان هستند.
پوشههای پروژه را باز کنید، آنچه را که میخواهید به محدوده سفارشی اضافه کنید انتخاب کنید و انتخاب کنید که آیا آن را شامل شود یا خیر.

شکل ۹. تعریف یک محدوده سفارشی. - شامل کردن : این پوشه و فایلهای آن را شامل میشود، اما هیچ یک از زیرپوشههای آن را شامل نمیشود.
- به صورت بازگشتی اضافه کنید : این پوشه و فایلهای آن و همچنین زیرپوشهها و فایلهای آنها را اضافه کنید.
- حذف : این پوشه و فایلهای آن را حذف میکند، اما هیچ یک از زیرپوشههای آن را حذف نمیکند.
- حذف به صورت بازگشتی : این پوشه و فایلهای آن و همچنین زیرپوشهها و فایلهای آنها را حذف میکند.
شکل ۱۰ نشان میدهد که پوشه اصلی گنجانده شده است و پوشههای java و res به صورت بازگشتی گنجانده شدهاند. رنگ آبی نشاندهنده پوشهای است که تا حدی گنجانده شده است و رنگ سبز نشاندهنده پوشهها و فایلهایی است که به صورت بازگشتی گنجانده شدهاند.

شکل ۱۰. الگوی نمونه برای یک محدوده سفارشی. - اگر پوشه java را انتخاب کنید و روی Exclude Recursively کلیک کنید، هایلایت سبز روی پوشه java و تمام پوشهها و فایلهای زیر آن از بین میرود.
- اگر فایل MainActivity.kt که با رنگ سبز هایلایت شده را انتخاب کنید و روی Exclude کلیک کنید، MainActivity.kt دیگر سبز هایلایت نمیشود، اما هر چیز دیگری که در پوشه java قرار دارد، سبز باقی میماند.
- روی تأیید کلیک کنید. محدوده سفارشی در پایین لیست ظاهر میشود.
بررسی و ویرایش پروفایلهای بازرسی
اندروید استودیو مجموعهای از پروفایلهای lint و سایر پروفایلهای بازرسی را دارد که از طریق بهروزرسانیهای اندروید بهروزرسانی میشوند. میتوانید از این پروفایلها به همان شکلی که هستند استفاده کنید یا نام، توضیحات، شدت و دامنه آنها را ویرایش کنید. همچنین میتوانید کل گروههای پروفایل یا پروفایلهای جداگانه را در یک گروه فعال و غیرفعال کنید.
برای دسترسی به تنظیمات بازرسیها :
- در ویندوز، مسیر File > Settings. یا در مک یا لینوکس، مسیر Android Studio > Preferences را انتخاب کنید.
- ویرایشگر > بازرسیها را انتخاب کنید.
پنجرهی بازرسیها (Inspections) فهرستی از بازرسیهای پشتیبانیشده و توضیحات آنها را نشان میدهد.

شکل ۱۱. بازرسیهای پشتیبانیشده و توضیحات آنها. برای تغییر بین بازرسیهای پیشفرض (اندروید استودیو) و پیشفرض پروژه (پروژه فعال)، لیست پروفایل را انتخاب کنید.
برای اطلاعات بیشتر، به صفحه مدیریت پروفایلهای IntelliJ مراجعه کنید.
در فهرست بازرسیها (Inspections) در پنل سمت چپ، یک دستهبندی پروفایل سطح بالا را انتخاب کنید یا یک گروه را گسترش دهید و یک پروفایل خاص را انتخاب کنید.
وقتی یک دسته پروفایل را انتخاب میکنید، میتوانید تمام بازرسیهای آن دسته را به عنوان یک بازرسی واحد ویرایش کنید.
- نمایش اقدامات طرحواره را انتخاب کنید
لیست برای کپی، تغییر نام، اضافه کردن توضیحات، صادرات و واردات بازرسیها. - وقتی کارتان تمام شد، روی تأیید کلیک کنید.