تشخیص هوشمند خطاها با Laravel Microscope
۲۱ خرداد ۱۴۰۰

همهی ما میدانیم که فرایند دیباگینگ و ریفکتور کردن کدها بسیار دشوار و خسته کننده است زیرا گاهی اوقات رفع یک خطای بسیار ساده یا ریفکتور بخشی از کدهای برنامهی Laravel میتواند توسعهدهنده را ساعتها درگیر کند. بههمین منظور تصمیم داریم در این مقاله پکیج متن باز Laravel Microscope را به شما معرفی کنیم.
معرفی Laravel Microscope
طبق توضیحهای این ابزار میتوانید Laravel Microscope را بدون ترس برای ریفکتور کردن کدهای خود در فریمورک Laravel استفاده کنید و همچنین با وجود چکلیستهای هوشمندانه برای بررسی خطاهای معمول که فرایند دیباگینگ آنها میتواند بسیار زمانبر باشد، از باگهای احتمالی در امان خواهید ماند.
البته موضوع جالب دیگری که توجه مرا جلب کرد ایدهی پشت توسعهی این ابزار بود زیرا شباهت بسیار زیادی با توصیههای Steve Wozniak در مقالهی نوآوری به روش Steve Wozniak داشت. Laravel Microscope برای رفع نیازهای شخصی توسعهدهنده ساخته شده بود تا درنهایت بهصورت متن باز منتشر شد. بنابراین میتوانیم آن را یک ابزار نوآورانه و بسیار کاربردی بدانیم زیرا درکنار تستهای نرمافزاری و قابلیتهای مختلف IDEهای محبوب، بازهم به این ابزار برای تشخیص خطاها و ریفکتور کردن کدها نیاز خواهیم داشت.
درآخر نگاهی به شعار این ابزار داشته باشید تا در بخش بعدی مقاله بهسراغ نصب آن برویم.

نصب Laravel Microscope
نصب Laravel Microscope فرایند بسیار مشابهی با نصب دیگر پکیجهای نرمافزاری در فریمورک Laravel دارد بنابراین درصورتی که Composer را بر روی سیستم خود نصب ندارید، توصیه میشود مقالهی آموزش نصب و استفاده از Composer را مطالعه کنید. پس از نصب Composer میتوانید با اجرای دستور زیر در مسیر پروژه، این ابزار را نصب کنید:
composer require imanghafoori/laravel-microscope --dev
و در قدم بعد بایستی فایل پیکربندی آن را با اجرای دستور زیر publish کرد:
php artisan vendor:publish
تشخیص هوشمند خطاها
پس از نصب ابزار Laravel Microscope در پروژهی Laravel خود به دستور زیر دسترسی خواهید داشت:
php artisan check:all
که پس از اجرای آن مواردی مانند:
- بررسی خودکار صحت تعریف gateها
- بررسی خودکار تعریف routeها
- بررسی type hint متدها در Listener و همخوانی آنها با event مربوطه
- بررسی خودکار PSR-4 namespace و تصحیح خودکار namespaceهای غلط
- بررسی خودکار importها
- بررسی خودکار نام viewها
- و …
انجام میشود. البته شما میتوانید پروژهی خود را فقط در موارد خاصی بررسی کنید یعنی برای بررسی خودکار PSR-4 namespace و تصحیح خودکار namespaceهای غلط، فقط لازم است که دستور:
php artisan check:psr4
در مسیر پروژه اجرا شود.
برای مشاهدهی تمام دستورهای این ابزار و اطلاع از نحوهی عملکرد آنها میتوانید بخش What the Commands do را در توضیحهای ریپازیتوری GitHub این ابزار مطالعه کنید.
کدهای خود را بدون ترس ریفکتور کنید
ریفکتور کدها یک مسئلهی جدی است که شما را مجبور میکند با استانداردهای زبان مورد استفادهی خود و شاخصهای کد تمیز آشنایی پیدا کنید. حال تسلط بر این موارد و رعایت آنها در تمام فرایند کدنویسی بسیار سخت و زمانبر خواهد بود اما درنهایت این سوال بهوجود خواهد آمد که پس از ریفکتور کردن کدها، آیا منطق برنامهی شما بهدرستی کار میکند؟
بههمین منظور، سپردن فرایند ریفکتور کردن کدها به یک ابزار مطمئن و هوشمند میتواند به تمرکز و سرعت شما در توسعهی برنامه کمک کند و اینجاست که ما برای پروژههای Laravel میتوانیم از Laravel Microscope استفاده کنیم.
با اجرای دستور php artisan check:all
که برای تشخیص هوشمند خطاها مورد استفاده قرار میگرفت، امکان ریفکتور کردن کدها بررسی میشود اما دستور:
php artisan check:early_returns
را میتوانید بهطور دقیقتر برای ریفکتور کردن کدها استفاده کنید. پس از اجرای این دستور، تمام کدهای پروژه بررسی میشوند و اگر امکان ریفکتور کردن کدها وجود داشته باشد، این فرایند نیز بهصورت خودکار انجام خواهد شد.
برای مثال به کدهای زیر توجه کنید:
<?php
foreach ($products as $product) {
if ($someCond) {
// A lot of code 1
if ($someOtherCond) {
// A lot more code 2
} // <--- closes second if
} // <--- closes first if
}
این کدها در نگاه اول بسیار ساده و کامل بهنظر میرسند اما تودرتو شدن شرطها میتواند در پروژههای بزرگ و کدهای طولانی دردسرساز باشد. حال قابلیت early_returns
در Laravel Microscope، این نوع کدها را تشخیص داده و آنها را بهصورت خودکار بهشکل زیر تصحیح خواهد کرد:
<?php
foreach ($products as $product) {
if (! $someCond) {
continue;
}
// A lot of code 1
if (! $someOtherCond) {
continue;
}
// A lot more code 2
}
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
![liara testimonial]()
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
![liara testimonial]()
jadi
با قدرت میتونم بگم تیم پشتیانی لیاراliara_cloud@یکی از بهترین تیمهای پشتیبانی که تا حالا دیدم. کارشون ارائه سرویسهای PaaS هست ولی من سوال در سطح برنامه خودمم(نه زیرساخت پلتفرم) که میپرسم بازم کامل و به موقع راهنمایی میکنن.
Amir
![liara testimonial]()
amirmazinani_ir
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
![liara testimonial]()
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
![liara testimonial]()
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
![liara testimonial]()
vanenshi