ریاکت دکتر: گیتکیپر کیفیت کد رو پولریکوئستها
خلاصهٔ کاملتر
ریاکت دکتر (React Doctor) یه ابزار یکپارچه با CIه که کد پروژههای ریاکت رو از نظر مشکلات امنیتی و کارایی اسکن میکنه. بهصورت پیشفرض پولریکوئستها رو گیت (بلاک) میکنه، ولی طبق مستندات فقط فایلهای تغییرکرده رو اسکن میکنه تا مشکلات قدیمی جلوی کارهای بیربط رو نگیرن.
برای شروع، توصیهی مستندات اینه که اولین اسکن کامل رو تو حالت «توصیهای» بزنی تا بدهی امنیتی و کاراییِ موجود پروژه رو ببینی، بدون اینکه چک فِیل بشه. این کار با دو گزینه انجام میشه: blocking: none که مشکلات رو گزارش میده ولی چک رو رد نمیکنه، و scope: full که کل پروژه رو بهجای فقط فایلهای تغییرکرده اسکن میکنه:
- uses: millionco/react-doctor@v2
with:
blocking: none # or: warning or error
scope: full # or: changedبعد از این پاس اول، این گزینهها رو برمیداری تا رفتار پیشفرض فعال شه: بلاک کردن ارورها و وارنینگهای جدید روی فایلهای تغییرکرده. برای راهاندازی تدریجی هم میشه اول با blocking: none رفت، بعد رو گیت پیشفرض error و در آخر blocking: warning رو وقتی گذاشت که پروژه یه بیسلاین پایدار داشته باشه. برای مونوریپوها هم با گزینهی directory میشه اکشن رو به یه سابفولدر خاص وصل کرد.
روی پولریکوئست، ریاکت دکتر یافتههاش رو تو سه جا نشون میده: گفتوگوی PR، کامنتهای اینلاین ریویو و لاگهای CI. وقتی رو یه خط تغییرکرده مشکل جدید پیدا کنه، یه کامنت ریویو اینلاین با پیشنهاد رفع و لینک مستندات میذاره، یه کامنت خلاصهی «چسبان» (بهجای انباشتن کامنت جدید) رو بهروز میکنه و یه commit status ناموفق برای branch protection ثبت میکنه. پوش به main فقط امتیاز رو ثبت میکنه و قرمز نمیشه.
یه نکتهی مهم اینه که اسکنرش یه CLI سادهست، پس فقط مخصوص گیتهاب نیست و رو GitLab CI، CircleCI، Jenkins و Buildkite هم اجرا میشه. مستندات یه بخش عیبیابی هم داره؛ مثلاً اگه PRای از fork باشه، گیتهاب برای امنیت اجازهی نوشتن کامنت رو نمیده، ولی اسکن همچنان اجرا و pass/fail میشه.
نکات کلیدی:
- ابزار CI برای اسکن امنیت و کارایی کد ریاکت که پولریکوئستها رو گیت میکنه.
- بهصورت پیشفرض فقط فایلهای تغییرکرده رو میبینه تا بدهی قدیمی جلوی کار رو نگیره.
- با blocking و scope میشه راهاندازی رو تدریجی و توصیهای پیش برد.
- روی خط تغییر کامنت ریویو با پیشنهاد رفع میذاره و یه کامنت خلاصهی همیشگی نگه میداره.
- اسکنرش یه CLIه، پس رو GitLab، CircleCI، Jenkins و Buildkite هم کار میکنه.




