আপনার অ্যাপটি তার কার্যকরী প্রয়োজনীয়তাগুলো পূরণ করছে কিনা তা নিশ্চিত করার জন্য টেস্ট তৈরি করার পাশাপাশি, আপনার কোডে কোনো কাঠামোগত সমস্যা নেই তা নিশ্চিত করতে লিন্ট টুলের মাধ্যমে কোডটি চালানোও গুরুত্বপূর্ণ। লিন্ট টুল দুর্বলভাবে গঠিত কোড খুঁজে বের করতে সাহায্য করে, যা আপনার অ্যান্ড্রয়েড অ্যাপের নির্ভরযোগ্যতা ও কার্যকারিতাকে প্রভাবিত করতে পারে এবং আপনার কোড রক্ষণাবেক্ষণ করা কঠিন করে তুলতে পারে। আপনার অ্যাপটি প্রকাশ করার আগে লিন্ট দ্বারা শনাক্ত করা যেকোনো ত্রুটি সংশোধন করার জন্য দৃঢ়ভাবে সুপারিশ করা হচ্ছে।
উদাহরণস্বরূপ, যদি আপনার XML রিসোর্স ফাইলগুলিতে অব্যবহৃত নেমস্পেস থাকে, তবে এটি জায়গা দখল করে এবং অপ্রয়োজনীয় প্রক্রিয়াকরণের প্রয়োজন হয়। অন্যান্য কাঠামোগত সমস্যা, যেমন ডেপ্রিকেটেড এলিমেন্টের ব্যবহার অথবা টার্গেট API ভার্সন দ্বারা সমর্থিত নয় এমন API কল, কোডকে সঠিকভাবে চলতে ব্যর্থ করতে পারে। Lint আপনাকে এই সমস্যাগুলো সমাধান করতে সাহায্য করতে পারে।
লিন্টিং-এর কার্যকারিতা উন্নত করতে, আপনি আপনার কোডে অ্যানোটেশনও যোগ করতে পারেন।
সংক্ষিপ্ত বিবরণ
অ্যান্ড্রয়েড স্টুডিওতে লিন্ট (lint) নামে একটি কোড স্ক্যানিং টুল রয়েছে, যা অ্যাপটি চালানো বা টেস্ট কেস না লিখেই আপনার কোডের কাঠামোগত সমস্যাগুলো শনাক্ত ও সংশোধন করতে সাহায্য করে। টুলটি দ্বারা শনাক্ত করা প্রতিটি সমস্যা একটি বিবরণমূলক বার্তা এবং তীব্রতার স্তরসহ রিপোর্ট করা হয়, যাতে আপনি প্রয়োজনীয় গুরুত্বপূর্ণ উন্নতিগুলোকে অগ্রাধিকার দিতে পারেন। আপনি আপনার প্রোজেক্টের সাথে সম্পর্কহীন সমস্যাগুলো উপেক্ষা করার জন্য সেগুলোর তীব্রতার স্তর কমাতে পারেন, অথবা নির্দিষ্ট সমস্যাগুলোকে তুলে ধরার জন্য তীব্রতার স্তর বাড়াতে পারেন।
লিন্ট টুল আপনার অ্যান্ড্রয়েড প্রজেক্টের সোর্স ফাইলগুলোতে সম্ভাব্য বাগ এবং সঠিকতা, নিরাপত্তা, পারফরম্যান্স, ব্যবহারযোগ্যতা, অ্যাক্সেসিবিলিটি ও আন্তর্জাতিকীকরণের জন্য অপটিমাইজেশনের উন্নতি পরীক্ষা করে। অ্যান্ড্রয়েড স্টুডিও ব্যবহার করার সময়, আপনার অ্যাপ বিল্ড করার সাথে সাথে কনফিগার করা লিন্ট এবং আইডিই ইন্সপেকশনগুলো চলে। তবে, এই পৃষ্ঠায় বর্ণিত পদ্ধতি অনুযায়ী আপনি ম্যানুয়ালি অথবা কমান্ড লাইন থেকেও ইন্সপেকশনগুলো চালাতে পারেন।
অ্যান্ড্রয়েড স্টুডিও ব্যবহার করার সময় বিল্ট-ইন লিন্ট টুল আপনার কোড পরীক্ষা করে। আপনি দুইভাবে সতর্কতা এবং ত্রুটি দেখতে পারেন:
- এডিটর উইন্ডোতে পপ-আপ টেক্সট হিসেবে। যখন লিন্ট কোনো সমস্যা খুঁজে পায়, তখন এটি সমস্যাযুক্ত কোডটিকে হলুদ রঙে হাইলাইট করে। আরও গুরুতর সমস্যার ক্ষেত্রে, এটি কোডটির নিচে লাল রঙে আন্ডারলাইন করে।
- লিন্ট পরিদর্শন ফলাফল উইন্ডোতে যখন আপনি কোড > কোড পরিদর্শন-এ ক্লিক করেন।
দ্রষ্টব্য: যখন আপনার কোড অ্যান্ড্রয়েড স্টুডিওতে কম্পাইল করা হয়, তখন কোড রিভিউকে আরও সহজ করার জন্য ইন্টেলিজের অতিরিক্ত কোড ইন্সপেকশনগুলো চলে। সর্বশেষ লিন্ট রুল এবং ইন্সপেকশনগুলো যাতে পাওয়া যায়, তা নিশ্চিত করতে অ্যান্ড্রয়েড স্টুডিওকে যথাসম্ভব আপ-টু-ডেট রাখুন।
চিত্র ১-এ দেখানো হয়েছে, লিন্ট টুল কীভাবে অ্যাপের সোর্স ফাইলগুলো প্রসেস করে।

- অ্যাপ উৎস ফাইল
- সোর্স ফাইলগুলোর মধ্যে আপনার অ্যান্ড্রয়েড প্রজেক্ট গঠনকারী ফাইলগুলো থাকে, যার মধ্যে কোটলিন, জাভা, ও এক্সএমএল ফাইল, আইকন এবং প্রোগার্ড কনফিগারেশন ফাইল অন্তর্ভুক্ত।
-
lint.xmlফাইলটি - একটি কনফিগারেশন ফাইল যা ব্যবহার করে আপনি বাদ দিতে চান এমন যেকোনো লিন্ট চেক নির্দিষ্ট করতে এবং সমস্যার তীব্রতার মাত্রা কাস্টমাইজ করতে পারেন।
- লিন্ট টুল
- একটি স্ট্যাটিক কোড স্ক্যানিং টুল যা আপনি আপনার অ্যান্ড্রয়েড প্রজেক্টে কমান্ড লাইন থেকে অথবা অ্যান্ড্রয়েড স্টুডিওতে চালাতে পারেন। এই লিন্ট টুলটি কোডের কাঠামোগত সমস্যাগুলো পরীক্ষা করে, যা আপনার অ্যান্ড্রয়েড অ্যাপের গুণমান এবং পারফরম্যান্সকে প্রভাবিত করতে পারে।
- লিন্ট পরীক্ষার ফলাফল
- আপনি অ্যান্ড্রয়েড স্টুডিও-এর কনসোল অথবা ইন্সপেকশন রেজাল্টস উইন্ডোতে লিন্ট-এর ফলাফল দেখতে পারেন। আপনি যদি কমান্ড লাইন থেকে
lintচালান, তাহলে ফলাফলগুলোbuild/ফোল্ডারে লেখা হয়। আরও বিস্তারিত জানতে, ম্যানুয়ালি ইন্সপেকশন চালানো সম্পর্কিত অংশটি দেখুন।
কমান্ড লাইন থেকে লিন্ট চালান
আপনি যদি অ্যান্ড্রয়েড স্টুডিও বা গ্রেডল ব্যবহার করেন, তাহলে আপনার প্রজেক্টের রুট ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডগুলির মধ্যে একটি লিখে গ্রেডল র্যাপার ব্যবহার করে আপনার প্রজেক্টের জন্য lint টাস্কটি চালু করুন:
দ্রষ্টব্য: সর্বশেষ লিন্ট নিয়মগুলো ব্যবহার করার জন্য অ্যান্ড্রয়েড গ্রেডল প্লাগইনটি যথাসম্ভব হালনাগাদ রাখুন।
- উইন্ডোজে:
gradlew lint
- লিনাক্স বা ম্যাকওএস-এ:
./gradlew lint
আপনি নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:
> Task :app:lintDebug Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results-debug.html
লিন্ট টুলটি তার যাচাই সম্পন্ন করলে, এটি লিন্ট রিপোর্টের XML এবং HTML সংস্করণের পাথ প্রদান করে। এরপর আপনি HTML রিপোর্টটিতে গিয়ে আপনার ব্রাউজারে সেটি খুলতে পারেন, যেমনটি চিত্র ২-এ দেখানো হয়েছে।

আপনার প্রজেক্টে বিল্ড ভ্যারিয়েন্ট থাকলে, লিন্ট শুধুমাত্র ডিফল্ট ভ্যারিয়েন্টটিই চেক করে। আপনি যদি অন্য কোনো ভ্যারিয়েন্টে লিন্ট চালাতে চান, তবে আপনাকে অবশ্যই ভ্যারিয়েন্টের নামটি বড় হাতের অক্ষরে লিখতে হবে এবং এর আগে lint শব্দটি যোগ করতে হবে।
./gradlew lintRelease
দ্রষ্টব্য: আপনার বিল্ডের অংশ হিসেবে লিন্ট স্বয়ংক্রিয়ভাবে চলে না। আমরা দৃঢ়ভাবে সুপারিশ করি যে আপনি একটি কন্টিনিউয়াস ইন্টিগ্রেশন বিল্ডের অংশ হিসেবে স্পষ্টভাবে লিন্ট চালান, যাতে আপনার বিদ্যমান সোর্স কোড বিল্ড করার সময় আপনি সর্বশেষ লিন্ট চেকগুলো দেখতে পান।
কমান্ড লাইন থেকে গ্রেডল টাস্ক চালানোর বিষয়ে আরও জানতে, “কমান্ড লাইন থেকে আপনার অ্যাপ তৈরি করুন” পড়ুন।
স্বতন্ত্র টুলটি ব্যবহার করে লিন্ট চালান
আপনি যদি অ্যান্ড্রয়েড স্টুডিও বা গ্রেডল ব্যবহার না করেন, তাহলে স্বতন্ত্র লিন্ট টুলটি ব্যবহার করার জন্য অ্যান্ড্রয়েড এসডিকে কমান্ড-লাইন টুলস ইনস্টল করুন। লিন্ট টুলটি android_sdk /cmdline-tools/ version /bin/lint -এ খুঁজে পাওয়া যাবে।
দ্রষ্টব্য: আপনি যদি কোনো গ্রেডল (Gradle) প্রোজেক্টে স্বতন্ত্র টুলটি চালানোর চেষ্টা করেন, তাহলে এটি একটি ত্রুটি দেখাবে। গ্রেডল প্রোজেক্টে লিন্ট (lint) চালানোর জন্য আপনার সর্বদা gradle lint (উইন্ডোজে) অথবা ./gradlew lint (ম্যাকওএস বা লিনাক্সে) ব্যবহার করা উচিত।
প্রজেক্ট ডিরেক্টরিতে থাকা ফাইলগুলোর তালিকার ওপর লিন্ট চালানোর জন্য, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
lint [flags] <project directory>
উদাহরণস্বরূপ, myproject ডিরেক্টরি এবং এর সাবডিরেক্টরিগুলোর ফাইলগুলো স্ক্যান করার জন্য আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন। MissingPrefix ইস্যু আইডিটি লিন্টকে নির্দেশ দেয় যেন এটি শুধুমাত্র সেইসব XML অ্যাট্রিবিউট স্ক্যান করে যেগুলোতে অ্যান্ড্রয়েড নেমস্পেস প্রিফিক্স নেই।
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
আপনি বিভিন্ন স্তরের জন্য লিন্ট চেকিং কনফিগার করতে পারেন:
- বিশ্বব্যাপী (সম্পূর্ণ প্রকল্প)
- প্রকল্প মডিউল
- উৎপাদন মডিউল
- টেস্ট মডিউল
- ফাইলগুলি খুলুন
- শ্রেণী শ্রেণিবিন্যাস
- সংস্করণ নিয়ন্ত্রণ সিস্টেম (VCS) এর পরিধি
লিন্ট ফাইলটি কনফিগার করুন
আপনি lint.xml ফাইলে আপনার লিন্ট চেকিংয়ের পছন্দগুলো নির্দিষ্ট করে দিতে পারেন। যদি আপনি এই ফাইলটি নিজে তৈরি করেন, তবে এটিকে আপনার অ্যান্ড্রয়েড প্রজেক্টের রুট ডিরেক্টরিতে রাখুন।
lint.xml ফাইলটিতে একটি আবদ্ধ <lint> প্যারেন্ট ট্যাগ থাকে, যার মধ্যে এক বা একাধিক <issue> চাইল্ড এলিমেন্ট থাকে। Lint প্রতিটি <issue> এর জন্য একটি অনন্য id অ্যাট্রিবিউটের মান নির্ধারণ করে:
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --> </lint>
কোনো ইস্যুর তীব্রতার স্তর পরিবর্তন করতে বা সেটির জন্য লিন্ট চেকিং নিষ্ক্রিয় করতে, <issue> ট্যাগে severity অ্যাট্রিবিউটটি সেট করুন।
পরামর্শ: লিন্ট-সমর্থিত ইস্যু এবং তাদের সংশ্লিষ্ট ইস্যু আইডিগুলির সম্পূর্ণ তালিকার জন্য, 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, এবং XML সোর্স ফাইলগুলির জন্য লিন্ট চেকিং কনফিগার করুন।
আপনি প্রেফারেন্সেস ডায়ালগে আপনার কোটলিন, জাভা এবং এক্সএমএল সোর্স ফাইলগুলির জন্য লিন্ট চেকিং বন্ধ করতে পারেন:
- ফাইল > সেটিংস (উইন্ডোজে) অথবা অ্যান্ড্রয়েড স্টুডিও > প্রেফারেন্সেস (ম্যাকওএস বা লিনাক্সে) নির্বাচন করুন।
- সম্পাদক > পরিদর্শন নির্বাচন করুন।
- নিষ্ক্রিয় করতে, উপযুক্ত উৎস ফাইলটি অনির্বাচিত করুন।
আপনি উপযুক্ত প্রোফাইল নির্বাচন করে IDE-এর জন্য অথবা স্বতন্ত্র প্রোজেক্টের জন্য এগুলো সেট করতে পারেন।
জাভা বা কোটলিনে লিন্ট চেকিং কনফিগার করুন
আপনার অ্যান্ড্রয়েড প্রজেক্টের কোনো একটি ক্লাস বা মেথডের জন্য নির্দিষ্টভাবে লিন্ট চেকিং নিষ্ক্রিয় করতে, সেই কোডে @SuppressLint অ্যানোটেশনটি যোগ করুন।
নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে আপনি onCreate মেথডে NewApi সমস্যার জন্য লিন্ট চেকিং বন্ধ করতে পারেন। লিন্ট টুলটি এই ক্লাসের অন্যান্য মেথডগুলিতে 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-এর ক্ষেত্রেই একই কাজ করা সম্ভব। নিচের কোড স্নিপেটটিতে দেখানো হয়েছে, কীভাবে আপনি যেকোনো Composable-এ NewApi চেক বন্ধ করতে পারেন।
কোটলিন
@SuppressLint("NewApi") @Composable fun MyComposable{ ... }
নিম্নলিখিত উদাহরণে দেখানো হয়েছে কিভাবে FeedProvider ক্লাসে ParserError সমস্যার জন্য লিন্ট চেকিং বন্ধ করতে হয়:
কোটলিন
@SuppressLint("ParserError") class FeedProvider : ContentProvider() {
জাভা
@SuppressLint("ParserError") public class FeedProvider extends ContentProvider {
ফাইলের সমস্ত লিন্ট সমস্যা পরীক্ষা করা বন্ধ করতে, all কীওয়ার্ডটি ব্যবহার করুন:
কোটলিন
@SuppressLint("all")
জাভা
@SuppressLint("all")
যেকোনো কম্পোজেবল ফাংশনে লিন্ট চেক দমন করতে আপনি একই অ্যানোটেশন ব্যবহার করতে পারেন।
XML-এ লিন্ট চেকিং কনফিগার করুন
আপনার XML ফাইলের নির্দিষ্ট অংশের জন্য লিন্ট চেকিং বন্ধ করতে tools:ignore অ্যাট্রিবিউটটি ব্যবহার করুন। lint.xml ফাইলে নিম্নলিখিত নেমস্পেস ভ্যালুটি রাখুন, যাতে লিন্ট টুলটি অ্যাট্রিবিউটটি চিনতে পারে:
namespace xmlns:tools="http://schemas.android.com/tools"নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে আপনি একটি XML লেআউট ফাইলের <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"
XML এলিমেন্টের সমস্ত লিন্ট সমস্যা পরীক্ষা করা বন্ধ করতে, all কীওয়ার্ডটি ব্যবহার করুন:
tools:ignore="all"
Gradle দিয়ে লিন্ট অপশনগুলো কনফিগার করুন
অ্যান্ড্রয়েড গ্র্যাডল প্লাগইন আপনাকে আপনার মডিউল-স্তরের 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() -এ কোনো ইস্যুকে ফেটাল (fatal) হিসেবে সেট করলে তা মূল DSL-এ সেটিকে ডিজেবল (disable) করার প্রক্রিয়াকে ওভাররাইড করে।
একটি সতর্কীকরণ বেসলাইন তৈরি করুন
আপনি আপনার প্রোজেক্টের বর্তমান সতর্কবার্তাগুলোর একটি স্ন্যাপশট নিতে পারেন, এবং তারপর ভবিষ্যতের পরিদর্শনগুলোর জন্য সেই স্ন্যাপশটটিকে একটি বেসলাইন হিসেবে ব্যবহার করতে পারেন, যাতে শুধুমাত্র নতুন সমস্যাগুলোই রিপোর্ট করা হয়। এই বেসলাইন স্ন্যাপশটটি আপনাকে আগে থেকে সমস্ত বিদ্যমান সমস্যা সমাধান করার ঝামেলা ছাড়াই বিল্ড ব্যর্থ করার জন্য লিন্ট ব্যবহার শুরু করতে দেয়।
বেসলাইন স্ন্যাপশট তৈরি করতে, আপনার প্রোজেক্টের build.gradle ফাইলটি নিম্নরূপে পরিবর্তন করুন:
কোটলিন
android { lint { baseline = file("lint-baseline.xml") } }
গ্রুভি
android { lintOptions { baseline file("lint-baseline.xml") } }
আপনি যখন প্রথমবার এই লাইনটি যোগ করেন, তখন আপনার বেসলাইন নির্ধারণের জন্য lint-baseline.xml ফাইলটি তৈরি হয়। এরপর থেকে, টুলগুলো শুধুমাত্র বেসলাইন নির্ধারণের জন্য ফাইলটি পড়ে। আপনি যদি একটি নতুন বেসলাইন তৈরি করতে চান, তবে ম্যানুয়ালি ফাইলটি মুছে ফেলুন এবং এটি পুনরায় তৈরি করার জন্য আবার lint চালান।
এরপর, IDE থেকে Code > Inspect Code নির্বাচন করে অথবা কমান্ড লাইন থেকে নিম্নরূপভাবে lint চালান। আউটপুটে 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") } }
বেসলাইন তৈরি করার পর আপনি কোডবেসে কোনো নতুন সতর্কতা যোগ করলে, লিন্ট শুধুমাত্র নতুন যুক্ত হওয়া বাগগুলোই তালিকাভুক্ত করে।
বেসলাইন সতর্কতা
যখন একটি বেসলাইন কার্যকর থাকে, তখন আপনি একটি তথ্যমূলক সতর্কবার্তা পান যা আপনাকে জানায় যে এক বা একাধিক সমস্যা ফিল্টার করে বাদ দেওয়া হয়েছে কারণ সেগুলি বেসলাইনে তালিকাভুক্ত। এই সতর্কবার্তাটি আপনাকে মনে রাখতে সাহায্য করে যে আপনি একটি বেসলাইন কনফিগার করেছেন এবং কোনো এক সময়ে আপনাকে সমস্ত সমস্যা সমাধান করতে হবে।
এই তথ্যমূলক সতর্কীকরণটি সেইসব সমস্যারও হিসাব রাখে যেগুলো আর রিপোর্ট করা হয় না। এই তথ্য আপনাকে জানিয়ে দেয় যে আপনি সমস্যাগুলো সত্যিই সমাধান করেছেন কিনা, যাতে আপনি চাইলে বেসলাইনটি পুনরায় তৈরি করে কোনো ত্রুটি অশনাক্ত অবস্থায় ফিরে আসা প্রতিরোধ করতে পারেন।
দ্রষ্টব্য: আপনি যখন IDE-তে ব্যাচ মোডে ইন্সপেকশন চালান, তখন বেসলাইনগুলি সক্রিয় হয়, কিন্তু ফাইল সম্পাদনা করার সময় ব্যাকগ্রাউন্ডে চলা ইন-এডিটর চেকগুলির ক্ষেত্রে এগুলি উপেক্ষা করা হয়। এর কারণ হলো, বেসলাইনগুলি এমন পরিস্থিতির জন্য তৈরি করা হয়েছে যেখানে একটি কোডবেসে প্রচুর পরিমাণে বিদ্যমান ওয়ার্নিং রয়েছে, কিন্তু আপনি কোডে কাজ করার সময় স্থানীয়ভাবে সমস্যাগুলি সমাধান করতে চান।
ম্যানুয়ালি পরিদর্শন চালান
কনফিগার করা লিন্ট এবং অন্যান্য IDE ইন্সপেকশন ম্যানুয়ালি চালানোর জন্য, Code > Inspect Code নির্বাচন করুন। ইন্সপেকশনের ফলাফল Inspection Results উইন্ডোতে প্রদর্শিত হবে।
পরিদর্শন পরিধি এবং প্রোফাইল সেট করুন
নিম্নলিখিতভাবে আপনি যে ফাইলগুলি বিশ্লেষণ করতে চান (পরিদর্শন পরিধি ) এবং যে পরিদর্শনগুলি চালাতে চান (পরিদর্শন প্রোফাইল ) তা নির্বাচন করুন:
- অ্যান্ড্রয়েড ভিউতে, আপনার প্রজেক্টটি খুলুন এবং যে প্রজেক্ট, ফোল্ডার বা ফাইলটি আপনি বিশ্লেষণ করতে চান, সেটি নির্বাচন করুন।
- মেনু বার থেকে কোড > কোড পরিদর্শন নির্বাচন করুন।
'পরিদর্শন পরিধি নির্দিষ্ট করুন ' ডায়ালগ বক্সে সেটিংসগুলো পর্যালোচনা করুন।

চিত্র ৩. পরিদর্শন পরিধির সেটিংস পর্যালোচনা করুন। আপনি একটি প্রজেক্ট, ফোল্ডার, বা ফাইল নির্বাচন করেছেন কিনা তার উপর নির্ভর করে 'পরিদর্শন পরিধি নির্দিষ্ট করুন' ডায়ালগে প্রদর্শিত বিকল্পগুলি ভিন্ন হয়:
- যখন আপনি কোনো একটি প্রজেক্ট, ফাইল বা ডিরেক্টরি নির্বাচন করেন, তখন 'পরিদর্শন পরিধি নির্দিষ্ট করুন' ডায়ালগ বক্সে আপনার নির্বাচিত প্রজেক্ট, ফাইল বা ডিরেক্টরিটির পাথ প্রদর্শিত হয়।
- যখন আপনি একাধিক প্রজেক্ট, ফাইল বা ডিরেক্টরি নির্বাচন করেন, তখন 'পরিদর্শন পরিধি নির্দিষ্ট করুন' ডায়ালগ বক্সে 'নির্বাচিত ফাইলসমূহ'- এর জন্য একটি নির্বাচিত রেডিও বাটন প্রদর্শিত হয়।
কী পরিদর্শন করতে হবে তা পরিবর্তন করতে, অন্য রেডিও বাটনগুলোর মধ্যে একটি নির্বাচন করুন। ‘পরিদর্শন পরিধি নির্দিষ্ট করুন’ ডায়ালগের সমস্ত সম্ভাব্য ফিল্ডের বিবরণের জন্য ‘পরিদর্শন পরিধি নির্দিষ্ট করুন’ ডায়ালগটি দেখুন।
- 'পরিদর্শন প্রোফাইল'- এর অধীনে, আপনি যে প্রোফাইলটি ব্যবহার করতে চান তা নির্বাচন করুন।
পরিদর্শনটি চালানোর জন্য OK ক্লিক করুন।
চিত্র ৪-এ 'Inspect Code' রান থেকে প্রাপ্ত লিন্ট এবং অন্যান্য IDE ইন্সপেকশনের ফলাফল দেখানো হয়েছে:

চিত্র ৪। পরিদর্শন থেকে প্রাপ্ত ফলাফল। সমাধান দেখতে একটি সমস্যা নির্বাচন করুন। পরিদর্শন ফলাফল প্যানে, ত্রুটির বিভাগ, প্রকার বা সমস্যাগুলি প্রসারিত করে ও নির্বাচন করে পরিদর্শনের ফলাফল দেখুন।
ইন্সপেকশন রিপোর্ট প্যানে , ইন্সপেকশন রেজাল্টস প্যানে নির্বাচিত ত্রুটির বিভাগ, ধরন বা সমস্যার জন্য পরিদর্শন প্রতিবেদনটি প্রদর্শন করে এবং ত্রুটির নাম ও অবস্থান দেখায়। যেখানে প্রযোজ্য, পরিদর্শন প্রতিবেদনটি আপনাকে সমস্যাটি সমাধান করতে সাহায্য করার জন্য সমস্যার সারসংক্ষেপের মতো অন্যান্য তথ্যও প্রদর্শন করে।
ইন্সপেকশন রেজাল্টস প্যানে ট্রি ভিউতে, কনটেক্সট মেনু প্রদর্শন করতে কোনো ক্যাটাগরি, টাইপ বা ইস্যুর উপর রাইট-ক্লিক করুন।
প্রসঙ্গের উপর নির্ভর করে, আপনি পারেন:
- সরাসরি উৎসে যান।
- নির্বাচিত আইটেমগুলো বাদ দিন এবং অন্তর্ভুক্ত করুন।
- সমস্যাগুলো দমন করুন।
- সেটিংস সম্পাদনা করুন।
- পরিদর্শন সতর্কতাগুলো পরিচালনা করুন।
- পরিদর্শনটি পুনরায় চালান।
টুলবার বাটন, কনটেক্সট মেনু আইটেম এবং পরিদর্শন প্রতিবেদনের ফিল্ডগুলোর বিবরণের জন্য, ‘পরিদর্শন ফলাফল’ টুল উইন্ডো দেখুন।
কাস্টম স্কোপ ব্যবহার করুন
অ্যান্ড্রয়েড স্টুডিওতে প্রদত্ত কাস্টম স্কোপগুলির মধ্যে একটি নিম্নলিখিতভাবে ব্যবহার করুন:
- 'পরিদর্শন পরিধি নির্দিষ্ট করুন' ডায়ালগে, 'কাস্টম স্কোপ' নির্বাচন করুন।
আপনার বিকল্পগুলি দেখতে কাস্টম স্কোপ তালিকায় ক্লিক করুন:

চিত্র ৫। আপনি কোন কাস্টম স্কোপটি ব্যবহার করতে চান তা নির্বাচন করুন। - সকল স্থান: সকল ফাইল।
- প্রজেক্ট ফাইল: বর্তমান প্রজেক্টের সমস্ত ফাইল।
- প্রজেক্টের সোর্স ফাইল: শুধুমাত্র বর্তমান প্রজেক্টের সোর্স ফাইলগুলো।
- প্রজেক্ট প্রোডাকশন ফাইল: শুধুমাত্র বর্তমান প্রজেক্টের প্রোডাকশন ফাইলগুলো।
- প্রজেক্ট টেস্ট ফাইল: শুধুমাত্র বর্তমান প্রজেক্টের টেস্ট ফাইলগুলো।
- স্ক্র্যাচ এবং কনসোল: শুধুমাত্র সেই স্ক্র্যাচ ফাইল এবং কনসোলগুলো যা আপনি বর্তমান প্রজেক্টে খুলে রেখেছেন।
- সম্প্রতি দেখা ফাইলসমূহ: বর্তমান প্রোজেক্টে শুধুমাত্র সম্প্রতি দেখা ফাইলগুলো।
- বর্তমান ফাইল: আপনার বর্তমান প্রোজেক্টের শুধুমাত্র বর্তমান ফাইলটি। কোনো ফাইল বা ফোল্ডার নির্বাচন করা থাকলে এটি প্রদর্শিত হয়।
- নির্বাচিত ডিরেক্টরি: আপনার বর্তমান প্রোজেক্টের শুধুমাত্র বর্তমান ফোল্ডারটি। যখন আপনি কোনো ফোল্ডার নির্বাচন করেন, তখন এটি প্রদর্শিত হয়।
- ক্লাস হায়ারার্কি: আপনি যখন এই অপশনটি সিলেক্ট করে ওকে (OK) ক্লিক করেন, তখন বর্তমান প্রজেক্টের সমস্ত ক্লাসসহ একটি ডায়ালগ বক্স প্রদর্শিত হয়। ডায়ালগ বক্সে, ইন্সপেক্ট করার জন্য ক্লাসগুলো ফিল্টার ও সিলেক্ট করতে ‘সার্চ বাই নেম’ (Search by Name) ফিল্ডটি ব্যবহার করুন। আপনি যদি ক্লাসের তালিকাটি ফিল্টার না করেন, তাহলে কোড ইন্সপেক্টেশন সমস্ত ক্লাসকেই ইন্সপেক্ট করবে।
- ওকে ক্লিক করুন ।
প্রজেক্টটির জন্য যদি কোনো VCS কনফিগার করা থাকে, তাহলে শুধুমাত্র পরিবর্তিত ফাইলগুলোর মধ্যে অনুসন্ধান সীমাবদ্ধ করার বিকল্পও রয়েছে।
একটি কাস্টম স্কোপ তৈরি করুন
যখন আপনি এমন কিছু ফাইল ও ডিরেক্টরি পরীক্ষা করতে চান যা উপলব্ধ কোনো কাস্টম স্কোপের আওতাভুক্ত নয়, তখন আপনি একটি কাস্টম স্কোপ তৈরি করতে পারেন:
- 'পরিদর্শন পরিধি নির্দিষ্ট করুন' ডায়ালগে, 'কাস্টম স্কোপ' নির্বাচন করুন।
কাস্টম স্কোপ তালিকার পরে থাকা তিনটি ডটে ক্লিক করুন।

চিত্র ৬। পরিদর্শন পরিধি নির্দিষ্ট করার ডায়ালগ বক্স। স্কোপস ডায়ালগ বক্সটি প্রদর্শিত হবে।

চিত্র ৭. একটি কাস্টম স্কোপ তৈরি করুন। - ক্লিক করুন
নতুন স্কোপ নির্ধারণ করার জন্য ডায়ালগের উপরের-বাম কোণার বাটনটি ব্যবহার করুন। - প্রদর্শিত অ্যাড স্কোপ (Add Scope) তালিকা থেকে লোকাল (Local ) নির্বাচন করুন।
প্রজেক্টের 'ইনসপেক্ট কোড' ফিচারের জন্য লোকাল এবং শেয়ার্ড উভয় স্কোপই ব্যবহৃত হয়। একটি শেয়ার্ড স্কোপ প্রজেক্টের অন্যান্য ফিচারের সাথেও ব্যবহার করা যেতে পারে, যেগুলোর একটি স্কোপ ফিল্ড আছে। উদাহরণস্বরূপ, যখন আপনি 'এডিট সেটিংস'-এ ক্লিক করেন।
Find Usages- এর সেটিংস পরিবর্তন করতে গেলে, প্রদর্শিত ডায়ালগ বক্সে একটি Scope ফিল্ড থাকে, যেখান থেকে আপনি একটি শেয়ার্ড স্কোপ নির্বাচন করতে পারেন। 
চিত্র ৮। Find Usages ডায়ালগ থেকে একটি শেয়ার্ড স্কোপ নির্বাচন করুন। - স্কোপটির একটি নাম দিন এবং OK ক্লিক করুন।
স্কোপস ডায়ালগের ডান প্যানে এমন সব অপশন প্রদর্শিত হয়, যা আপনাকে কাস্টম স্কোপ নির্ধারণ করতে দেয়।
- তালিকা থেকে প্রজেক্ট নির্বাচন করুন।
উপলব্ধ প্রকল্পগুলোর একটি তালিকা প্রদর্শিত হয়।
দ্রষ্টব্য: আপনি প্রজেক্ট বা প্যাকেজের জন্য কাস্টম স্কোপ তৈরি করতে পারেন। পদ্ধতিগুলো একই।
প্রজেক্ট ফোল্ডারগুলো প্রসারিত করুন, কাস্টম স্কোপে যা যোগ করতে চান তা নির্বাচন করুন এবং সেটিকে অন্তর্ভুক্ত করবেন নাকি বাদ দেবেন তা নির্বাচন করুন।

চিত্র ৯। একটি কাস্টম স্কোপ নির্ধারণ করুন। - অন্তর্ভুক্ত করুন : এই ফোল্ডার এবং এর ফাইলগুলো অন্তর্ভুক্ত করুন, কিন্তু এর কোনো সাবফোল্ডার অন্তর্ভুক্ত করবেন না।
- পুনরাবৃত্তিমূলকভাবে অন্তর্ভুক্ত করুন : এই ফোল্ডার ও এর ফাইলগুলোর পাশাপাশি এর সাবফোল্ডার ও তাদের ফাইলগুলোও অন্তর্ভুক্ত করুন।
- বাদ দিন : এই ফোল্ডার এবং এর ফাইলগুলো বাদ দিন, কিন্তু এর কোনো সাবফোল্ডার বাদ দেবেন না।
- পুনরাবৃত্তিমূলকভাবে বাদ দিন : এই ফোল্ডার ও এর ফাইলগুলো, সেইসাথে এর সাবফোল্ডার ও তাদের ফাইলগুলোও বাদ দিন।
চিত্র ১০ দেখায় যে মূল ফোল্ডারটি অন্তর্ভুক্ত করা হয়েছে, এবং java ও res ফোল্ডারগুলো রিকার্সিভলি অন্তর্ভুক্ত করা হয়েছে। নীল রঙ আংশিকভাবে অন্তর্ভুক্ত ফোল্ডারকে এবং সবুজ রঙ রিকার্সিভলি অন্তর্ভুক্ত ফোল্ডার ও ফাইলগুলোকে নির্দেশ করে।

চিত্র ১০। কাস্টম স্কোপের একটি উদাহরণ প্যাটার্ন। - আপনি যদি java ফোল্ডারটি নির্বাচন করে Exclude Recursively-তে ক্লিক করেন, তাহলে java ফোল্ডার এবং এর অধীনে থাকা সমস্ত ফোল্ডার ও ফাইল থেকে সবুজ হাইলাইটিং চলে যায়।
- আপনি যদি সবুজ রঙে চিহ্নিত MainActivity.kt ফাইলটি নির্বাচন করে 'Exclude'-এ ক্লিক করেন, তাহলে MainActivity.kt আর সবুজ রঙে চিহ্নিত থাকবে না, কিন্তু java ফোল্ডারের অধীনে থাকা বাকি সবকিছু সবুজই থাকবে।
- OK-তে ক্লিক করুন। কাস্টম স্কোপটি তালিকার নীচে প্রদর্শিত হবে।
পরিদর্শন প্রোফাইল পর্যালোচনা ও সম্পাদনা করুন
অ্যান্ড্রয়েড স্টুডিওতে বিভিন্ন ধরনের লিন্ট এবং অন্যান্য ইন্সপেকশন প্রোফাইল রয়েছে, যেগুলো অ্যান্ড্রয়েড আপডেটের মাধ্যমে হালনাগাদ করা হয়। আপনি এই প্রোফাইলগুলো যেমন আছে তেমনই ব্যবহার করতে পারেন অথবা এগুলোর নাম, বিবরণ, তীব্রতা এবং পরিধি সম্পাদনা করতে পারেন। এছাড়াও আপনি প্রোফাইলের সম্পূর্ণ গ্রুপ অথবা কোনো গ্রুপের মধ্যে থাকা স্বতন্ত্র প্রোফাইল সক্রিয় বা নিষ্ক্রিয় করতে পারেন।
পরিদর্শন সেটিংস অ্যাক্সেস করতে:
- ফাইল > সেটিংস নির্বাচন করুন। (উইন্ডোজে) অথবা অ্যান্ড্রয়েড স্টুডিও > প্রেফারেন্সেস (ম্যাকওএস বা লিনাক্সে)।
- সম্পাদক > পরিদর্শন নির্বাচন করুন।
পরিদর্শন প্যানে সমর্থিত পরিদর্শনসমূহ এবং তাদের বিবরণের একটি তালিকা দেখানো হয়।

চিত্র ১১। সমর্থিত পরিদর্শনসমূহ এবং তাদের বিবরণ। ডিফল্ট (অ্যান্ড্রয়েড স্টুডিও) এবং প্রজেক্ট ডিফল্ট (সক্রিয় প্রজেক্ট) ইন্সপেকশনের মধ্যে টগল করতে প্রোফাইল তালিকাটি নির্বাচন করুন।
আরও তথ্যের জন্য, ইন্টেলিজ প্রোফাইল পরিচালনা পৃষ্ঠাটি দেখুন।
বাম প্যানেলের পরিদর্শন তালিকায়, একটি শীর্ষ-স্তরের প্রোফাইল বিভাগ নির্বাচন করুন অথবা একটি গ্রুপ প্রসারিত করে একটি নির্দিষ্ট প্রোফাইল নির্বাচন করুন।
যখন আপনি একটি প্রোফাইল বিভাগ নির্বাচন করেন, তখন আপনি সেই বিভাগের সমস্ত পরিদর্শনকে একটি একক পরিদর্শন হিসাবে সম্পাদনা করতে পারেন।
- স্কিমা অ্যাকশনগুলি দেখান নির্বাচন করুন
পরিদর্শনসমূহ কপি, নাম পরিবর্তন, বিবরণ যোগ, রপ্তানি এবং আমদানি করার তালিকা। - আপনার কাজ শেষ হলে OK ক্লিক করুন।