علاوه بر آزمایشهای ساختمانی برای اطمینان از اینکه برنامه شما الزامات عملکردی خود را برآورده میکند، مهم است که کد را از طریق ابزار lint نیز اجرا کنید تا مطمئن شوید کد شما هیچ مشکل ساختاری ندارد. ابزار lint به یافتن کدهایی با ساختار ضعیف کمک می کند که می تواند بر قابلیت اطمینان و کارایی برنامه های Android شما تأثیر بگذارد و نگهداری کد شما را سخت تر کند. اکیداً توصیه می شود قبل از انتشار برنامه خود، خطاهایی را که پرز تشخیص می دهد اصلاح کنید.
به عنوان مثال، اگر فایلهای منبع XML شما حاوی فضاهای نام استفاده نشده باشد، این فضا اشغال میکند و نیاز به پردازش غیر ضروری دارد. سایر مسائل ساختاری، مانند استفاده از عناصر منسوخ یا فراخوانهای API که توسط نسخههای API هدف پشتیبانی نمیشوند، ممکن است منجر به عدم اجرای صحیح کد شوند. لینت می تواند به شما در رفع این مشکلات کمک کند.
برای بهبود عملکرد پردهبندی، میتوانید حاشیهنویسی را نیز به کد خود اضافه کنید .
نمای کلی
Android Studio یک ابزار اسکن کد به نام lint ارائه میکند که میتواند به شما کمک کند بدون نیاز به اجرای برنامه یا نوشتن موارد تست، مشکلات مربوط به کیفیت ساختاری کد خود را شناسایی و اصلاح کنید. هر مشکلی که توسط این ابزار شناسایی میشود، با یک پیام توصیفی و یک سطح شدت گزارش میشود تا بتوانید بهبودهای حیاتی را که باید انجام شوند، اولویتبندی کنید. همچنین می توانید سطح شدت یک مشکل را کاهش دهید تا مسائلی را که به پروژه شما مرتبط نیستند نادیده بگیرید یا برای برجسته کردن مشکلات خاص، سطح شدت را افزایش دهید.
ابزار lint فایلهای منبع پروژه اندروید شما را از نظر اشکالات احتمالی و بهبودهای بهینهسازی از نظر صحت، امنیت، عملکرد، قابلیت استفاده، دسترسی و بینالمللی شدن بررسی میکند. هنگام استفاده از Android Studio، بازرسی های پیکربندی شده و IDE هنگام ساخت برنامه اجرا می شود. با این حال، همانطور که در این صفحه توضیح داده شده است، می توانید بازرسی ها را به صورت دستی اجرا کنید یا از خط فرمان، lint را اجرا کنید .
هنگامی که از Android Studio استفاده می کنید، ابزار لینت داخلی کد شما را بررسی می کند. شما می توانید هشدارها و خطاها را به دو صورت مشاهده کنید:
- به عنوان متن پاپ آپ در پنجره ویرایشگر. هنگامی که lint مشکلی را پیدا می کند، کد مشکل را به رنگ زرد برجسته می کند. برای مسائل جدی تر، زیر کد را با رنگ قرمز خط می کشد.
- وقتی روی Code > Inspect Code کلیک میکنید، در پنجره Inspection Results .
توجه: وقتی کد شما در Android Studio کامپایل میشود، بازرسیهای کد IntelliJ اضافی برای سادهتر کردن بررسی کد اجرا میشود.
شکل 1 نشان می دهد که چگونه ابزار lint فایل های منبع برنامه را پردازش می کند.
- فایل های منبع برنامه
- فایلهای منبع شامل فایلهایی هستند که پروژه اندروید شما را تشکیل میدهند، از جمله فایلهای Kotlin، Java، و XML، نمادها و فایلهای پیکربندی ProGuard.
- فایل
lint.xml
- یک فایل پیکربندی که میتوانید از آن برای تعیین هر گونه بررسی لنت که میخواهید حذف کنید و برای سفارشی کردن سطوح شدت مشکل استفاده کنید.
- ابزار پرز
- یک ابزار اسکن کد ایستا که می توانید در پروژه اندروید خود از خط فرمان یا در Android Studio اجرا کنید. ابزار lint مشکلات کد ساختاری را بررسی می کند که می تواند بر کیفیت و عملکرد برنامه اندروید شما تأثیر بگذارد.
- نتایج بررسی پرز
- می توانید نتایج را از lint در کنسول یا پنجره Inspection Results در Android Studio مشاهده کنید. اگر
lint
از خط فرمان اجرا کنید، نتایج در پوشهbuild/
نوشته می شود. برای جزئیات بیشتر، به بخش مربوط به اجرای بازرسی به صورت دستی مراجعه کنید.
lint را از خط فرمان اجرا کنید
اگر از Android Studio یا Gradle استفاده می کنید، با وارد کردن یکی از دستورات زیر از دایرکتوری ریشه پروژه خود، از بسته بندی 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 نشان داده شده است.
اگر پروژه شما شامل انواع ساخت است، lint فقط نوع پیش فرض را بررسی می کند. اگر میخواهید lint را روی یک نوع متفاوت اجرا کنید، باید نام نوع را با حروف بزرگ بنویسید و پیشوند آن را با lint
قرار دهید.
./gradlew lintRelease
برای کسب اطلاعات بیشتر در مورد اجرای وظایف Gradle از خط فرمان، ساختن برنامه خود را از خط فرمان بخوانید.
لینت را با استفاده از ابزار مستقل اجرا کنید
اگر از Android Studio یا Gradle استفاده نمیکنید، ابزارهای خط فرمان Android SDK را برای استفاده از ابزار مستقل لینت نصب کنید. ابزار lint را در android_sdk /cmdline-tools/ version /bin/lint
پیدا کنید.
توجه: اگر بخواهید ابزار مستقل را روی یک پروژه Gradle اجرا کنید، خطا می دهد. همیشه باید از gradle lint
(در ویندوز) یا ./gradlew lint
(در macOS یا Linux) برای اجرای lint در پروژه Gradle استفاده کنید.
برای اجرای lint در برابر لیستی از فایل ها در دایرکتوری پروژه، از دستور زیر استفاده کنید:
lint [flags] <project directory>
به عنوان مثال، می توانید دستور زیر را برای اسکن فایل های زیر پوشه myproject
و زیر شاخه های آن صادر کنید. شناسه مشکل MissingPrefix
به lint میگوید که فقط ویژگیهای XML را اسکن کند که پیشوند فضای نام Android را ندارند.
lint --check MissingPrefix myproject
برای مشاهده لیست کامل پرچم ها و آرگومان های خط فرمان پشتیبانی شده توسط ابزار، از دستور زیر استفاده کنید:
lint --help
مثال زیر خروجی کنسول را هنگام اجرای دستور lint در برابر پروژه ای به نام زلزله نشان می دهد:
$ 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
.
پرز را برای سرکوب هشدارها پیکربندی کنید
بهطور پیشفرض، هنگامی که اسکن پرز را اجرا میکنید، ابزار تمام مشکلاتی را که لینت پشتیبانی میکند بررسی میکند. همچنین میتوانید مشکلات را برای بررسی لینت محدود کنید، و میتوانید سطوح شدت را برای مشکلات تعیین کنید. برای مثال، میتوانید بررسی پرزها را برای مسائل خاصی که به پروژه شما مرتبط نیستند، متوقف کنید، و میتوانید پرزها را طوری پیکربندی کنید که مسائل غیر بحرانی را در سطح شدت پایینتر گزارش کند.
سطوح شدت عبارتند از:
-
enable
-
disable
یاignore
-
informational
-
warning
-
error
-
fatal
می توانید بررسی پرز را برای سطوح مختلف پیکربندی کنید:
- جهانی (کل پروژه)
- ماژول پروژه
- ماژول تولید
- ماژول تست
- فایل ها را باز کنید
- سلسله مراتب طبقاتی
- محدوده سیستم کنترل نسخه (VCS).
فایل lint را پیکربندی کنید
شما می توانید تنظیمات برگزیده بررسی پرز خود را در فایل lint.xml
مشخص کنید. اگر این فایل را به صورت دستی ایجاد می کنید، آن را در فهرست اصلی پروژه اندروید خود قرار دهید.
فایل lint.xml
از یک تگ والد <lint>
تشکیل شده است که حاوی یک یا چند عنصر <issue>
فرزند است. Lint یک مقدار مشخصه id
منحصر به فرد برای هر <issue>
تعریف می کند:
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --> </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 ... />
غیرفعال است.
بررسی پرز برای فایلهای منبع Kotlin، Java و XML را پیکربندی کنید
میتوانید بررسی پرز برای فایلهای منبع Kotlin، Java و XML خود را در گفتگوی Preferences خاموش کنید:
- File > Settings (در ویندوز) یا Android Studio > Preferences (در macOS یا Linux) را انتخاب کنید.
- ویرایشگر > بازرسی ها را انتخاب کنید.
- برای غیرفعال کردن، فایل منبع مناسب را از حالت انتخاب خارج کنید.
می توانید با انتخاب نمایه مناسب، این موارد را برای IDE یا برای پروژه های جداگانه تنظیم کنید.
بررسی پرزها را در جاوا یا کاتلین پیکربندی کنید
برای غیرفعال کردن بررسی پرز به طور خاص برای یک کلاس یا متد در پروژه Android خود، حاشیه نویسی @SuppressLint
را به آن کد اضافه کنید.
مثال زیر نشان می دهد که چگونه می توانید بررسی پرزها را برای مشکل 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{ ... }
مثال زیر نحوه غیرفعال کردن بررسی پرز برای مشکل ParserError
در کلاس FeedProvider
را نشان می دهد:
کاتلین
@SuppressLint("ParserError") class FeedProvider : ContentProvider() {
جاوا
@SuppressLint("ParserError") public class FeedProvider extends ContentProvider {
برای جلوگیری از بررسی همه مشکلات پرز در فایل، از کلمه کلیدی all
استفاده کنید:
کاتلین
@SuppressLint("all")
جاوا
@SuppressLint("all")
شما می توانید از همان حاشیه نویسی برای سرکوب بررسی پرزها در هر تابع Composable استفاده کنید.
بررسی پرز در XML را پیکربندی کنید
از ویژگی tools:ignore
برای غیرفعال کردن بررسی پرز برای بخش های خاصی از فایل های XML خود استفاده کنید. مقدار فضای نام زیر را در فایل lint.xml
قرار دهید تا ابزار lint ویژگی را بشناسد:
namespace xmlns:tools="http://schemas.android.com/tools"
مثال زیر نشان می دهد که چگونه می توانید بررسی پرزها را برای مشکل 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"
برای جلوگیری از بررسی تمام مشکلات پرز در عنصر XML، از کلمه کلیدی all
استفاده کنید:
tools:ignore="all"
گزینه های پرز را با Gradle پیکربندی کنید
افزونه Android برای Gradle به شما امکان میدهد تا با استفاده از بلوک lint{}
در فایل build.gradle
در سطح ماژول، برخی از گزینههای lint را پیکربندی کنید، مانند اینکه کدام چکها اجرا یا نادیده گرفته شوند.
قطعه کد زیر برخی از ویژگی هایی را که می توانید پیکربندی کنید نشان می دهد:
کاتلین
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 } } ...
همه روشهای پرز که سطح شدت معین یک مشکل را نادیده میگیرند، ترتیب پیکربندی را رعایت میکنند. به عنوان مثال، تعیین یک مشکل به عنوان کشنده در finalizeDsl()
غیرفعال کردن آن را در DSL اصلی لغو می کند.
یک خط پایه هشدار ایجاد کنید
میتوانید از مجموعه هشدارهای فعلی پروژه خود یک عکس بگیرید، سپس از آن بهعنوان پایهای برای اجرای بازرسیهای آینده استفاده کنید تا فقط مسائل جدید گزارش شوند. عکس فوری پایه به شما امکان می دهد بدون نیاز به بازگشت به عقب و رفع تمام مشکلات موجود، شروع به استفاده از lint برای شکست ساختن کنید.
برای ایجاد یک اسنپ شات پایه، فایل 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 ظاهر می شوند بسته به اینکه پروژه، پوشه یا فایلی را انتخاب کرده اید متفاوت است:
- هنگامی که یک پروژه، فایل یا دایرکتوری را انتخاب می کنید، کادر محاوره ای Specify Inspection Scope مسیر پروژه، فایل یا دایرکتوری را که انتخاب کرده اید نمایش می دهد.
- هنگامی که بیش از یک پروژه، فایل یا دایرکتوری را انتخاب می کنید، کادر محاوره ای Specify Inspection Scope یک دکمه رادیویی انتخاب شده برای فایل های انتخاب شده را نمایش می دهد.
برای تغییر موارد بازرسی، یکی از دکمه های رادیویی دیگر را انتخاب کنید. برای توضیح تمام فیلدهای ممکن در گفتگوی Specify Inspection Scope، به گفتگوی Specify Inspection Scope مراجعه کنید.
- در قسمت نمایه بازرسی ، نمایه ای را که می خواهید استفاده کنید انتخاب کنید.
برای اجرای بازرسی روی OK کلیک کنید.
شکل 4 لینت و سایر نتایج بازرسی IDE را از اجرای Inspect Code نشان می دهد:
در قسمت Inspection Results ، با گسترش و انتخاب دستهها، انواع یا مسائل خطا، نتایج بازرسی را مشاهده کنید.
پنجره Inspection Report گزارش بازرسی را برای دسته خطا، نوع یا مشکل انتخاب شده در پنجره Inspection Results نمایش می دهد و نام و محل خطا را نمایش می دهد. در صورت لزوم، گزارش بازرسی اطلاعات دیگری مانند خلاصه مشکل را نمایش میدهد تا به شما در رفع مشکل کمک کند.
در نمای درختی پنجره Inspection Results ، روی یک دسته، نوع یا موضوع کلیک راست کنید تا منوی زمینه نمایش داده شود.
بسته به زمینه، می توانید:
- پرش به منبع
- موارد منتخب را حذف و شامل شود.
- مشکلات را سرکوب کنید.
- تنظیمات را ویرایش کنید.
- هشدارهای بازرسی را مدیریت کنید
- بازرسی را دوباره اجرا کنید
برای توضیحات دکمههای نوار ابزار، آیتمهای منوی زمینه، و فیلدهای گزارش بازرسی، پنجره ابزار نتایج بازرسی را ببینید.
از یک محدوده سفارشی استفاده کنید
از یکی از محدوده های سفارشی ارائه شده در Android Studio به شرح زیر استفاده کنید:
- در گفتگوی Specify Inspection Scope ، محدوده سفارشی را انتخاب کنید.
برای نمایش گزینه های خود، روی لیست محدوده سفارشی کلیک کنید:
- همه مکان ها: همه فایل ها.
- فایل های پروژه: تمام فایل های موجود در پروژه فعلی.
- فایل های منبع پروژه: فقط فایل های منبع پروژه فعلی.
- فایل های تولید پروژه: فقط فایل های تولیدی در پروژه فعلی.
- فایل های تست پروژه: فقط فایل های آزمایشی در پروژه فعلی.
- خراش ها و کنسول ها: فقط فایل های خراش و کنسول هایی که در پروژه فعلی دارید باز می شوند.
- Recently Viewed Files: فقط فایل هایی که اخیراً در پروژه فعلی مشاهده شده اند.
- فایل فعلی: فقط فایل فعلی در پروژه فعلی شما. زمانی که فایل یا پوشه ای را انتخاب کرده اید ظاهر می شود.
- Selected Directory: فقط پوشه فعلی در پروژه فعلی شما. وقتی پوشه ای را انتخاب کرده اید ظاهر می شود.
- سلسله مراتب کلاس: هنگامی که این گزینه را انتخاب کرده و روی OK کلیک می کنید، یک گفتگو با تمام کلاس های پروژه فعلی ظاهر می شود. در گفتگو، از قسمت Search by Name برای فیلتر کردن و انتخاب کلاسهای مورد بازرسی استفاده کنید. اگر لیست کلاس ها را فیلتر نکنید، بازرسی کد همه کلاس ها را بررسی می کند.
اگر یک VCS برای پروژه پیکربندی شدهاید، گزینههایی برای محدود کردن جستجو فقط به فایلهایی که اصلاح شدهاند نیز وجود دارد.
- روی OK کلیک کنید.
یک محدوده سفارشی ایجاد کنید
وقتی میخواهید مجموعهای از فایلها و دایرکتوریها را که توسط هیچ یک از حوزههای سفارشی موجود در حال حاضر پوشش داده نمیشوند، بررسی کنید، میتوانید یک محدوده سفارشی ایجاد کنید:
- در گفتگوی Specify Inspection Scope ، محدوده سفارشی را انتخاب کنید.
روی سه نقطه بعد از لیست Custom Scope کلیک کنید.
گفتگوی Scopes ظاهر می شود.
- را کلیک کنید در گوشه سمت چپ بالای دیالوگ را فشار دهید تا یک محدوده جدید تعریف کنید.
- در لیست Add Scope که ظاهر می شود، Local را انتخاب کنید.
هر دو حوزه محلی و اشتراکی در داخل پروژه برای ویژگی Inspect Code استفاده می شوند. یک Shared Scope همچنین میتواند با سایر ویژگیهای پروژه که دارای یک فیلد scope هستند استفاده شود. به عنوان مثال، وقتی روی ویرایش تنظیمات کلیک می کنید برای تغییر تنظیمات Find Usages ، گفتگوی حاصل دارای یک فیلد Scope است که در آن می توانید یک محدوده مشترک را انتخاب کنید.
- دامنه را یک نام بگذارید و روی OK کلیک کنید.
صفحه سمت راست گفتگوی Scopes با گزینه هایی پر می شود که به شما امکان می دهد محدوده سفارشی را تعریف کنید.
- از لیست، پروژه را انتخاب کنید.
لیستی از پروژه های موجود ظاهر می شود.
توجه: می توانید محدوده سفارشی برای پروژه ها یا بسته ها ایجاد کنید. مراحل یکسان است.
پوشه های پروژه را گسترش دهید، آنچه را که می خواهید به محدوده سفارشی اضافه کنید انتخاب کنید و انتخاب کنید که آیا شامل یا حذف شود.
- Include : شامل این پوشه و فایل های آن می شود، اما هیچ یک از زیرپوشه های آن را شامل نمی شود.
- Include Recursively : شامل این پوشه و فایل های آن و همچنین زیرپوشه ها و فایل های آن می شود.
- Exclude : این پوشه و فایل های آن را حذف کنید، اما هیچ یک از زیرپوشه های آن را حذف نکنید.
- Exclude Recursively : این پوشه و فایلهای آن و همچنین زیرپوشهها و فایلهای آن را حذف کنید.
شکل 10 نشان می دهد که پوشه اصلی گنجانده شده است و پوشه های java و res به صورت بازگشتی گنجانده شده اند. آبی نشاندهنده یک پوشه تا حدی است و سبز نشاندهنده پوشهها و فایلهای حاوی بازگشتی است.
- اگر پوشه java را انتخاب کنید و Exclude Recursively را کلیک کنید، هایلایت سبز روی پوشه جاوا و تمام پوشه ها و فایل های زیر آن حذف می شود.
- اگر فایل MainActivity.kt را که با رنگ سبز مشخص شده انتخاب کنید و Exclude را کلیک کنید، MainActivity.kt دیگر سبز رنگ نمی شود، اما بقیه موارد زیر پوشه جاوا سبز باقی می ماند.
- روی OK کلیک کنید. محدوده سفارشی در پایین لیست ظاهر می شود.
نمایه های بازرسی را بررسی و ویرایش کنید
اندروید استودیو مجموعهای از پرزها و دیگر پروفایلهای بازرسی دارد که از طریق بهروزرسانیهای اندروید بهروزرسانی میشوند. می توانید از این نمایه ها همانطور که هستند استفاده کنید یا نام، توضیحات، شدت و دامنه آنها را ویرایش کنید. همچنین میتوانید کل گروههای پروفایل یا پروفایلهای فردی را در یک گروه فعال و غیرفعال کنید.
برای دسترسی به تنظیمات بازرسی :
- فایل > تنظیمات را انتخاب کنید. (در ویندوز) یا Android Studio > Preferences (در macOS یا Linux).
- ویرایشگر > بازرسی ها را انتخاب کنید.
برای جابهجایی بین بازرسیهای پیشفرض (اندروید استودیو) و پروژه پیشفرض (پروژه فعال)، فهرست نمایه را انتخاب کنید.
برای اطلاعات بیشتر، به صفحه پروفایل های IntelliJ Manage مراجعه کنید.
در فهرست Inspections در سمت چپ، یک دسته پروفایل سطح بالا را انتخاب کنید یا یک گروه را گسترش دهید و یک نمایه خاص را انتخاب کنید.
هنگامی که یک دسته نمایه را انتخاب می کنید، می توانید تمام بازرسی های آن دسته را به عنوان یک بازرسی واحد ویرایش کنید.
- Show Schema Actions را انتخاب کنید فهرستی برای کپی کردن، تغییر نام، اضافه کردن توضیحات، صادرات و بازرسی واردات.
- وقتی کارتان تمام شد، روی OK کلیک کنید.
صفحه بازرسی لیستی از بازرسی های پشتیبانی شده و توضیحات آنها را نشان می دهد.
علاوه بر آزمایشهای ساختمانی برای اطمینان از اینکه برنامه شما الزامات عملکردی خود را برآورده میکند، مهم است که کد را از طریق ابزار lint نیز اجرا کنید تا مطمئن شوید کد شما هیچ مشکل ساختاری ندارد. ابزار lint به یافتن کدهایی با ساختار ضعیف کمک می کند که می تواند بر قابلیت اطمینان و کارایی برنامه های Android شما تأثیر بگذارد و نگهداری کد شما را سخت تر کند. اکیداً توصیه می شود قبل از انتشار برنامه خود، خطاهایی را که پرز تشخیص می دهد اصلاح کنید.
به عنوان مثال، اگر فایلهای منبع XML شما حاوی فضاهای نام استفاده نشده باشد، این فضا اشغال میکند و نیاز به پردازش غیر ضروری دارد. سایر مسائل ساختاری، مانند استفاده از عناصر منسوخ یا فراخوانهای API که توسط نسخههای API هدف پشتیبانی نمیشوند، ممکن است منجر به عدم اجرای صحیح کد شوند. لینت می تواند به شما در رفع این مشکلات کمک کند.
برای بهبود عملکرد پردهبندی، میتوانید حاشیهنویسی را نیز به کد خود اضافه کنید .
نمای کلی
Android Studio یک ابزار اسکن کد به نام lint ارائه میکند که میتواند به شما کمک کند بدون نیاز به اجرای برنامه یا نوشتن موارد تست، مشکلات مربوط به کیفیت ساختاری کد خود را شناسایی و اصلاح کنید. هر مشکلی که توسط این ابزار شناسایی میشود، با یک پیام توصیفی و یک سطح شدت گزارش میشود تا بتوانید بهبودهای حیاتی را که باید انجام شوند، اولویتبندی کنید. همچنین می توانید سطح شدت یک مشکل را کاهش دهید تا مسائلی را که به پروژه شما مرتبط نیستند نادیده بگیرید یا برای برجسته کردن مشکلات خاص، سطح شدت را افزایش دهید.
ابزار lint فایلهای منبع پروژه اندروید شما را از نظر اشکالات احتمالی و بهبودهای بهینهسازی از نظر صحت، امنیت، عملکرد، قابلیت استفاده، دسترسی و بینالمللی شدن بررسی میکند. هنگام استفاده از Android Studio، بازرسی های پیکربندی شده و IDE هنگام ساخت برنامه اجرا می شود. با این حال، همانطور که در این صفحه توضیح داده شده است، می توانید بازرسی ها را به صورت دستی اجرا کنید یا از خط فرمان، lint را اجرا کنید .
هنگامی که از Android Studio استفاده می کنید، ابزار لینت داخلی کد شما را بررسی می کند. شما می توانید هشدارها و خطاها را به دو صورت مشاهده کنید:
- به عنوان متن پاپ آپ در پنجره ویرایشگر. هنگامی که lint مشکلی را پیدا می کند، کد مشکل را به رنگ زرد برجسته می کند. برای مسائل جدی تر، زیر کد را با رنگ قرمز خط می کشد.
- وقتی روی Code > Inspect Code کلیک میکنید، در پنجره Inspection Results .
توجه: وقتی کد شما در Android Studio کامپایل میشود، بازرسیهای کد IntelliJ اضافی برای سادهتر کردن بررسی کد اجرا میشود.
شکل 1 نشان می دهد که چگونه ابزار lint فایل های منبع برنامه را پردازش می کند.
- فایل های منبع برنامه
- فایلهای منبع شامل فایلهایی هستند که پروژه اندروید شما را تشکیل میدهند، از جمله فایلهای Kotlin، Java، و XML، نمادها و فایلهای پیکربندی ProGuard.
- فایل
lint.xml
- یک فایل پیکربندی که میتوانید از آن برای تعیین هر گونه بررسی لنت که میخواهید حذف کنید و برای سفارشی کردن سطوح شدت مشکل استفاده کنید.
- ابزار پرز
- یک ابزار اسکن کد ایستا که می توانید در پروژه اندروید خود از خط فرمان یا در Android Studio اجرا کنید. ابزار lint مشکلات کد ساختاری را بررسی می کند که می تواند بر کیفیت و عملکرد برنامه اندروید شما تأثیر بگذارد.
- نتایج بررسی پرز
- می توانید نتایج را از lint در کنسول یا پنجره Inspection Results در Android Studio مشاهده کنید. اگر
lint
از خط فرمان اجرا کنید، نتایج در پوشهbuild/
نوشته می شود. برای جزئیات بیشتر، به بخش مربوط به اجرای بازرسی به صورت دستی مراجعه کنید.
lint را از خط فرمان اجرا کنید
اگر از Android Studio یا Gradle استفاده می کنید، با وارد کردن یکی از دستورات زیر از دایرکتوری ریشه پروژه خود، از بسته بندی 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 نشان داده شده است.
اگر پروژه شما شامل انواع ساخت است، lint فقط نوع پیش فرض را بررسی می کند. اگر میخواهید lint را روی یک نوع متفاوت اجرا کنید، باید نام نوع را با حروف بزرگ بنویسید و پیشوند آن را با lint
قرار دهید.
./gradlew lintRelease
برای کسب اطلاعات بیشتر در مورد اجرای وظایف Gradle از خط فرمان، ساختن برنامه خود را از خط فرمان بخوانید.
لینت را با استفاده از ابزار مستقل اجرا کنید
اگر از Android Studio یا Gradle استفاده نمی کنید، ابزارهای خط فرمان Android SDK را برای استفاده از ابزار مستقل لینت نصب کنید. ابزار lint را در android_sdk /cmdline-tools/ version /bin/lint
پیدا کنید.
توجه: اگر بخواهید ابزار مستقل را روی یک پروژه Gradle اجرا کنید، خطا می دهد. همیشه باید از gradle lint
(در ویندوز) یا ./gradlew lint
(در macOS یا Linux) برای اجرای lint در پروژه Gradle استفاده کنید.
برای اجرای lint در برابر لیستی از فایل ها در دایرکتوری پروژه، از دستور زیر استفاده کنید:
lint [flags] <project directory>
به عنوان مثال، می توانید دستور زیر را برای اسکن فایل های زیر پوشه myproject
و زیر شاخه های آن صادر کنید. شناسه مشکل MissingPrefix
به lint میگوید که فقط ویژگیهای XML را اسکن کند که پیشوند فضای نام Android را ندارند.
lint --check MissingPrefix myproject
برای مشاهده لیست کامل پرچم ها و آرگومان های خط فرمان پشتیبانی شده توسط ابزار، از دستور زیر استفاده کنید:
lint --help
مثال زیر خروجی کنسول را هنگام اجرای دستور lint در برابر پروژه ای به نام زلزله نشان می دهد:
$ 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
.
پرز را برای سرکوب هشدارها پیکربندی کنید
بهطور پیشفرض، هنگامی که اسکن پرز را اجرا میکنید، ابزار تمام مشکلاتی را که لینت پشتیبانی میکند بررسی میکند. همچنین میتوانید مشکلات را برای بررسی لینت محدود کنید، و میتوانید سطوح شدت را برای مشکلات تعیین کنید. برای مثال، میتوانید بررسی پرزها را برای مسائل خاصی که به پروژه شما مرتبط نیستند، متوقف کنید، و میتوانید پرزها را طوری پیکربندی کنید که مسائل غیر بحرانی را در سطح شدت پایینتر گزارش کند.
سطوح شدت عبارتند از:
-
enable
-
disable
یاignore
-
informational
-
warning
-
error
-
fatal
می توانید بررسی پرز را برای سطوح مختلف پیکربندی کنید:
- جهانی (کل پروژه)
- ماژول پروژه
- ماژول تولید
- ماژول تست
- فایل ها را باز کنید
- سلسله مراتب طبقاتی
- محدوده سیستم کنترل نسخه (VCS).
فایل lint را پیکربندی کنید
شما می توانید تنظیمات برگزیده بررسی پرز خود را در فایل lint.xml
مشخص کنید. اگر این فایل را به صورت دستی ایجاد می کنید، آن را در فهرست اصلی پروژه اندروید خود قرار دهید.
فایل lint.xml
از یک تگ والد <lint>
تشکیل شده است که حاوی یک یا چند عنصر <issue>
فرزند است. Lint یک مقدار مشخصه id
منحصر به فرد برای هر <issue>
تعریف می کند:
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --> </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 ... />
غیرفعال است.
بررسی پرز برای فایلهای منبع Kotlin، Java و XML را پیکربندی کنید
میتوانید بررسی پرز برای فایلهای منبع Kotlin، Java و XML خود را در گفتگوی Preferences خاموش کنید:
- File > Settings (در ویندوز) یا Android Studio > Preferences (در macOS یا Linux) را انتخاب کنید.
- ویرایشگر > بازرسی ها را انتخاب کنید.
- برای غیرفعال کردن، فایل منبع مناسب را از حالت انتخاب خارج کنید.
می توانید با انتخاب نمایه مناسب، این موارد را برای IDE یا برای پروژه های جداگانه تنظیم کنید.
بررسی پرزها را در جاوا یا کاتلین پیکربندی کنید
برای غیرفعال کردن بررسی پرز به طور خاص برای یک کلاس یا متد در پروژه Android خود، حاشیه نویسی @SuppressLint
را به آن کد اضافه کنید.
مثال زیر نشان می دهد که چگونه می توانید بررسی پرزها را برای مشکل 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{ ... }
مثال زیر نحوه غیرفعال کردن بررسی پرز برای مشکل ParserError
در کلاس FeedProvider
را نشان می دهد:
کاتلین
@SuppressLint("ParserError") class FeedProvider : ContentProvider() {
جاوا
@SuppressLint("ParserError") public class FeedProvider extends ContentProvider {
برای جلوگیری از بررسی همه مشکلات پرز در فایل، از کلمه کلیدی all
استفاده کنید:
کاتلین
@SuppressLint("all")
جاوا
@SuppressLint("all")
شما می توانید از همان حاشیه نویسی برای سرکوب بررسی پرزها در هر تابع Composable استفاده کنید.
بررسی پرز در XML را پیکربندی کنید
از ویژگی tools:ignore
برای غیرفعال کردن بررسی پرز برای بخش های خاصی از فایل های XML خود استفاده کنید. مقدار فضای نام زیر را در فایل lint.xml
قرار دهید تا ابزار lint ویژگی را بشناسد:
namespace xmlns:tools="http://schemas.android.com/tools"
مثال زیر نشان می دهد که چگونه می توانید بررسی پرزها را برای مشکل 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"
برای جلوگیری از بررسی تمام مشکلات پرز در عنصر XML، از کلمه کلیدی all
استفاده کنید:
tools:ignore="all"
گزینه های پرز را با Gradle پیکربندی کنید
افزونه Android برای Gradle به شما امکان میدهد تا با استفاده از بلوک lint{}
در فایل build.gradle
در سطح ماژول، برخی از گزینههای lint را پیکربندی کنید، مانند اینکه کدام چکها اجرا یا نادیده گرفته شوند.
قطعه کد زیر برخی از ویژگی هایی را که می توانید پیکربندی کنید نشان می دهد:
کاتلین
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 } } ...
همه روشهای پرز که سطح شدت معین یک مشکل را نادیده میگیرند، ترتیب پیکربندی را رعایت میکنند. به عنوان مثال، تعیین یک مشکل به عنوان کشنده در finalizeDsl()
غیرفعال کردن آن را در DSL اصلی لغو می کند.
یک خط پایه هشدار ایجاد کنید
میتوانید از مجموعه هشدارهای فعلی پروژه خود یک عکس بگیرید، سپس از آن بهعنوان پایهای برای اجرای بازرسیهای آینده استفاده کنید تا فقط مسائل جدید گزارش شوند. عکس فوری پایه به شما امکان می دهد بدون نیاز به بازگشت به عقب و رفع تمام مشکلات موجود ابتدا از lint برای شکست ساختن استفاده کنید.
برای ایجاد یک اسنپ شات پایه، فایل 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 ظاهر می شوند بسته به اینکه پروژه، پوشه یا فایلی را انتخاب کرده اید متفاوت است:
- هنگامی که یک پروژه، فایل یا دایرکتوری را انتخاب می کنید، کادر محاوره ای Specify Inspection Scope مسیر پروژه، فایل یا دایرکتوری را که انتخاب کرده اید نمایش می دهد.
- هنگامی که بیش از یک پروژه ، پرونده یا دایرکتوری را انتخاب می کنید ، گفتگوی SCOPE SCOPESS یک دکمه رادیویی انتخاب شده را برای پرونده های انتخاب شده نشان می دهد.
برای تغییر آنچه باید بازرسی کنید ، یکی از دکمه های رادیویی دیگر را انتخاب کنید. برای توضیحات مربوط به همه زمینه های ممکن در گفتگوی SCOPE RESCECTION SCOPE ، گفتگوی دامنه بازرسی را مشخص کنید.
- در زیر نمایه بازرسی ، نمایه ای را که می خواهید استفاده کنید انتخاب کنید.
برای اجرای بازرسی ، OK را کلیک کنید.
شکل 4 نتایج بازرسی LINT و دیگر IDE را از اجرای کد بازرسی نشان می دهد:
در صفحه نتایج بازرسی ، نتایج بازرسی را با گسترش و انتخاب دسته های خطا ، انواع یا مسائل مشاهده کنید.
صفحه گزارش بازرسی گزارش بازرسی را برای دسته خطا ، نوع یا شماره انتخاب شده در صفحه نتایج بازرسی نشان می دهد و نام و مکان خطا را نشان می دهد. در صورت لزوم ، گزارش بازرسی اطلاعات دیگری مانند خلاصه داستان را نشان می دهد تا به شما در اصلاح مشکل کمک کند.
در نتایج بازرسی نمای درخت صفحه ، روی یک دسته ، نوع یا شماره راست کلیک کنید تا منوی زمینه را نمایش دهید.
بسته به متن ، می توانید:
- پرش به منبع.
- موارد منتخب را حذف کرده و درج کنید.
- مشکلات را سرکوب کنید.
- تنظیمات را ویرایش کنید.
- هشدارهای بازرسی را مدیریت کنید.
- بازرسی را دوباره انجام دهید.
برای توضیحات مربوط به دکمه های نوار ابزار ، موارد منوی زمینه و زمینه های گزارش بازرسی ، به پنجره ابزار نتایج بازرسی مراجعه کنید.
از دامنه سفارشی استفاده کنید
از یکی از دامنه های سفارشی ارائه شده در استودیوی اندرویدی به شرح زیر استفاده کنید:
- در گفتگوی SCOPE SCOPE مشخص ، Custom Scope را انتخاب کنید.
برای نمایش گزینه های خود روی لیست دامنه سفارشی کلیک کنید:
- همه مکان ها: همه پرونده ها.
- پرونده های پروژه: تمام پرونده های موجود در پروژه فعلی.
- پرونده های منبع پروژه: فقط پرونده های منبع در پروژه فعلی.
- پرونده های تولید پروژه: فقط پرونده های تولید در پروژه فعلی.
- پرونده های آزمون پروژه: فقط پرونده های آزمون در پروژه فعلی.
- خراش و کنسول: فقط پرونده های خراش و کنسول هایی که در پروژه فعلی باز دارید.
- پرونده های اخیراً مشاهده شده: فقط پرونده های اخیراً در پروژه فعلی مشاهده شده است.
- پرونده فعلی: فقط پرونده فعلی در پروژه فعلی شما. وقتی یک پرونده یا پوشه انتخاب شده اید ظاهر می شود.
- دایرکتوری انتخاب شده: فقط پوشه فعلی در پروژه فعلی شما. وقتی پوشه انتخاب شده اید ظاهر می شود.
- سلسله مراتب کلاس: وقتی این گزینه را انتخاب می کنید و بر روی OK کلیک می کنید ، یک گفتگو با تمام کلاس های پروژه فعلی ظاهر می شود. در گفتگو ، از قسمت جستجو توسط Name برای فیلتر کردن و انتخاب کلاس ها برای بازرسی استفاده کنید. اگر لیست کلاس ها را فیلتر نکنید ، بازرسی کد همه کلاس ها را بازرسی می کند.
اگر VCS برای این پروژه پیکربندی شده اید ، گزینه هایی برای محدود کردن جستجو فقط به پرونده هایی که اصلاح شده اند نیز وجود دارد.
- روی OK کلیک کنید.
دامنه سفارشی ایجاد کنید
هنگامی که می خواهید مجموعه ای از پرونده ها و دایرکتوری ها را که توسط هیچ یک از دامنه های سفارشی موجود در حال حاضر پوشیده نشده است ، بازرسی کنید ، می توانید دامنه سفارشی ایجاد کنید:
- در گفتگوی SCOPE SCOPE مشخص ، Custom Scope را انتخاب کنید.
بعد از لیست دامنه سفارشی ، روی سه نقطه کلیک کنید.
گفتگوی Scopes ظاهر می شود.
- را کلیک کنید دکمه در گوشه بالا سمت چپ گفتگو برای تعریف دامنه جدید.
- در لیست Add دامنه که ظاهر می شود ، محلی را انتخاب کنید.
هر دو دامنه محلی و مشترک در این پروژه برای ویژگی Code Code استفاده می شوند. دامنه مشترک نیز می تواند با سایر ویژگی های پروژه که دارای زمینه دامنه هستند ، استفاده شود. به عنوان مثال ، وقتی روی ویرایش تنظیمات کلیک می کنید برای تغییر تنظیمات برای استفاده های Find ، گفتگوی حاصل دارای یک قسمت دامنه است که در آن می توانید یک دامنه مشترک را انتخاب کنید.
- به دامنه یک نام بدهید و روی OK کلیک کنید.
صفحه سمت راست گفتگوی Scopes با گزینه هایی جمع می شود که به شما امکان می دهد دامنه سفارشی را تعریف کنید.
- از لیست ، پروژه را انتخاب کنید.
لیستی از پروژه های موجود ظاهر می شود.
توجه: می توانید دامنه سفارشی را برای پروژه ها یا بسته ها ایجاد کنید. مراحل یکسان است.
پوشه های پروژه را گسترش دهید ، آنچه را که می خواهید به دامنه سفارشی اضافه کنید انتخاب کنید و انتخاب کنید که آیا آن را شامل یا حذف کنید.
- شامل : این پوشه و پرونده های آن را درج کنید ، اما هیچ یک از زیر پوشه های آن را شامل نمی شوید.
- به صورت بازگشتی وارد کنید : این پوشه و پرونده های آن و همچنین زیر پوشه های آن و پرونده های آنها را درج کنید.
- حذف : این پوشه و پرونده های آن را حذف کنید ، اما هیچ یک از زیر پوشه های آن را حذف نکنید.
- به صورت بازگشتی استثنا : این پوشه و پرونده های آن و همچنین زیر پوشه های آن و پرونده های آنها را حذف کنید.
شکل 10 نشان می دهد که پوشه اصلی گنجانده شده است ، و پوشه های جاوا و RES به صورت بازگشتی گنجانده شده است. آبی یک پوشه تا حدی شامل می شود ، و سبز نشانگر پوشه ها و پرونده های بازگشتی است.
- اگر پوشه جاوا را انتخاب کرده و بر روی استثنائی دوباره کلیک کنید ، برجسته سبز روی پوشه جاوا و تمام پوشه ها و پرونده های زیر آن از بین می رود.
- اگر پرونده MainActivity.kt با چراغ سبز را انتخاب کرده و بر روی حذف کلیک کنید ، MainActivity.kt دیگر به رنگ سبز برجسته نمی شود ، اما همه چیز دیگر در زیر پوشه جاوا سبز است.
- روی OK کلیک کنید. دامنه سفارشی در پایین لیست ظاهر می شود.
پروفایل های بازرسی را مرور و ویرایش کنید
Android Studio مجموعه ای از پروفایل های بازرسی و سایر پروفایل های بازرسی را دارد که از طریق به روزرسانی های Android به روز می شوند. شما می توانید از این پروفایل ها مانند آنها استفاده کنید یا نام ، توضیحات ، شدت ها و دامنه های آنها را ویرایش کنید. همچنین می توانید کل گروه های پروفایل یا پروفایل های فردی را در یک گروه فعال و غیرفعال کنید.
برای دسترسی به تنظیمات بازرسی :
- File> Settings را انتخاب کنید. (در ویندوز) یا Android Studio> Preferences (در MacOS یا Linux).
- ویرایشگر> بازرسی ها را انتخاب کنید.
لیست پروفایل را انتخاب کنید تا بین بازرسی های Default (Android Studio) و Project Default (پروژه فعال) جابجا شوید.
برای اطلاعات بیشتر ، به صفحه Profile Intellij Management مراجعه کنید.
در لیست بازرسی ها در صفحه سمت چپ ، یک دسته از مشخصات سطح بالا را انتخاب کنید یا یک گروه را گسترش داده و یک پروفایل خاص را انتخاب کنید.
هنگامی که یک دسته نمایه را انتخاب می کنید ، می توانید تمام بازرسی ها را در آن دسته به عنوان یک بازرسی واحد ویرایش کنید.
- اقدامات SHOW Schema را انتخاب کنید لیست برای کپی ، تغییر نام ، اضافه کردن توضیحات به ، صادرات و بازرسی های واردات.
- وقتی کارتان تمام شد، روی OK کلیک کنید.
صفحه بازرسی لیستی از بازرسی های پشتیبانی شده و توضیحات آنها را نشان می دهد.
علاوه بر تست های ساختمانی برای اطمینان از اینکه برنامه شما نیازهای عملکردی خود را برآورده می کند ، مهم است که شما همچنین کد را از طریق ابزار LINT اجرا کنید تا به اطمینان حاصل شود که کد شما هیچ مشکلی ساختاری ندارد. ابزار LINT به یافتن کد ساختاری ضعیف کمک می کند که می تواند بر قابلیت اطمینان و کارآیی برنامه های Android شما تأثیر بگذارد و کد شما را سخت تر کند. به شدت توصیه می شود که قبل از انتشار برنامه خود ، هرگونه خطایی را که لینت تشخیص می دهد اصلاح کنید.
به عنوان مثال ، اگر پرونده های منبع XML شما حاوی فضای نام استفاده نشده است ، این فضای را به خود اختصاص می دهد و به پردازش غیر ضروری نیاز دارد. سایر موضوعات ساختاری ، مانند استفاده از عناصر مستهلک یا تماس های API که توسط نسخه های API هدف پشتیبانی نمی شوند ، ممکن است منجر به عدم موفقیت در کد شود. خط می تواند به شما در تمیز کردن این مسائل کمک کند.
برای بهبود عملکرد لینت ، می توانید حاشیه نویسی را به کد خود اضافه کنید .
نمای کلی
Android Studio یک ابزار اسکن کد به نام LINT را فراهم می کند که می تواند بدون نیاز به اجرای برنامه یا نوشتن موارد آزمون ، به شما در شناسایی و تصحیح مشکلات با کیفیت ساختاری کد خود کمک کند. هر مشکلی که توسط ابزار شناسایی شده است با یک پیام توضیحات و یک سطح شدت گزارش شده است تا بتوانید پیشرفت های اساسی مورد نیاز را در اولویت قرار دهید. همچنین می توانید میزان شدت یک مشکل را برای نادیده گرفتن مواردی که به پروژه شما مربوط نمی شوند یا میزان شدت آن را برای برجسته کردن مشکلات خاص بالا می برید ، کاهش دهید.
ابزار LINT پرونده های منبع پروژه Android شما را برای اشکالات احتمالی و بهبود بهینه سازی برای صحت ، امنیت ، عملکرد ، قابلیت استفاده ، دسترسی و بین المللی سازی بررسی می کند. هنگام استفاده از Android Studio ، بازرسی های پیکربندی شده و IDE را هنگام ساخت برنامه خود اجرا می کنند. با این حال ، شما می توانید بازرسی ها را به صورت دستی اجرا کنید یا از خط فرمان استفاده کنید ، همانطور که در این صفحه توضیح داده شده است.
ابزار LINT داخلی هنگام استفاده از Android Studio ، کد شما را بررسی می کند. می توانید هشدارها و خطاها را از دو طریق مشاهده کنید:
- به عنوان متن پاپ آپ در پنجره ویرایشگر. هنگامی که LINT مشکلی پیدا می کند ، کد مشکل ساز را به رنگ زرد برجسته می کند. برای مشکلات جدی تر ، این کد را به رنگ قرمز تأکید می کند.
- در پنجره نتایج بازرسی LINT هنگام کلیک بر روی کد> بازرسی کد .
توجه: هنگامی که کد شما در Android Studio کامپایل شده است ، بازرسی های اضافی کد IntelliJ برای ساده سازی بررسی کد اجرا می شود.
شکل 1 نشان می دهد که چگونه ابزار LINT پرونده های منبع برنامه را پردازش می کند.
- پرونده های منبع برنامه
- پرونده های منبع شامل پرونده هایی هستند که پروژه Android شما را تشکیل می دهند ، از جمله پرونده های Kotlin ، Java و XML ، نمادها و پرونده های پیکربندی Proguard.
- پرونده
lint.xml
- یک فایل پیکربندی که می توانید برای مشخص کردن هرگونه بررسی خطی که می خواهید حذف کنید و برای سفارشی کردن سطح شدت مشکل استفاده کنید ، استفاده کنید.
- ابزار پرز
- یک ابزار اسکن کد ایستا که می توانید در پروژه اندروید خود از خط فرمان یا در Android Studio اجرا کنید. ابزار lint مشکلات کد ساختاری را بررسی می کند که می تواند بر کیفیت و عملکرد برنامه اندروید شما تأثیر بگذارد.
- نتایج بررسی خط
- می توانید نتایج حاصل از LINT را در کنسول یا پنجره نتایج بازرسی در استودیوی اندروید مشاهده کنید. اگر
lint
از خط فرمان اجرا کنید ، نتایج بهbuild/
پوشه نوشته شده است. برای اطلاعات بیشتر ، به بخش مربوط به اجرای بازرسی ها به صورت دستی مراجعه کنید.
خط را از خط فرمان اجرا کنید
اگر از Android Studio یا Gradle استفاده می کنید ، با وارد کردن یکی از دستورات زیر از فهرست اصلی پروژه خود ، از Gradle Wrapper استفاده کنید تا کار 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 نشان داده شده است ، آن را در مرورگر خود باز کنید.
اگر پروژه شما شامل انواع ساخت است ، LINT فقط نوع پیش فرض را بررسی می کند. اگر می خواهید خط را روی یک نوع متفاوت اجرا کنید ، باید از نام نوع استفاده کنید و آن را با lint
پیشوند کنید.
./gradlew lintRelease
برای کسب اطلاعات بیشتر در مورد اجرای وظایف Gradle از خط فرمان ، ساخت برنامه خود را از خط فرمان بخوانید.
با استفاده از ابزار مستقل ، خط را اجرا کنید
اگر از Android Studio یا Gradle استفاده نمی کنید ، ابزارهای خط فرمان Android SDK را برای استفاده از ابزار LINT مستقل نصب کنید. ابزار LINT را در android_sdk /cmdline-tools/ version /bin/lint
پیدا کنید.
توجه: اگر سعی می کنید ابزار مستقل را روی یک پروژه Gradle اجرا کنید ، خطایی ایجاد می کند. شما همیشه باید از gradle lint
(در ویندوز) یا ./gradlew lint
(در MacOS یا Linux) استفاده کنید تا LINT را در یک پروژه Gradle اجرا کنید.
برای اجرای خط در برابر لیستی از پرونده ها در یک فهرست پروژه ، از دستور زیر استفاده کنید:
lint [flags] <project directory>
به عنوان مثال ، می توانید دستور زیر را برای اسکن پرونده های زیر دایرکتوری myproject
و زیر مجموعه های آن صادر کنید. ID ID MissingPrefix
به LINT می گوید فقط برای ویژگی های XML که پیشوند فضای نامگذاری اندرویدی را از دست نمی دهند ، اسکن کنید.
lint --check MissingPrefix myproject
برای دیدن لیست کامل پرچم ها و آرگومان های خط فرمان پشتیبانی شده توسط ابزار ، از دستور زیر استفاده کنید:
lint --help
مثال زیر خروجی کنسول را نشان می دهد که دستور LINT در برابر پروژه ای به نام زلزله اجرا می شود:
$ 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 را برای گزارش مسائل غیر بحرانی در سطح شدت کمتری پیکربندی کنید.
میزان شدت آن است:
-
enable
-
disable
یاignore
-
informational
-
warning
-
error
-
fatal
می توانید بررسی خط را برای سطوح مختلف پیکربندی کنید:
- در سطح جهانی (کل پروژه)
- ماژول پروژه
- ماژول تولید
- ماژول تست
- فایل ها را باز کنید
- سلسله مراتب طبقه
- سیستم کنترل نسخه (VCS) دامنه
پرونده خط را پیکربندی کنید
می توانید تنظیمات برگزیده چک خود را در پرونده lint.xml
مشخص کنید. اگر این پرونده را به صورت دستی ایجاد می کنید ، آن را در فهرست اصلی پروژه Android خود قرار دهید.
پرونده lint.xml
شامل یک برچسب والدین <lint>
است که حاوی یک یا چند کودک <issue>
است. LINT یک مقدار ویژگی منحصر به فرد id
را برای هر <issue>
تعریف می کند:
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --> </lint>
برای تغییر سطح شدت یک مسئله یا غیرفعال کردن چک کردن لینت برای مسئله ، ویژگی شدت را در برچسب <issue>
قرار دهید.
نکته: برای لیست کاملی از موضوعات پشتیبانی شده از خط و شناسه های مربوط به آنها ، دستور 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 پیکربندی کنید
شما می توانید در گفتگوی تنظیمات تنظیمات ، پرونده های منبع Kotlin ، Java و XML خود را خاموش کنید:
- File> Settings (در ویندوز) یا Android Studio> Preferences (در MacOS یا Linux) را انتخاب کنید.
- ویرایشگر> بازرسی ها را انتخاب کنید.
- برای غیرفعال کردن ، پرونده منبع مناسب را انتخاب کنید.
با انتخاب نمایه مناسب می توانید این موارد را برای IDE یا برای پروژه های فردی تنظیم کنید.
پیکربندی LINT را در جاوا یا کوتلین پیکربندی کنید
برای غیرفعال کردن چک کردن LINT به طور خاص برای یک کلاس یا روش در پروژه Android خود ، حاشیه نویسی @SuppressLint
را به آن کد اضافه کنید.
مثال زیر نشان می دهد که چگونه می توانید بررسی خط را برای شماره 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);
همین کار را می توان در هر ترکیب انجام داد. قطعه کد زیر نشان می دهد که چگونه می توانید چک های NewApi
را در هر ترکیب خاموش کنید.
کاتلین
@SuppressLint("NewApi") @Composable fun MyComposable{ ... }
مثال زیر نحوه خاموش کردن بررسی خط را برای مسئله ParserError
در کلاس FeedProvider
نشان می دهد:
کاتلین
@SuppressLint("ParserError") class FeedProvider : ContentProvider() {
جاوا
@SuppressLint("ParserError") public class FeedProvider extends ContentProvider {
برای سرکوب بررسی همه مشکلات موجود در پرونده ، از all
کلمه کلیدی استفاده کنید:
کاتلین
@SuppressLint("all")
جاوا
@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"
برای سرکوب بررسی همه مشکلات موجود در عنصر XML ، از all
کلمات کلیدی استفاده کنید:
tools:ignore="all"
گزینه های LINT را با Gradle پیکربندی کنید
افزونه Android for Gradle به شما امکان می دهد گزینه های خاصی را تنظیم کنید ، مانند مواردی که برای اجرای یا نادیده گرفتن ، با استفاده از بلوک 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 } } ...
تمام روشهای خطی که بر میزان شدت مشخص یک مسئله غلبه می کنند ، به ترتیب پیکربندی احترام می گذارند. به عنوان مثال ، ایجاد یک مسئله به عنوان کشنده در finalizeDsl()
ناتوان کردن آن در DSL اصلی است.
یک مبنای هشدارها ایجاد کنید
شما می توانید عکس فوری از مجموعه هشدارهای فعلی پروژه خود را بگیرید ، سپس از عکس فوری به عنوان یک پایه اصلی برای بازرسی های آینده استفاده کنید تا فقط موضوعات جدید گزارش شود. عکس فوری پایه به شما امکان می دهد بدون نیاز به بازگشت و رسیدگی به همه مسائل موجود ، از Lint برای شکست در ساخت استفاده کنید.
برای ایجاد یک عکس فوری پایه ، پرونده build.gradle
پروژه خود را به شرح زیر تغییر دهید:
کاتلین
android { lint { baseline = file("lint-baseline.xml") } }
شیار
android { lintOptions { baseline file("lint-baseline.xml") } }
هنگامی که برای اولین بار این خط را اضافه می کنید ، پرونده lint-baseline.xml
برای ایجاد پایه شما ایجاد می شود. از آن به بعد ، ابزارها فقط پرونده را برای تعیین پایه می خوانند. اگر می خواهید یک پایه جدید ایجاد کنید ، فایل را به صورت دستی حذف کرده و مجدداً آن را اجرا کنید تا دوباره ایجاد کنید.
سپس با انتخاب کد> بازرسی کد یا از خط فرمان به شرح زیر ، 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 را انتخاب کنید.
در گفتگوی SCOPE SCOPE مشخص ، تنظیمات را مرور کنید.
گزینه هایی که در گفتگوی دامنه بازرسی مشخص شده است ، بسته به اینکه آیا شما یک پروژه ، پوشه یا پرونده را انتخاب کرده اید متفاوت است:
- هنگامی که یک پروژه ، پرونده یا دایرکتوری را انتخاب می کنید ، گفتگوی SCOPE SCOPE RECKITY مسیر پروژه ، پرونده یا دایرکتوری را که انتخاب کرده اید نشان می دهد.
- هنگامی که بیش از یک پروژه ، پرونده یا دایرکتوری را انتخاب می کنید ، گفتگوی SCOPE SCOPESS یک دکمه رادیویی انتخاب شده را برای پرونده های انتخاب شده نشان می دهد.
برای تغییر آنچه باید بازرسی کنید ، یکی از دکمه های رادیویی دیگر را انتخاب کنید. برای توضیحات مربوط به همه زمینه های ممکن در گفتگوی SCOPE RESCECTION SCOPE ، گفتگوی دامنه بازرسی را مشخص کنید.
- در زیر نمایه بازرسی ، نمایه ای را که می خواهید استفاده کنید انتخاب کنید.
برای اجرای بازرسی ، OK را کلیک کنید.
شکل 4 نتایج بازرسی LINT و دیگر IDE را از اجرای کد بازرسی نشان می دهد:
در صفحه نتایج بازرسی ، نتایج بازرسی را با گسترش و انتخاب دسته های خطا ، انواع یا مسائل مشاهده کنید.
صفحه گزارش بازرسی گزارش بازرسی را برای دسته خطا ، نوع یا شماره انتخاب شده در صفحه نتایج بازرسی نشان می دهد و نام و مکان خطا را نشان می دهد. در صورت لزوم ، گزارش بازرسی اطلاعات دیگری مانند خلاصه داستان را نشان می دهد تا به شما در اصلاح مشکل کمک کند.
در نتایج بازرسی نمای درخت صفحه ، روی یک دسته ، نوع یا شماره راست کلیک کنید تا منوی زمینه را نمایش دهید.
بسته به متن ، می توانید:
- پرش به منبع.
- موارد منتخب را حذف کرده و درج کنید.
- مشکلات را سرکوب کنید.
- تنظیمات را ویرایش کنید.
- هشدارهای بازرسی را مدیریت کنید.
- بازرسی را دوباره انجام دهید.
برای توضیحات مربوط به دکمه های نوار ابزار ، موارد منوی زمینه و زمینه های گزارش بازرسی ، به پنجره ابزار نتایج بازرسی مراجعه کنید.
از دامنه سفارشی استفاده کنید
از یکی از دامنه های سفارشی ارائه شده در استودیوی اندرویدی به شرح زیر استفاده کنید:
- در گفتگوی SCOPE SCOPE مشخص ، Custom Scope را انتخاب کنید.
برای نمایش گزینه های خود روی لیست دامنه سفارشی کلیک کنید:
- همه مکان ها: همه پرونده ها.
- پرونده های پروژه: تمام پرونده های موجود در پروژه فعلی.
- پرونده های منبع پروژه: فقط پرونده های منبع در پروژه فعلی.
- پرونده های تولید پروژه: فقط پرونده های تولید در پروژه فعلی.
- پرونده های آزمون پروژه: فقط پرونده های آزمون در پروژه فعلی.
- خراش و کنسول: فقط پرونده های خراش و کنسول هایی که در پروژه فعلی باز دارید.
- پرونده های اخیراً مشاهده شده: فقط پرونده های اخیراً در پروژه فعلی مشاهده شده است.
- پرونده فعلی: فقط پرونده فعلی در پروژه فعلی شما. وقتی یک پرونده یا پوشه انتخاب شده اید ظاهر می شود.
- دایرکتوری انتخاب شده: فقط پوشه فعلی در پروژه فعلی شما. وقتی پوشه انتخاب شده اید ظاهر می شود.
- سلسله مراتب کلاس: وقتی این گزینه را انتخاب می کنید و بر روی OK کلیک می کنید ، یک گفتگو با تمام کلاس های پروژه فعلی ظاهر می شود. در گفتگو ، از قسمت جستجو توسط Name برای فیلتر کردن و انتخاب کلاس ها برای بازرسی استفاده کنید. اگر لیست کلاس ها را فیلتر نکنید ، بازرسی کد همه کلاس ها را بازرسی می کند.
اگر VCS برای این پروژه پیکربندی شده اید ، گزینه هایی برای محدود کردن جستجو فقط به پرونده هایی که اصلاح شده اند نیز وجود دارد.
- روی OK کلیک کنید.
دامنه سفارشی ایجاد کنید
هنگامی که می خواهید مجموعه ای از پرونده ها و دایرکتوری ها را که توسط هیچ یک از دامنه های سفارشی موجود در حال حاضر پوشیده نشده است ، بازرسی کنید ، می توانید دامنه سفارشی ایجاد کنید:
- در گفتگوی SCOPE SCOPE مشخص ، Custom Scope را انتخاب کنید.
بعد از لیست دامنه سفارشی ، روی سه نقطه کلیک کنید.
گفتگوی Scopes ظاهر می شود.
- را کلیک کنید دکمه در گوشه بالا سمت چپ گفتگو برای تعریف دامنه جدید.
- در لیست Add دامنه که ظاهر می شود ، محلی را انتخاب کنید.
هر دو دامنه محلی و مشترک در این پروژه برای ویژگی Code Code استفاده می شوند. دامنه مشترک نیز می تواند با سایر ویژگی های پروژه که دارای زمینه دامنه هستند ، استفاده شود. به عنوان مثال ، وقتی روی ویرایش تنظیمات کلیک می کنید برای تغییر تنظیمات برای استفاده های Find ، گفتگوی حاصل دارای یک قسمت دامنه است که در آن می توانید یک دامنه مشترک را انتخاب کنید.
- به دامنه یک نام بدهید و روی OK کلیک کنید.
صفحه سمت راست گفتگوی Scopes با گزینه هایی جمع می شود که به شما امکان می دهد دامنه سفارشی را تعریف کنید.
- از لیست ، پروژه را انتخاب کنید.
لیستی از پروژه های موجود ظاهر می شود.
توجه: می توانید دامنه سفارشی را برای پروژه ها یا بسته ها ایجاد کنید. مراحل یکسان است.
پوشه های پروژه را گسترش دهید ، آنچه را که می خواهید به دامنه سفارشی اضافه کنید انتخاب کنید و انتخاب کنید که آیا آن را شامل یا حذف کنید.
- شامل : این پوشه و پرونده های آن را درج کنید ، اما هیچ یک از زیر پوشه های آن را شامل نمی شوید.
- به صورت بازگشتی وارد کنید : این پوشه و پرونده های آن و همچنین زیر پوشه های آن و پرونده های آنها را درج کنید.
- حذف : این پوشه و پرونده های آن را حذف کنید ، اما هیچ یک از زیر پوشه های آن را حذف نکنید.
- به صورت بازگشتی استثنا : این پوشه و پرونده های آن و همچنین زیر پوشه های آن و پرونده های آنها را حذف کنید.
شکل 10 نشان می دهد که پوشه اصلی گنجانده شده است ، و پوشه های جاوا و RES به صورت بازگشتی گنجانده شده است. آبی یک پوشه تا حدی شامل می شود ، و سبز نشانگر پوشه ها و پرونده های بازگشتی است.
- اگر پوشه جاوا را انتخاب کرده و بر روی استثنائی دوباره کلیک کنید ، برجسته سبز روی پوشه جاوا و تمام پوشه ها و پرونده های زیر آن از بین می رود.
- اگر پرونده MainActivity.kt با چراغ سبز را انتخاب کرده و بر روی حذف کلیک کنید ، MainActivity.kt دیگر به رنگ سبز برجسته نمی شود ، اما همه چیز دیگر در زیر پوشه جاوا سبز است.
- روی OK کلیک کنید. دامنه سفارشی در پایین لیست ظاهر می شود.
پروفایل های بازرسی را مرور و ویرایش کنید
Android Studio مجموعه ای از پروفایل های بازرسی و سایر پروفایل های بازرسی را دارد که از طریق به روزرسانی های Android به روز می شوند. شما می توانید از این پروفایل ها مانند آنها استفاده کنید یا نام ، توضیحات ، شدت ها و دامنه های آنها را ویرایش کنید. همچنین می توانید کل گروه های پروفایل یا پروفایل های فردی را در یک گروه فعال و غیرفعال کنید.
برای دسترسی به تنظیمات بازرسی :
- File> Settings را انتخاب کنید. (در ویندوز) یا Android Studio> Preferences (در MacOS یا Linux).
- ویرایشگر> بازرسی ها را انتخاب کنید.
لیست پروفایل را انتخاب کنید تا بین بازرسی های Default (Android Studio) و Project Default (پروژه فعال) جابجا شوید.
برای اطلاعات بیشتر ، به صفحه Profile Intellij Management مراجعه کنید.
در لیست بازرسی ها در صفحه سمت چپ ، یک دسته از مشخصات سطح بالا را انتخاب کنید یا یک گروه را گسترش داده و یک پروفایل خاص را انتخاب کنید.
هنگامی که یک دسته نمایه را انتخاب می کنید ، می توانید تمام بازرسی ها را در آن دسته به عنوان یک بازرسی واحد ویرایش کنید.
- اقدامات SHOW Schema را انتخاب کنید لیست برای کپی ، تغییر نام ، اضافه کردن توضیحات به ، صادرات و بازرسی های واردات.
- وقتی کارتان تمام شد، روی OK کلیک کنید.
صفحه بازرسی لیستی از بازرسی های پشتیبانی شده و توضیحات آنها را نشان می دهد.
علاوه بر تست های ساختمانی برای اطمینان از اینکه برنامه شما نیازهای عملکردی خود را برآورده می کند ، مهم است که شما همچنین کد را از طریق ابزار LINT اجرا کنید تا به اطمینان حاصل شود که کد شما هیچ مشکلی ساختاری ندارد. ابزار LINT به یافتن کد ساختاری ضعیف کمک می کند که می تواند بر قابلیت اطمینان و کارآیی برنامه های Android شما تأثیر بگذارد و کد شما را سخت تر کند. به شدت توصیه می شود که قبل از انتشار برنامه خود ، هرگونه خطایی را که لینت تشخیص می دهد اصلاح کنید.
به عنوان مثال ، اگر پرونده های منبع XML شما حاوی فضای نام استفاده نشده است ، این فضای را به خود اختصاص می دهد و به پردازش غیر ضروری نیاز دارد. سایر موضوعات ساختاری ، مانند استفاده از عناصر مستهلک یا تماس های API که توسط نسخه های API هدف پشتیبانی نمی شوند ، ممکن است منجر به عدم موفقیت در کد شود. خط می تواند به شما در تمیز کردن این مسائل کمک کند.
برای بهبود عملکرد لینت ، می توانید حاشیه نویسی را به کد خود اضافه کنید .
نمای کلی
Android Studio یک ابزار اسکن کد به نام LINT را فراهم می کند که می تواند بدون نیاز به اجرای برنامه یا نوشتن موارد آزمون ، به شما در شناسایی و تصحیح مشکلات با کیفیت ساختاری کد خود کمک کند. هر مشکلی که توسط ابزار شناسایی شده است با یک پیام توضیحات و یک سطح شدت گزارش شده است تا بتوانید پیشرفت های اساسی مورد نیاز را در اولویت قرار دهید. همچنین می توانید میزان شدت یک مشکل را برای نادیده گرفتن مواردی که به پروژه شما مربوط نمی شوند یا میزان شدت آن را برای برجسته کردن مشکلات خاص بالا می برید ، کاهش دهید.
ابزار LINT پرونده های منبع پروژه Android شما را برای اشکالات احتمالی و بهبود بهینه سازی برای صحت ، امنیت ، عملکرد ، قابلیت استفاده ، دسترسی و بین المللی سازی بررسی می کند. هنگام استفاده از Android Studio ، بازرسی های پیکربندی شده و IDE را هنگام ساخت برنامه خود اجرا می کنند. با این حال ، شما می توانید بازرسی ها را به صورت دستی اجرا کنید یا از خط فرمان استفاده کنید ، همانطور که در این صفحه توضیح داده شده است.
ابزار LINT داخلی هنگام استفاده از Android Studio ، کد شما را بررسی می کند. می توانید هشدارها و خطاها را از دو طریق مشاهده کنید:
- به عنوان متن پاپ آپ در پنجره ویرایشگر. هنگامی که LINT مشکلی پیدا می کند ، کد مشکل ساز را به رنگ زرد برجسته می کند. برای مشکلات جدی تر ، این کد را به رنگ قرمز تأکید می کند.
- در پنجره نتایج بازرسی LINT هنگام کلیک بر روی کد> بازرسی کد .
توجه: هنگامی که کد شما در Android Studio کامپایل شده است ، بازرسی های اضافی کد IntelliJ برای ساده سازی بررسی کد اجرا می شود.
شکل 1 نشان می دهد که چگونه ابزار LINT پرونده های منبع برنامه را پردازش می کند.
- پرونده های منبع برنامه
- پرونده های منبع شامل پرونده هایی هستند که پروژه Android شما را تشکیل می دهند ، از جمله پرونده های Kotlin ، Java و XML ، نمادها و پرونده های پیکربندی Proguard.
- پرونده
lint.xml
- یک فایل پیکربندی که می توانید برای مشخص کردن هرگونه بررسی خطی که می خواهید حذف کنید و برای سفارشی کردن سطح شدت مشکل استفاده کنید ، استفاده کنید.
- ابزار پرز
- یک ابزار اسکن کد ایستا که می توانید در پروژه اندروید خود از خط فرمان یا در Android Studio اجرا کنید. ابزار lint مشکلات کد ساختاری را بررسی می کند که می تواند بر کیفیت و عملکرد برنامه اندروید شما تأثیر بگذارد.
- نتایج بررسی خط
- می توانید نتایج حاصل از LINT را در کنسول یا پنجره نتایج بازرسی در استودیوی اندروید مشاهده کنید. اگر
lint
از خط فرمان اجرا کنید ، نتایج بهbuild/
پوشه نوشته شده است. برای اطلاعات بیشتر ، به بخش مربوط به اجرای بازرسی ها به صورت دستی مراجعه کنید.
خط را از خط فرمان اجرا کنید
اگر از Android Studio یا Gradle استفاده می کنید ، با وارد کردن یکی از دستورات زیر از فهرست اصلی پروژه خود ، از Gradle Wrapper استفاده کنید تا کار 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 نشان داده شده است ، آن را در مرورگر خود باز کنید.
اگر پروژه شما شامل انواع ساخت است ، LINT فقط نوع پیش فرض را بررسی می کند. اگر می خواهید خط را روی یک نوع متفاوت اجرا کنید ، باید از نام نوع استفاده کنید و آن را با lint
پیشوند کنید.
./gradlew lintRelease
برای کسب اطلاعات بیشتر در مورد اجرای وظایف Gradle از خط فرمان ، ساخت برنامه خود را از خط فرمان بخوانید.
با استفاده از ابزار مستقل ، خط را اجرا کنید
اگر از Android Studio یا Gradle استفاده نمی کنید ، ابزارهای خط فرمان Android SDK را برای استفاده از ابزار LINT مستقل نصب کنید. ابزار LINT را در android_sdk /cmdline-tools/ version /bin/lint
پیدا کنید.
توجه: اگر سعی می کنید ابزار مستقل را روی یک پروژه Gradle اجرا کنید ، خطایی ایجاد می کند. شما همیشه باید از gradle lint
(در ویندوز) یا ./gradlew lint
(در MacOS یا Linux) استفاده کنید تا LINT را در یک پروژه Gradle اجرا کنید.
برای اجرای خط در برابر لیستی از پرونده ها در یک فهرست پروژه ، از دستور زیر استفاده کنید:
lint [flags] <project directory>
به عنوان مثال ، می توانید دستور زیر را برای اسکن پرونده های زیر دایرکتوری myproject
و زیر مجموعه های آن صادر کنید. ID ID MissingPrefix
به LINT می گوید فقط برای ویژگی های XML که پیشوند فضای نامگذاری اندرویدی را از دست نمی دهند ، اسکن کنید.
lint --check MissingPrefix myproject
برای دیدن لیست کامل پرچم ها و آرگومان های خط فرمان پشتیبانی شده توسط ابزار ، از دستور زیر استفاده کنید:
lint --help
مثال زیر خروجی کنسول را نشان می دهد که دستور LINT در برابر پروژه ای به نام زلزله اجرا می شود:
$ 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 را برای گزارش مسائل غیر بحرانی در سطح شدت کمتری پیکربندی کنید.
میزان شدت آن است:
-
enable
-
disable
یاignore
-
informational
-
warning
-
error
-
fatal
می توانید بررسی خط را برای سطوح مختلف پیکربندی کنید:
- در سطح جهانی (کل پروژه)
- ماژول پروژه
- ماژول تولید
- ماژول تست
- فایل ها را باز کنید
- سلسله مراتب طبقه
- Version Control System (VCS) scopes
Configure the lint file
You can specify your lint checking preferences in the lint.xml
file. If you are creating this file manually, place it in the root directory of your Android project.
The lint.xml
file consists of an enclosing <lint>
parent tag that contains one or more children <issue>
elements. Lint defines a unique id
attribute value for each <issue>
:
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --> </lint>
To change an issue's severity level or disable lint checking for the issue, set the severity attribute in the <issue>
tag.
Tip: For a full list of lint-supported issues and their corresponding issue IDs, run the lint --list
command.
Sample lint.xml file
The following example shows the contents of a lint.xml
file:
<?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>
This example shows how different issue types are reported. The IconMissingDensityFolder
check is disabled completely, and the ObsoleteLayoutParam
check is disabled only in the files specified in the enclosed <ignore ... />
declarations.
Configure lint checking for Kotlin, Java, and XML source files
You can turn off lint checking for your Kotlin, Java, and XML source files in the Preferences dialog:
- Select File > Settings (on Windows) or Android Studio > Preferences (on macOS or Linux).
- Select Editor > Inspections .
- To disable, deselect the appropriate source file.
You can set these either for the IDE or for individual projects by selecting the appropriate profile.
Configure lint checking in Java or Kotlin
To disable lint checking specifically for a class or method in your Android project, add the @SuppressLint
annotation to that code.
The following example shows how you can turn off lint checking for the NewApi
issue in the onCreate
method. The lint tool continues to check for the NewApi
issue in other methods of this class.
کاتلین
@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);
The same can be accomplished on any Composable. The following code snippet shows how you can turn off NewApi
checks on any Composable.
کاتلین
@SuppressLint("NewApi") @Composable fun MyComposable{ ... }
The following example shows how to turn off lint checking for the ParserError
issue in the FeedProvider
class:
کاتلین
@SuppressLint("ParserError") class FeedProvider : ContentProvider() {
جاوا
@SuppressLint("ParserError") public class FeedProvider extends ContentProvider {
To suppress checking for all lint issues in the file, use the all
keyword:
کاتلین
@SuppressLint("all")
جاوا
@SuppressLint("all")
You can use the same annotation to suppress lint checks on any Composable function.
Configure lint checking in XML
Use the tools:ignore
attribute to turn off lint checking for specific sections of your XML files. Put the following namespace value in the lint.xml
file so the lint tool recognizes the attribute:
namespace xmlns:tools="http://schemas.android.com/tools"
The following example shows how you can turn off lint checking for the UnusedResources
issue in a <LinearLayout>
element of an XML layout file. The ignore
attribute is inherited by the children elements of the parent element where the attribute is declared. In this example, the lint check is also disabled for the child <TextView>
element:
<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>
To disable more than one issue, list the issues to disable in a comma-separated string. به عنوان مثال:
tools:ignore="NewApi,StringFormatInvalid"
To suppress checking for all lint issues in the XML element, use the all
keyword:
tools:ignore="all"
Configure lint options with Gradle
The Android plugin for Gradle lets you configure certain lint options, such as which checks to run or ignore, using the lint{}
block in your module-level build.gradle
file.
The following code snippet shows some of the properties you can configure:
کاتلین
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 } } ...
All lint methods that override the given severity level of an issue respect the order of configuration. For example, setting an issue as fatal in finalizeDsl()
overrides disabling it in the main DSL.
Create a warnings baseline
You can take a snapshot of your project's current set of warnings, then use the snapshot as a baseline for future inspection runs so that only new issues are reported. The baseline snapshot lets you start using lint to fail the build without having to go back and address all existing issues first.
To create a baseline snapshot, modify your project's build.gradle
file as follows:
کاتلین
android { lint { baseline = file("lint-baseline.xml") } }
شیار
android { lintOptions { baseline file("lint-baseline.xml") } }
When you first add this line, the lint-baseline.xml
file is created to establish your baseline. From then on, the tools only read the file to determine the baseline. If you want to create a new baseline, manually delete the file and run lint again to re-create it.
Then, run lint from the IDE by selecting Code > Inspect Code or from the command line as follows. The output prints the location of the lint-baseline.xml
file. The file location for your setup might be different from what is shown here:
$ ./gradlew lintDebug -Dlint.baselines.continue=true ... Wrote XML report to file:///app/lint-baseline.xml Created baseline file /app/lint-baseline.xml
Running lint
records all the current issues in the lint-baseline.xml
file. The set of current issues is called the baseline . You can check the lint-baseline.xml
file into version control if you want to share it with others.
Customize the baseline
If you want to add only certain issue types to the baseline, specify the issues to add by editing your project's build.gradle
file as follows:
کاتلین
android { lint { checkOnly += "NewApi" + "HandlerLeak" baseline = file("lint-baseline.xml") } }
شیار
android { lintOptions { checkOnly 'NewApi', 'HandlerLeak' baseline file("lint-baseline.xml") } }
If you add any new warnings to the codebase after you create the baseline, lint lists only the newly introduced bugs.
Baseline warning
When a baseline is in effect, you get an informational warning that tells you that one or more issues were filtered out because they are listed in the baseline. This warning helps you remember that you have configured a baseline and that you need to fix all of the issues at some point.
This informational warning also keeps track of issues that are no longer reported. This information lets you know if you have actually fixed issues, so you can optionally re-create the baseline to prevent an error from coming back undetected.
Note: Baselines are enabled when you run inspections in batch mode in the IDE, but they are ignored for the in-editor checks that run in the background when you are editing a file. This is because baselines are intended for the case where a codebase has a large number of existing warnings, but you do want to fix issues locally while you touch the code.
Run inspections manually
To manually run configured lint and other IDE inspections, select Code > Inspect Code . The results of the inspection appear in the Inspection Results window.
Set the inspection scope and profile
Select the files you want to analyze (the inspection scope ) and the inspections you want to run (the inspection profile ) as follows:
- در نمای اندروید ، پروژه خود را باز کنید و پروژه، پوشه یا فایلی را که می خواهید آنالیز کنید انتخاب کنید.
- از نوار منو، Code > Inspect Code را انتخاب کنید.
In the Specify Inspection Scope dialog, review the settings.
The options that appear in the Specify Inspection Scope dialog varies depending on whether you selected a project, folder, or file:
- When you select one project, file, or directory, the Specify Inspection Scope dialog displays the path to the project, file, or directory you selected.
- When you select more than one project, file, or directory, the Specify Inspection Scope dialog displays a selected radio button for Selected files .
To change what to inspect, select one of the other radio buttons. See Specify Inspection Scope dialog for a description of all possible fields on the Specify Inspection Scope dialog.
- Under Inspection profile , select the profile you want to use.
Click OK to run the inspection.
Figure 4 shows lint and other IDE inspection results from the Inspect Code run:
In the Inspection Results pane, view the inspection results by expanding and selecting error categories, types, or issues.
The Inspection Report pane displays the inspection report for the error category, type, or issue selected in the Inspection Results pane and displays the name and location of the error. Where applicable, the inspection report displays other information, such as a problem synopsis, to help you correct the problem.
In the Inspection Results pane tree view, right-click a category, type, or issue to display the context menu.
Depending on the context, you can:
- Jump to source.
- Exclude and include selected items.
- Suppress problems.
- Edit settings.
- Manage inspection alerts.
- Rerun an inspection.
For descriptions of the toolbar buttons, context menu items, and inspection report fields, see Inspection Results tool window .
Use a custom scope
Use one of the custom scopes provided in Android Studio as follows:
- In the Specify Inspection Scope dialog, select Custom scope .
Click the Custom scope list to display your options:
- All Places: All files.
- Project Files: All the files in the current project.
- Project Source Files: Only the source files in the current project.
- Project Production Files: Only the production files in the current project.
- Project Test Files: Only the test files in the current project.
- Scratches and Consoles: Only the scratch files and consoles you have open in the current project.
- Recently Viewed Files: Only recently viewed files in the current project.
- Current File: Only the current file in your current project. Appears when you have a file or folder selected.
- Selected Directory: Only the current folder in your current project. Appears when you have a folder selected.
- Class Hierarchy: When you select this option and click OK , a dialog appears with all of the classes in the current project. In the dialog, use the Search by Name field to filter and select the classes to inspect. If you don't filter the classes list, code inspection inspects all of the classes.
If you have a VCS configured for the project, there are also options to restrict the search to only files that have been modified.
- روی OK کلیک کنید.
Create a custom scope
When you want to inspect a selection of files and directories that isn't covered by any of the currently available custom scopes, you can create a custom scope:
- In the Specify Inspection Scope dialog, select Custom scope .
Click the three dots after the Custom Scope list.
The Scopes dialog appears.
- را کلیک کنید button in the top-left corner of the dialog to define a new scope.
- In the Add Scope list that appears, select Local .
Both the local and shared scopes are used within the project for the Inspect Code feature. A Shared scope can also be used with other project features that have a scope field. For example, when you click Edit Settings to change the settings for Find Usages , the resulting dialog has a Scope field where you can select a shared scope.
- Give the scope a name and click OK .
The right pane of the Scopes dialog populates with options that let you define the custom scope.
- From the list, select Project .
A list of available projects appears.
Note: You can create the custom scope for projects or packages. مراحل یکسان است.
Expand the project folders, select what you want to add to the custom scope, and select whether to include or exclude it.
- Include : Include this folder and its files, but do not include any of its subfolders.
- Include Recursively : Include this folder and its files as well as its subfolders and their files.
- Exclude : Exclude this folder and its files, but do not exclude any of its subfolders.
- Exclude Recursively : Exclude this folder and its files as well as its subfolders and their files.
Figure 10 shows that the main folder is included, and that the java and res folders are included recursively. Blue indicates a partially included folder, and green indicates recursively included folders and files.
- If you select the java folder and click Exclude Recursively , the green highlighting goes away on the java folder and all the folders and files under it.
- If you select the green-highlighted MainActivity.kt file and click Exclude , MainActivity.kt is no longer highlighted green, but everything else under the java folder remains green.
- روی OK کلیک کنید. The custom scope appears at the bottom of the list.
Review and edit inspection profiles
Android Studio has a selection of lint and other inspection profiles that are updated through Android updates. You can use these profiles as they are or edit their names, descriptions, severities, and scopes. You can also activate and deactivate entire groups of profiles or individual profiles within a group.
To access the Inspections settings:
- Select File > Settings. (on Windows) or Android Studio > Preferences (on macOS or Linux).
- Select Editor > Inspections .
Select the Profile list to toggle between Default (Android Studio) and Project Default (the active project) inspections.
For more information, see the IntelliJ Manage profiles page.
In the Inspections list in the left pane, select a top-level profile category or expand a group and select a specific profile.
When you select a profile category, you can edit all the inspections in that category as a single inspection.
- Select the Show Schema Actions list to copy, rename, add descriptions to, export, and import inspections.
- وقتی کارتان تمام شد، روی OK کلیک کنید.
The Inspections pane shows a list of the supported inspections and their descriptions.