در یک خبری جالب Tighten اعلام کرد کهcode linter وfixer Duster با تمرکز بر لاراول را انشتار کرد. Duster که به صورت تلفظ می شود ابزاری است که Laravel Pint، PHP_CodeSniffer، PHP-CS-Fixer، و Tighten's Laravel-specific lints را در Tlint گرد هم میآورد تا داستر مجموعه ابزارهای قدرتمند و جامعی را برای برنامههای لاراول فراهم کند.
داستر نظرات پایه لاراول را در Pint می گیرد و سپس از طریق سه ابزار دیگر که در بسته بندی خود قرار می دهد، قدرت لنگرها و ثابت کننده های اضافی را اضافه می کند. بهطور پیشفرض به سبک کد Tighten میچسبد،و همچنین کاملاً بر اساس تنظیمات برگزیده شما قابل تنظیم است.
بیایید نگاهی به نحوه نصب داستر، نحوه اجرای آن و نحوه ادغام آن در گردش کار خودکار خود، و نحوه پیکربندی آن بیندازیم.
نصب داستر Duster
چند راه وجود دارد که می توانید Duster را روی برنامه خود اجرا کنید، اما ساده ترین راه برای شروع این است که آن را به عنوان یک وابستگی Composer در برنامه خود نصب کنید.
composer require tightenco/duster --dev
شما نیازی به انتشار یا پیکربندی چیزی ندارید. داستر با مجموعهای از سبکها ارائه میشود، و اگر آنها را دوست دارید، به محض اتمام نصب آماده است.
برای آشنایی با امنیت در داکر این مقاله را بررسی کنید.
اجرای داستر
دو ویژگی اصلی وجود دارد که داستر ارائه می دهد: "linting (پرز زدن)" و "fixing (تثبیت)". وقتی چیزی در کد شما با یک قانون هماهنگ نیست، لنت ها به شما می گویند. تا آن کد را فیکس کنید.
در ابتدا ، ما می توانیم اصول اولیه را انجام دهیم: Linting یا تعمیر کل پایگاه کدهای ما. اگر lint را اجرا کنیم، یک lint از کل پایگاه کد را به ما میدهد که همه ابزارهای linting را اجرا میکند:
./vendor/bin/duster lint
این خروجی هر ابزار را به ما میدهد و مانند هر خطی، با یک کد موفقیت یا شکست که میتواند در ابزارهای CI یا سایر اسکریپتها استفاده شود، باز خواهد گشت.
همچنین میتوانیم fix را اجرا کنیم تا به همه ابزارهای ارائه شده بگوییم که هر مشکلی را که میتوانند در کل پایگاه کد برطرف کنند:
./vendor/bin/duster fix
فقط فایل های "بیهوده" را linting می کند
هنگامی که یک Linter/Fixer را به یک پایگاه کد موجود معرفی میکنید، اغلب ممکن است سخت به نظر برسد: بسیاری از اصلاحات کوچک وجود دارد که باید انجام دهید، ممکن است وسوسه شوید همه چیز را دور بیندازید.
یکی از راههایی که میتوانید از اجرای هر گونه اصلاحات (یا دریافت تعداد زیادی از خرابیهای lint ) برای کدهایی که در حال حاضر روی آن کار نمیکنید اجتناب کنید، flag--dirty's Duster است که فقط در فایلهایی که commit نشدهاند، linters/fixers اجرا میشود. تغییر می کند.
./vendor/bin/duster lint --dirty
./vendor/bin/duster fix --dirty
چرا fixing و linting زدن؟
دو دلیل اصلی وجود دارد که چرا داستر و بسیاری از ابزارهایی مانند آن، هم linting و هم fixing می کنند. وقتی همیشه می توانید همه چیز را درست کنید، چرا linting را اضافه کنید؟
اول، برخی از تیمها ممکن است گردش کاری را ترجیح دهند که در آن کد نادرست بهعنوان یک ساختار ناموفق (مثلاً بهعنوان یک اکشن GitHub) به جای اصلاح ظاهر شود.
و دوم اینکه برخی از linting ها به طور خودکار قابل رفع نیستند. یک کامپیوتر میتواند تشخیص دهد که آیا کد شما خراب است، اما به اندازه کافی هوشمند نیست که آن را برای شما برطرف کند.
ادغام داستر در CI شما
مانند اکثر ابزارهای تجزیه و تحلیل کد، دستور lint داستر یک کد موفقیت یا خطا را بر اساس موفقیت آمیز بودن لینت ها برمی گرداند. این به این معنی است که میتوانید از ./vendor/bin/duster lint در هر خط CI استفاده کنید تا اگر lint های شما مطابقت نداشته باشند، bluild های خود را خراب کنید. همچنین می توانید از ./vendor/bin/duster fix به عنوان بخشی از هوک Husky یا هوک CI برای فرمت خودکار کد خود استفاده کنید.
اگر از GitHub Actions استفاده می کنید، Duster انتشار یک پیکربندی اکشن را آسان می کند که یا کد شما را lint می کند یا آن را اصلاح می کند. ./vendor/bin/duster github-actions را اجرا کنید و دستورات موجود در آنجا را دنبال کنید تا اکشن GitHub را به پایگاه کد خود اضافه کنید.
پیکربندی داستر (و ابزارهای آن)
مانند Pint، داستر نظرات سازندگان خود (Tighten) را در مورد نحوه استایل بندی کد تجسم می کند. اما خود داستر و هر یک از ابزارهایی که وارد می کند، می توانند به دلخواه پیکربندی شوند.
duster.json
Duster فایل پیکربندی خود را ارائه می دهد، duster.json. این فایل به شما امکان میدهد فایلها و پوشههایی را برای گنجاندن یا حذف از فایلهای پیشفرض لاراول که بهطور پیشفرض هدف قرار میدهد، تعریف کنید. همچنین میتوانید از آن برای تعریف اسکریپتهای اضافی که میخواهید به عنوان بخشی از جریان گردگیر خود اجرا کنید، استفاده کنید.
را با duster.json زیر به دستور lint خود اضافه کنید:PHPStan به عنوان مثال، می توانید
{
"scripts": {
"lint": {
"phpstan": ["./vendor/bin/phpstan", "analyse"]
}
}
}
همچنین می توانید اضافات سفارشی خود را به دستور fix تعریف کنید.
لاراول با داکر : نحوه داکرایز پروژه لاراول
وابستگی های داستر
شما می توانید هر یک از وابستگی های داستر را با فایل های پیکربندی بومی آنها پیکربندی کنید. میتوانید در بخش سفارشیسازی Duster readme درباره نحوه انجام آن بیشتر بدانید.
1 : Pint: pint.json
2 : PHP_CodeSniffer: .phpcs.xml.dist
3 : PHP-CS-Fixer: .php-cs-fixer.dist.php
4 : Tlint: tlint.json
نتیجه
به طور خلاصه بخواهیم مطالب بالا را یک بار دیگر بگوییم، داستر ابزاری است برای رفع مشکلات سبک کد در برنامه های لاراول شما. به نظر می رسد، استانداردهای ترجیحی Tighten را خارج از جعبه نگه می دارد، اما همچنین می تواند به هر چیزی که دوست دارید - از جمله استانداردهای سفارشی خودتان، اگر آنها را منتشر کرده باشید، پیکربندی کند.
