लिंट जांच की मदद से अपने कोड को बेहतर बनाना

टेस्ट बनाने के अलावा, यह भी ज़रूरी है कि आप कोड को Lint टूल से चलाएं, ताकि यह पक्का किया जा सके कि आपके कोड में कोई स्ट्रक्चरल समस्या नहीं है. इससे यह भी पक्का किया जा सकेगा कि आपका ऐप्लिकेशन, फ़ंक्शन से जुड़ी ज़रूरी शर्तों को पूरा करता है. लिंट टूल की मदद से, खराब तरीके से स्ट्रक्चर किया गया कोड ढूंढने में मदद मिलती है. इससे आपके Android ऐप्लिकेशन की विश्वसनीयता और परफ़ॉर्मेंस पर असर पड़ सकता है. साथ ही, आपके कोड को बनाए रखना मुश्किल हो सकता है. हमारा सुझाव है कि ऐप्लिकेशन पब्लिश करने से पहले, लिंट से मिली गड़बड़ियों को ठीक कर लें.

उदाहरण के लिए, अगर आपकी एक्सएमएल रिसॉर्स फ़ाइलों में ऐसे नेमस्पेस हैं जिनका इस्तेमाल नहीं किया गया है, तो इससे स्टोरेज की जगह भर जाती है और बेवजह प्रोसेसिंग होती है. स्ट्रक्चर से जुड़ी अन्य समस्याओं की वजह से भी कोड सही तरीके से नहीं चल पाता. जैसे, ऐसे एलिमेंट या एपीआई कॉल का इस्तेमाल करना जो अब काम नहीं करते या टारगेट एपीआई वर्शन के साथ काम नहीं करते. Lint की मदद से, इन समस्याओं को ठीक किया जा सकता है.

लिंटिंग की परफ़ॉर्मेंस को बेहतर बनाने के लिए, अपने कोड में एनोटेशन भी जोड़े जा सकते हैं.

खास जानकारी

Android Studio, कोड स्कैन करने वाला एक टूल उपलब्ध कराता है. इसे लिंट कहते हैं. यह टूल, ऐप्लिकेशन को एक्ज़ीक्यूट किए बिना या टेस्ट केस लिखे बिना, आपके कोड की स्ट्रक्चरल क्वालिटी से जुड़ी समस्याओं की पहचान करने और उन्हें ठीक करने में आपकी मदद कर सकता है. टूल से पता लगाई गई हर समस्या की जानकारी, ब्यौरे वाले मैसेज और गंभीरता के लेवल के साथ दी जाती है. इससे आपको उन ज़रूरी सुधारों को प्राथमिकता देने में मदद मिलती है जिन्हें करना ज़रूरी है. किसी समस्या के गंभीरता के लेवल को कम करके, उन समस्याओं को अनदेखा किया जा सकता है जो आपके प्रोजेक्ट के लिए काम की नहीं हैं. इसके अलावा, किसी समस्या के गंभीरता के लेवल को बढ़ाकर, खास समस्याओं को हाइलाइट किया जा सकता है.

लिंट टूल, आपकी Android प्रोजेक्ट की सोर्स फ़ाइलों में संभावित गड़बड़ियों की जांच करता है. साथ ही, यह सही तरीके से काम करने, सुरक्षा, परफ़ॉर्मेंस, इस्तेमाल में आसानी, सुलभता, और अंतरराष्ट्रीयकरण के लिए ऑप्टिमाइज़ेशन में सुधार करता है. Android Studio का इस्तेमाल करते समय, ऐप्लिकेशन बनाने पर कॉन्फ़िगर किए गए लिंट और आईडीई की जांचें अपने-आप शुरू हो जाती हैं. हालांकि, इस पेज पर बताए गए तरीके से, जांचों को मैन्युअल तरीके से शुरू किया जा सकता है या कमांड लाइन से लिंट चलाया जा सकता है.

Android Studio का इस्तेमाल करते समय, पहले से मौजूद लिंट टूल आपके कोड की जांच करता है. चेतावनी और गड़बड़ियों को दो तरीकों से देखा जा सकता है:

  • एडिटर विंडो में पॉप-अप टेक्स्ट के तौर पर. लिंट को कोई समस्या मिलने पर, वह समस्या वाले कोड को पीले रंग से हाइलाइट करता है. ज़्यादा गंभीर समस्याओं के लिए, यह कोड को लाल रंग से हाइलाइट करता है.
  • कोड > कोड की जांच करें पर क्लिक करने पर, आपको लिंट जांच के नतीजे विंडो में यह विकल्प दिखेगा.

ध्यान दें: Android Studio में कोड कंपाइल होने पर, कोड की समीक्षा को आसान बनाने के लिए, अतिरिक्त IntelliJ कोड की जांच की जाती हैं. Android Studio को अप-टू-डेट रखें, ताकि यह पक्का किया जा सके कि लिंट के नए नियम और जांच उपलब्ध हैं.

पहली इमेज में दिखाया गया है कि लिंट टूल, ऐप्लिकेशन की सोर्स फ़ाइलों को कैसे प्रोसेस करता है.

लिंट टूल की मदद से कोड स्कैन करने का वर्कफ़्लो.
पहली इमेज. लिंट टूल की मदद से कोड स्कैन करने का वर्कफ़्लो.
ऐप्लिकेशन के सोर्स फ़ाइलें
सोर्स फ़ाइलों में वे फ़ाइलें शामिल होती हैं जिनसे आपका Android प्रोजेक्ट बनता है. इनमें Kotlin, Java, और XML फ़ाइलें, आइकॉन, और ProGuard कॉन्फ़िगरेशन फ़ाइलें शामिल हैं.
lint.xml फ़ाइल
यह एक कॉन्फ़िगरेशन फ़ाइल है. इसका इस्तेमाल करके, उन सभी लिंट चेक के बारे में बताया जा सकता है जिन्हें आपको शामिल नहीं करना है. साथ ही, समस्या की गंभीरता के लेवल को पसंद के मुताबिक बनाया जा सकता है.
लिंट टूल
यह एक स्टैटिक कोड स्कैनिंग टूल है. इसे अपने Android प्रोजेक्ट पर, कमांड लाइन से या Android Studio में चलाया जा सकता है. लिंट टूल, स्ट्रक्चरल कोड से जुड़ी समस्याओं की जांच करता है. इनसे आपके Android ऐप्लिकेशन की क्वालिटी और परफ़ॉर्मेंस पर असर पड़ सकता है.
लिंट चेकिंग के नतीजे
लिंट के नतीजे, कंसोल या Android Studio में जांच के नतीजे विंडो में देखे जा सकते हैं. अगर कमांड लाइन से lint चलाया जाता है, तो नतीजे build/ फ़ोल्डर में सेव होते हैं. ज़्यादा जानकारी के लिए, मैन्युअल तरीके से जांच करना सेक्शन देखें.

कमांड लाइन से लिंट चलाना

अगर Android Studio या Gradle का इस्तेमाल किया जा रहा है, तो अपने प्रोजेक्ट के लिए lint टास्क को शुरू करने के लिए, Gradle रैपर का इस्तेमाल करें. इसके लिए, अपने प्रोजेक्ट की रूट डायरेक्ट्री से इनमें से कोई एक कमांड डालें:

ध्यान दें: Android Gradle प्लगिन को हमेशा अप-टू-डेट रखें, ताकि लिंट के नए नियमों का इस्तेमाल किया जा सके.

  • Windows पर:
    gradlew lint
    
  • Linux या macOS पर:
    ./gradlew lint
    

आपको इससे मिलता-जुलता आउटपुट दिखेगा:

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

लिंट टूल की जांच पूरी होने के बाद, यह लिंट रिपोर्ट के XML और HTML वर्शन के पाथ उपलब्ध कराता है. इसके बाद, एचटीएमएल रिपोर्ट पर जाएं और उसे अपने ब्राउज़र में खोलें. जैसा कि इमेज 2 में दिखाया गया है.

एचटीएमएल लिंट रिपोर्ट का सैंपल
दूसरी इमेज. एचटीएमएल लिंट रिपोर्ट का सैंपल.

अगर आपके प्रोजेक्ट में बिल्ड वैरिएंट शामिल हैं, तो लिंट सिर्फ़ डिफ़ॉल्ट वैरिएंट की जांच करता है. अगर आपको किसी दूसरे वैरिएंट पर लिंट चलाना है, तो आपको वैरिएंट के नाम को कैपिटल लेटर में लिखना होगा. साथ ही, इसके पहले lint लगाना होगा.

./gradlew lintRelease

ध्यान दें: लिंट, आपके बिल्ड के हिस्से के तौर पर अपने-आप नहीं चलता. हमारा सुझाव है कि आप लगातार इंटिग्रेशन बिल्ड के हिस्से के तौर पर, साफ़ तौर पर लिंट चलाएं. इससे आपको अपने मौजूदा सोर्स कोड को बनाते समय, लिंट की नई जांचें दिखेंगी.

कमांड लाइन से Gradle टास्क चलाने के बारे में ज़्यादा जानने के लिए, कमांड लाइन से अपना ऐप्लिकेशन बनाएं लेख पढ़ें.

अलग से उपलब्ध टूल का इस्तेमाल करके लिंट चलाना

अगर Android Studio या Gradle का इस्तेमाल नहीं किया जा रहा है, तो स्टैंडअलोन lint टूल का इस्तेमाल करने के लिए, Android SDK के कमांड-लाइन टूल इंस्टॉल करें. android_sdk/cmdline-tools/version/bin/lint पर जाकर, लिंट टूल ढूंढें.

ध्यान दें: अगर Gradle प्रोजेक्ट पर स्टैंडअलोन टूल चलाने की कोशिश की जाती है, तो गड़बड़ी का मैसेज दिखता है. Gradle प्रोजेक्ट पर लिंट चलाने के लिए, आपको हमेशा gradle lint (Windows पर) या ./gradlew lint (macOS या Linux पर) का इस्तेमाल करना चाहिए.

किसी प्रोजेक्ट डायरेक्ट्री में मौजूद फ़ाइलों की सूची के लिए, लिंट चलाने के लिए इस कमांड का इस्तेमाल करें:

lint [flags] <project directory>

उदाहरण के लिए, myproject डायरेक्ट्री और उसकी सबडायरेक्ट्री में मौजूद फ़ाइलों को स्कैन करने के लिए, यह कमांड जारी की जा सकती है. समस्या का आईडी MissingPrefix लिंट को सिर्फ़ उन एक्सएमएल एट्रिब्यूट को स्कैन करने के लिए कहता है जिनमें Android नेमस्पेस प्रीफ़िक्स मौजूद नहीं है.

lint --check MissingPrefix myproject 

टूल के साथ काम करने वाले फ़्लैग और कमांड-लाइन आर्ग्युमेंट की पूरी सूची देखने के लिए, यहां दिया गया निर्देश इस्तेमाल करें:

lint --help

यहां दिए गए उदाहरण में, Earthquake नाम के प्रोजेक्ट के लिए 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

अलग-अलग लेवल के लिए, लिंट की जांच को कॉन्फ़िगर किया जा सकता है:

  • पूरी दुनिया में (पूरे प्रोजेक्ट के लिए)
  • प्रोजेक्ट मॉड्यूल
  • प्रोडक्शन मॉड्यूल
  • टेस्ट मॉड्यूल
  • फ़ाइलें खोलो
  • क्लास हैरारकी
  • वर्शन कंट्रोल सिस्टम (वीसीएस) के स्कोप

लिंट फ़ाइल को कॉन्फ़िगर करना

lint.xml फ़ाइल में, लिंट की जांच से जुड़ी प्राथमिकताएं तय की जा सकती हैं. अगर आपको यह फ़ाइल मैन्युअल तरीके से बनानी है, तो इसे अपने Android प्रोजेक्ट की रूट डायरेक्ट्री में रखें.

lint.xml फ़ाइल में, <lint> पैरंट टैग होता है. इसमें एक या उससे ज़्यादा चाइल्ड <issue> एलिमेंट शामिल होते हैं. Lint, हर <issue> के लिए यूनीक id एट्रिब्यूट वैल्यू तय करता है:

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

किसी समस्या के गंभीर होने का लेवल बदलने या समस्या के लिए लिंट की जांच बंद करने के लिए, <issue> टैग में गंभीरता एट्रिब्यूट सेट करें.

अहम जानकारी: लिंट की सुविधा के साथ काम करने वाली समस्याओं और उनके आईडी की पूरी सूची देखने के लिए, lint --list कमांड चलाएं. --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, और एक्सएमएल सोर्स फ़ाइलों के लिए, लिंट की जांच को कॉन्फ़िगर करना

प्राथमिकताएं डायलॉग में जाकर, Kotlin, Java, और XML सोर्स फ़ाइलों के लिए लिंट की जांच करने की सुविधा बंद की जा सकती है:

  1. Windows पर, फ़ाइल > सेटिंग या macOS या Linux पर, Android Studio > प्राथमिकताएं चुनें.
  2. एडिटर > जांच चुनें.
  3. इसे बंद करने के लिए, सोर्स फ़ाइल से सही का निशान हटाएं.

इन सेटिंग को आईडीई या अलग-अलग प्रोजेक्ट के लिए सेट किया जा सकता है. इसके लिए, सही प्रोफ़ाइल चुनें.

Java या Kotlin में लिंट की जांच को कॉन्फ़िगर करना

अगर आपको अपनी Android परियोजना में किसी क्लास या तरीके के लिए, लिंट की जांच को बंद करना है, तो उस कोड में @SuppressLint एनोटेशन जोड़ें.

यहां दिए गए उदाहरण में, onCreate तरीके में मौजूद NewApi समस्या के लिए, लिंट की जांच करने की सुविधा बंद करने का तरीका बताया गया है. लिंट टूल, इस क्लास के अन्य तरीकों में NewApi समस्या की जांच करता रहता है.

Kotlin

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

Java

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

इसी तरह, किसी भी कंपोज़ेबल पर यह काम किया जा सकता है. यहां दिए गए कोड स्निपेट में, किसी भी कंपोज़ेबल पर NewApi की जांच बंद करने का तरीका दिखाया गया है.

Kotlin

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

यहां दिए गए उदाहरण में, FeedProvider क्लास में मौजूद ParserError समस्या के लिए, लिंट की जांच बंद करने का तरीका बताया गया है:

Kotlin

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

Java

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

फ़ाइल में लिंट से जुड़ी सभी समस्याओं की जांच को बंद करने के लिए, all कीवर्ड का इस्तेमाल करें:

Kotlin

@SuppressLint("all")

Java

@SuppressLint("all")

किसी भी कंपोज़ेबल फ़ंक्शन पर लिंट चेक को बंद करने के लिए, इसी एनोटेशन का इस्तेमाल किया जा सकता है.

एक्सएमएल में लिंट की जांच करने की सुविधा कॉन्फ़िगर करना

अपनी एक्सएमएल फ़ाइलों के कुछ सेक्शन के लिए, लिंट की जांच करने की सुविधा बंद करने के लिए, tools:ignore एट्रिब्यूट का इस्तेमाल करें. lint.xml फ़ाइल में यहां दी गई नेमस्पेस वैल्यू डालें, ताकि लिंट टूल एट्रिब्यूट को पहचान सके:

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

यहां दिए गए उदाहरण में बताया गया है कि एक्सएमएल लेआउट फ़ाइल के <LinearLayout> एलिमेंट में, UnusedResources समस्या के लिए लिंट चेकिंग को कैसे बंद किया जा सकता है. ignore एट्रिब्यूट, पैरंट एलिमेंट के उन चाइल्ड एलिमेंट से इनहेरिट किया जाता है जिनमें एट्रिब्यूट का एलान किया गया है. इस उदाहरण में, चाइल्ड <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"

एक्सएमएल एलिमेंट में, लिंट से जुड़ी सभी समस्याओं की जांच को बंद करने के लिए, all कीवर्ड का इस्तेमाल करें:

tools:ignore="all"

Gradle की मदद से, लिंट के विकल्प कॉन्फ़िगर करना

Android Gradle प्लग इन की मदद से, कुछ लिंट विकल्प कॉन्फ़िगर किए जा सकते हैं. जैसे, कौनसी जांचें चलानी हैं या अनदेखा करनी हैं. इसके लिए, अपने मॉड्यूल-लेवल की build.gradle फ़ाइल में lint{} ब्लॉक का इस्तेमाल करें.

यहां दिए गए कोड स्निपेट में, कॉन्फ़िगर की जा सकने वाली कुछ प्रॉपर्टी दिखाई गई हैं:

Kotlin

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

ग्रूवी

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

लिंट के वे सभी तरीके जो किसी समस्या के लिए दिए गए गंभीरता के लेवल को बदल देते हैं, वे कॉन्फ़िगरेशन के क्रम का पालन करते हैं. उदाहरण के लिए, finalizeDsl() में किसी समस्या को गंभीर के तौर पर सेट करने से, मुख्य डीएसएल में उसे बंद करने की सेटिंग बदल जाती है.

चेतावनी के लिए बेसलाइन बनाना

अपने प्रोजेक्ट में मौजूद चेतावनियों के मौजूदा सेट का स्नैपशॉट लिया जा सकता है. इसके बाद, इस स्नैपशॉट का इस्तेमाल, आने वाले समय में होने वाली जांच के लिए बेसलाइन के तौर पर किया जा सकता है. इससे सिर्फ़ नई समस्याओं की जानकारी मिलेगी. बेसलाइन स्नैपशॉट की मदद से, बिल्ड को फ़ेल करने के लिए लिंट का इस्तेमाल किया जा सकता है. इसके लिए, आपको पहले सभी मौजूदा समस्याओं को ठीक करने की ज़रूरत नहीं होती.

बेसलाइन स्नैपशॉट बनाने के लिए, अपने प्रोजेक्ट की build.gradle फ़ाइल में इस तरह बदलाव करें:

Kotlin

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

ग्रूवी

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

इस लाइन को पहली बार जोड़ने पर, lint-baseline.xml फ़ाइल बनाई जाती है, ताकि आपके बेसलाइन को सेट किया जा सके. इसके बाद, टूल सिर्फ़ फ़ाइल को पढ़ते हैं, ताकि बेसलाइन तय की जा सके. अगर आपको नई बेसलाइन बनानी है, तो फ़ाइल को मैन्युअल तरीके से मिटाएं. इसके बाद, इसे फिर से बनाने के लिए, लिंट को फिर से चलाएं.

इसके बाद, IDE से लिंट चलाने के लिए, Code > Inspect Code चुनें या कमांड लाइन से इस तरह चलाएं. आउटपुट में, lint-baseline.xml फ़ाइल की जगह की जानकारी प्रिंट होती है. आपके सेटअप के लिए फ़ाइल की जगह, यहां दिखाई गई जगह से अलग हो सकती है:

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

lint चलाने पर, lint-baseline.xml फ़ाइल में मौजूद सभी मौजूदा समस्याएं रिकॉर्ड हो जाती हैं. मौजूदा समस्याओं के सेट को बेसलाइन कहा जाता है. अगर आपको lint-baseline.xml फ़ाइल को दूसरों के साथ शेयर करना है, तो उसे वर्शन कंट्रोल में चेक इन करें.

बेसलाइन को पसंद के मुताबिक बनाना

अगर आपको बेसलाइन में सिर्फ़ कुछ तरह की समस्याएं जोड़नी हैं, तो अपने प्रोजेक्ट की build.gradle फ़ाइल में बदलाव करके, जोड़ने के लिए समस्याएं तय करें. इसके लिए, यह तरीका अपनाएं:

Kotlin

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

ग्रूवी

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

अगर आपने बेसलाइन बनाने के बाद, कोडबेस में कोई नई चेतावनी जोड़ी है, तो लिंट सिर्फ़ हाल ही में जोड़े गए बग की सूची बनाता है.

बेसलाइन से जुड़ी चेतावनी

जब कोई बेसलाइन लागू होती है, तो आपको एक सूचना वाली चेतावनी मिलती है. इसमें बताया जाता है कि एक या उससे ज़्यादा समस्याओं को फ़िल्टर कर दिया गया है, क्योंकि वे बेसलाइन में शामिल हैं. इस चेतावनी से आपको यह याद रखने में मदद मिलती है कि आपने एक बेसलाइन कॉन्फ़िगर की है और आपको किसी समय सभी समस्याओं को ठीक करना होगा.

सूचना देने वाली यह चेतावनी, उन समस्याओं को भी ट्रैक करती है जिनकी अब शिकायत नहीं की जाती. इस जानकारी से आपको पता चलता है कि आपने समस्याओं को ठीक किया है या नहीं. इसलिए, अगर चाहें, तो बेसलाइन को फिर से बनाया जा सकता है, ताकि बिना पता चले कोई गड़बड़ी वापस न आ जाए.

ध्यान दें: आईडीई में बैच मोड में जांच करने पर, बेसलाइन चालू हो जाती हैं. हालांकि, फ़ाइल में बदलाव करते समय बैकग्राउंड में चलने वाली इन-एडिटर जांचों के लिए, इन्हें अनदेखा कर दिया जाता है. ऐसा इसलिए है, क्योंकि बेसलाइन का इस्तेमाल तब किया जाता है, जब किसी कोडबेस में पहले से ही कई चेतावनियां मौजूद हों. हालांकि, आपको कोड में बदलाव करते समय, समस्याओं को स्थानीय तौर पर ठीक करना हो.

मैन्युअल तरीके से जांच करना

कॉन्फ़िगर किए गए लिंट और अन्य आईडीई की जांचों को मैन्युअल तरीके से चलाने के लिए, कोड > कोड की जांच करें चुनें. जांच के नतीजे, जांच के नतीजे विंडो में दिखते हैं.

जांच का दायरा और प्रोफ़ाइल सेट करना

आपको जिन फ़ाइलों की जांच करनी है उन्हें चुनें (जांच का स्कोप). इसके अलावा, आपको जिन जांचों को चलाना है उन्हें चुनें (जांच की प्रोफ़ाइल). इसके लिए, यह तरीका अपनाएं:

  1. Android व्यू में, अपना प्रोजेक्ट खोलें. इसके बाद, वह प्रोजेक्ट, फ़ोल्डर या फ़ाइल चुनें जिसका विश्लेषण करना है.
  2. मेन्यू बार में जाकर, कोड > कोड की जांच करें को चुनें.
  3. जांच का दायरा तय करें डायलॉग बॉक्स में, सेटिंग की समीक्षा करें.

    जांच के दायरे की सेटिंग देखना
    तीसरी इमेज. जांच के दायरे की सेटिंग देखें.

    जांच का दायरा तय करें डायलॉग बॉक्स में दिखने वाले विकल्प अलग-अलग होते हैं. ये विकल्प इस बात पर निर्भर करते हैं कि आपने कोई प्रोजेक्ट, फ़ोल्डर या फ़ाइल चुनी है या नहीं:

    • किसी प्रोजेक्ट, फ़ाइल या डायरेक्ट्री को चुनने पर, जांच का दायरा तय करें डायलॉग बॉक्स में, चुने गए प्रोजेक्ट, फ़ाइल या डायरेक्ट्री का पाथ दिखता है.
    • एक से ज़्यादा प्रोजेक्ट, फ़ाइल या डायरेक्ट्री चुनने पर, जांच का दायरा तय करें डायलॉग में, चुनी गई फ़ाइलें के लिए चुना गया रेडियो बटन दिखता है.

    आपको किस चीज़ की जांच करनी है, यह बदलने के लिए, किसी दूसरे रेडियो बटन को चुनें. Specify Inspection Scope डायलॉग बॉक्स में मौजूद सभी फ़ील्ड के बारे में जानने के लिए, Specify Inspection Scope dialog देखें.

  4. जांच की प्रोफ़ाइल में जाकर, वह प्रोफ़ाइल चुनें जिसका इस्तेमाल करना है.
  5. जांच करने के लिए, ठीक है पर क्लिक करें.

    चौथी इमेज में, कोड की जांच करें सुविधा का इस्तेमाल करके, लिंट और अन्य आईडीई की जांच के नतीजे दिखाए गए हैं:

    समस्या को हल करने का तरीका देखने के लिए, कोई समस्या चुनें.
    चौथी इमेज. जांच के नतीजे. समस्या हल करने का तरीका देखने के लिए, कोई समस्या चुनें.
  6. जांच के नतीजे पैनल में, गड़बड़ी की कैटगरी, टाइप या समस्याएं बड़ा करके और चुनकर, जांच के नतीजे देखें.

    जांच रिपोर्ट पैनल में, गड़बड़ी की कैटगरी, टाइप या जांच के नतीजे पैनल में चुनी गई समस्या की जांच रिपोर्ट दिखती है. साथ ही, इसमें गड़बड़ी का नाम और जगह दिखती है. जहां लागू हो, वहां जांच की रिपोर्ट में अन्य जानकारी भी दिखती है. जैसे, समस्या की खास जानकारी. इससे आपको समस्या ठीक करने में मदद मिलती है.

  7. जांच के नतीजे वाले पैन के ट्री व्यू में, किसी कैटगरी, टाइप या समस्या पर राइट क्लिक करके, संदर्भ मेन्यू दिखाएं.

    संदर्भ के हिसाब से, ये काम किए जा सकते हैं:

    • सोर्स पर जाएं.
    • चुने गए आइटम को शामिल या बाहर करें.
    • समस्याओं को छिपाना.
    • सेटिंग में बदलाव करें।
    • जांच की सूचनाएं मैनेज करें.
    • जांच को फिर से चलाएं.

टूलबार बटन, कॉन्टेक्स्ट मेन्यू आइटम, और जांच रिपोर्ट फ़ील्ड की जानकारी के लिए, जांच के नतीजों वाली टूल विंडो देखें.

कस्टम स्कोप का इस्तेमाल करना

Android Studio में दिए गए कस्टम स्कोप में से किसी एक का इस्तेमाल इस तरह करें:

  1. जांच का दायरा तय करें डायलॉग बॉक्स में, कस्टम स्कोप को चुनें.
  2. अपने विकल्प दिखाने के लिए, कस्टम स्कोप सूची पर क्लिक करें:

    वह जांच का दायरा चुनें जिसका आपको इस्तेमाल करना है
    पांचवीं इमेज. वह कस्टम स्कोप चुनें जिसे आपको इस्तेमाल करना है.
    • सभी जगहें: सभी फ़ाइलें.
    • प्रोजेक्ट फ़ाइलें: मौजूदा प्रोजेक्ट में मौजूद सभी फ़ाइलें.
    • प्रोजेक्ट की सोर्स फ़ाइलें: सिर्फ़ मौजूदा प्रोजेक्ट की सोर्स फ़ाइलें.
    • प्रोजेक्ट की प्रोडक्शन फ़ाइलें: सिर्फ़ मौजूदा प्रोजेक्ट की प्रोडक्शन फ़ाइलें.
    • प्रोजेक्ट की टेस्ट फ़ाइलें: सिर्फ़ मौजूदा प्रोजेक्ट की टेस्ट फ़ाइलें.
    • स्क्रैच और कंसोल: सिर्फ़ वे स्क्रैच फ़ाइलें और कंसोल जो आपने मौजूदा प्रोजेक्ट में खोले हैं.
    • हाल ही में देखी गई फ़ाइलें: सिर्फ़ मौजूदा प्रोजेक्ट में हाल ही में देखी गई फ़ाइलें.
    • मौजूदा फ़ाइल: सिर्फ़ आपके मौजूदा प्रोजेक्ट की मौजूदा फ़ाइल. यह तब दिखता है, जब आपने कोई फ़ाइल या फ़ोल्डर चुना हो.
    • चुनी गई डायरेक्ट्री: आपके मौजूदा प्रोजेक्ट में सिर्फ़ मौजूदा फ़ोल्डर. यह तब दिखता है, जब आपने कोई फ़ोल्डर चुना हो.
    • क्लास का क्रम: इस विकल्प को चुनने और ठीक है पर क्लिक करने पर, एक डायलॉग बॉक्स दिखता है. इसमें मौजूदा प्रोजेक्ट की सभी क्लास होती हैं. डायलॉग बॉक्स में, नाम के हिसाब से खोजें फ़ील्ड का इस्तेमाल करके, उन क्लास को फ़िल्टर करें और चुनें जिनकी जांच करनी है. अगर आपने क्लास की सूची को फ़िल्टर नहीं किया है, तो कोड की जांच करने वाला टूल सभी क्लास की जांच करेगा.
  3. अगर आपने प्रोजेक्ट के लिए वीसीएस कॉन्फ़िगर किया है, तो आपके पास सिर्फ़ उन फ़ाइलों में खोजने का विकल्प भी होता है जिनमें बदलाव किया गया है.

  4. ठीक है पर क्लिक करें.

कस्टम स्कोप बनाना

जब आपको फ़ाइलों और डायरेक्ट्री के ऐसे कलेक्शन की जांच करनी हो जो उपलब्ध कस्टम स्कोप में शामिल नहीं है, तो कस्टम स्कोप बनाया जा सकता है:

  1. जांच का दायरा तय करें डायलॉग बॉक्स में, कस्टम स्कोप को चुनें.
  2. कस्टम स्कोप सूची के बाद मौजूद तीन बिंदु वाले आइकॉन पर क्लिक करें.

    &#39;जांच के दायरे के बारे में बताएं&#39; डायलॉग बॉक्स
    छठी इमेज. जांच के दायरे के बारे में जानकारी दें.

    आपको स्कोप डायलॉग दिखेगा.

    कस्टम स्कोप बनाना
    सातवीं इमेज. कस्टम स्कोप बनाएं.
  3. नया स्कोप तय करने के लिए, डायलॉग बॉक्स में सबसे ऊपर बाईं ओर मौजूद बटन पर क्लिक करें.
  4. इसके बाद दिखने वाली स्कोप जोड़ें सूची में, लोकल चुनें.

    कोड की जांच करें सुविधा के लिए, प्रोजेक्ट में लोकल और शेयर किए गए, दोनों स्कोप का इस्तेमाल किया जाता है. शेयर किया गया स्कोप, प्रोजेक्ट की उन अन्य सुविधाओं के साथ भी इस्तेमाल किया जा सकता है जिनमें स्कोप फ़ील्ड होता है. उदाहरण के लिए, इस्तेमाल के उदाहरण ढूंढें की सेटिंग बदलने के लिए, सेटिंग में बदलाव करें पर क्लिक करने पर, दिखने वाले डायलॉग में स्कोप फ़ील्ड होता है. यहां शेयर किया गया स्कोप चुना जा सकता है.

    &#39;इस्तेमाल की गई जगहें ढूंढें&#39; डायलॉग से, शेयर किया गया स्कोप चुनें
    आठवीं इमेज. इस्तेमाल के उदाहरण ढूंढें डायलॉग से, शेयर किया गया कोई स्कोप चुनें.
  5. स्कोप को कोई नाम दें और ठीक है पर क्लिक करें.

    स्कोप डायलॉग के दाईं ओर मौजूद पैनल में, ऐसे विकल्प दिखते हैं जिनकी मदद से कस्टम स्कोप तय किया जा सकता है.

  6. सूची में से, प्रोजेक्ट चुनें.

    उपलब्ध प्रोजेक्ट की सूची दिखती है.

    ध्यान दें: प्रोजेक्ट या पैकेज के लिए कस्टम स्कोप बनाया जा सकता है. दोनों के लिए एक ही तरीका अपनाएं.

  7. प्रोजेक्ट फ़ोल्डर को बड़ा करें. इसके बाद, वह आइटम चुनें जिसे आपको कस्टम स्कोप में जोड़ना है. इसके बाद, चुनें कि आपको उसे शामिल करना है या नहीं.

    कस्टम स्कोप तय करना
    नौवीं इमेज. कस्टम स्कोप तय करें.
    • शामिल करें: इस फ़ोल्डर और इसकी फ़ाइलों को शामिल करें. हालांकि, इसके किसी भी सब-फ़ोल्डर को शामिल न करें.
    • सब-फ़ोल्डर भी शामिल करें: इस फ़ोल्डर और इसकी फ़ाइलों के साथ-साथ, इसके सबफ़ोल्डर और उनकी फ़ाइलों को भी शामिल करें.
    • शामिल न करें: इस फ़ोल्डर और इसकी फ़ाइलों को शामिल न करें. हालांकि, इसके किसी भी सबफ़ोल्डर को शामिल न करें.
    • सब-फ़ोल्डर और फ़ाइलें भी शामिल न करें: इस विकल्प को चुनने पर, इस फ़ोल्डर और इसकी फ़ाइलों के साथ-साथ इसके सब-फ़ोल्डर और उनकी फ़ाइलों को भी शामिल नहीं किया जाता.

    दसवीं इमेज में दिखाया गया है कि main फ़ोल्डर शामिल है. साथ ही, java और res फ़ोल्डर को बार-बार शामिल किया गया है. नीले रंग से पता चलता है कि फ़ोल्डर को आंशिक रूप से शामिल किया गया है. वहीं, हरे रंग से पता चलता है कि फ़ोल्डर और फ़ाइलों को बार-बार शामिल किया गया है.

    कस्टम स्कोप के लिए पैटर्न का उदाहरण
    दसवीं इमेज. कस्टम स्कोप के लिए पैटर्न का उदाहरण.
    • अगर आपने java फ़ोल्डर चुना है और Exclude Recursively पर क्लिक किया है, तो java फ़ोल्डर और उसके अंदर मौजूद सभी फ़ोल्डर और फ़ाइलों से हरे रंग का हाइलाइट हट जाएगा.
    • अगर आपने हरे रंग से हाइलाइट की गई MainActivity.kt फ़ाइल को चुना और शामिल न करें पर क्लिक किया, तो MainActivity.kt अब हरे रंग से हाइलाइट नहीं होगी. हालांकि, java फ़ोल्डर में मौजूद बाकी सभी फ़ाइलें हरे रंग से हाइलाइट रहेंगी.
  8. ठीक है पर क्लिक करें. कस्टम स्कोप, सूची में सबसे नीचे दिखता है.

निरीक्षण प्रोफ़ाइलों की समीक्षा करना और उनमें बदलाव करना

Android Studio में, लिंट और अन्य जांच प्रोफ़ाइलों का कलेक्शन होता है. इन्हें Android के अपडेट के ज़रिए अपडेट किया जाता है. इन प्रोफ़ाइलों का इस्तेमाल उसी तरह किया जा सकता है जैसे वे हैं. इसके अलावा, इनके नाम, ब्यौरे, गंभीरता के स्तर, और स्कोप में बदलाव किया जा सकता है. आपके पास किसी ग्रुप में मौजूद सभी प्रोफ़ाइलों या किसी ग्रुप में मौजूद अलग-अलग प्रोफ़ाइलों को चालू और बंद करने का विकल्प भी होता है.

निरीक्षण की सेटिंग ऐक्सेस करने के लिए:

  1. फ़ाइल > सेटिंग चुनें. (Windows पर) या Android Studio > Preferences (macOS या Linux पर).
  2. एडिटर > जांच चुनें.
  3. जांच पैनल में, उन जांचों की सूची दिखती है जिनके लिए यह सुविधा उपलब्ध है. साथ ही, उनकी जानकारी भी दिखती है.

    निरीक्षण की सुविधा और उसके बारे में जानकारी
    ग्यारहवीं इमेज. जांच की सुविधा और उसके बारे में जानकारी.
  4. प्रोफ़ाइल सूची को चुनें. इससे डिफ़ॉल्ट (Android Studio) और प्रोजेक्ट के लिए डिफ़ॉल्ट (चालू प्रोजेक्ट) की जांच के बीच टॉगल किया जा सकता है.

    ज़्यादा जानकारी के लिए, IntelliJ का प्रोफ़ाइलें मैनेज करना पेज देखें.

  5. बाईं ओर मौजूद पैनल में, जांच सूची में जाकर, टॉप-लेवल की प्रोफ़ाइल कैटगरी चुनें या किसी ग्रुप को बड़ा करके, कोई प्रोफ़ाइल चुनें.

    प्रोफ़ाइल कैटगरी चुनने पर, उस कैटगरी में मौजूद सभी जांचों में एक साथ बदलाव किया जा सकता है.

  6. स्कीमा ऐक्शन दिखाएं &#39;स्कीमा ऐक्शन दिखाएं&#39; आइकॉन सूची चुनें. इससे आपको निरीक्षणों को कॉपी करने, उनका नाम बदलने, उनमें जानकारी जोड़ने, उन्हें एक्सपोर्ट करने, और इंपोर्ट करने की सुविधा मिलती है.
  7. जब आप पूरा कर लें, तब ठीक क्लिक करें.