مقابله با بحران بررسی کد با ایده ساختاری Small-Change در شرکت Imprint — Speeding up code review with `small-change`
خلاصه
شرکت Imprint با افزایش حجم پول ریکوئستها و کند شدن روند توسعه، رویکرد جدیدی به نام small-change را برای تسریع فرآیند بررسی و تایید کدها معرفی کرده است. این ایده با اتکا بر ابزارهای خودکار، معیارهای دقیق و کاهش وابستگی به بازبینی سنتی انسانها، سعی دارد سرعت و کیفیت تحویل نرمافزار را همزمان بهبود بخشد.
در سالهای اخیر، تیمهای مهندسی نرمافزار با چالش جدی افزایش حجم پول ریکوئستها (PR) و طولانی شدن زمان بررسی آنها روبهرو شدهاند. در شرکت Imprint نیز میانگین زمان لازم برای بررسی یک PR از ۳۳ دقیقه به ۷۷ دقیقه افزایش یافته است. برای حل این مشکل، این شرکت مفهومی به نام small-change را پیادهسازی کرده است که هدف آن خودکارسازی تایید تغییرات کمخطر و اجتناب از گلوگاههای بازبینی سنتی است.
زمینه و ضرورت تغییر
بازبینی کد (Code Review) سنتی معمولاً برای چهار هدف انجام میشود:
- تبادل دانش بین نویسنده و بازبینیکننده
- جلوگیری از بروز خطاها
- ممانعت از رفتارهای مخرب
- رعایت الزامات قانونی و انطباق (Compliance)
با این حال، در پارادایم مدرن توسعه نرمافزار، فرآیندهای CI/CD، ابزارهای ارزیابی خودکار و مکانیزمهای مهار (Harness) بسیار مؤثرتر از بازبینی دستی خط به خط عمل میکنند. تیم Imprint با این فرض که سرعت و کیفیت تضادی با یکدیگر ندارند، سیستم small-change را برای خودکار کردن بخشی از این مسیر طراحی کرد.
معیارهای تعیین یک Small-Change
زمانی که یک پول ریکوئست آماده بررسی میشود، سیستم CI/CD واجد شرایط بودن آن را به عنوان یک تغییر کوچک ارزیابی میکند. این بررسی بر اساس معیارهای مشخصی انجام میشود:
- حجم تغییرات کمتر از ۱۰۰۰ خط کد باشد.
- ربات بررسیکننده هوش مصنوعی هیچگونه خطای سطح p1 یا p2 ثبت نکرده باشد.
- نویسنده کد دارای «تجربه» کافی در آن سرویس یا اپلیکیشن باشد (حداقل ۱۰ PR ادغامشده قبلی در آن مسیرها).
- تغییرات روی تعداد محدودی از سرویسها اثر بگذارد (حداکثر ۱ در مونوپپ فرانتاند و حداکثر ۳ در مونوپپ بکاند).
- فایلهای کتابخانههای مشترک و ابزارهای عمومی شامل این طرح نمیشوند.
- مسیرهای حساس مثل جابجایی پول و مسائل امنیتی از طریق فایل
.small_changeدر هر مخزن مستثنی شدهاند.
ابزارها و اتوماسیون
برای مدیریت این فرآیند، تیم مهندسی اسکریپتها و اسکیلهای خاصی را در ساختار خود پیاده کرده است:
- اسکیل
review-small-changeتمام پول ریکوئستهای واجد شرایط را بررسی کرده و در صورت پاس شدن تمام تستها، به صورت خودکار تاییدیه (Approve) صادر میکند. این ابزار عامدانه هیچ کامنتی روی PR نمیگذارد تا از پدیده «بازبینی پروکسی انسانی» (Meat Proxy Review) جلوگیری شود. - اسکیل
review-pr-clusterدستهای از پول ریکوئستها را بررسی میکند تا الگوهای مشترک و فرصتهای بهبود را شناسایی کند.
نگاه جامعه هکرنیوز
این ایده در هکرنیوز بازخوردهای متفاوتی داشت. برخی کاربران به مواردی مثل تعریف خطوط کد اشاره کردند و معتقد بودند حتی یک تغییر تکخطی یا جابجایی یک bool میتواند کل برنامه را تحت تأثیر قرار دهد و آستانه ۱۰۰۰ خط کد را زیاد دانستند. عدهای دیگر از دیدگاه سنتیِ بررسی کدهای هوش مصنوعی انتقاد کردند و گروهی نیز به تجربیات مشابه خود در زمینه شکستن PRهای بزرگ به واحدهای کوچکتر با کمک ابزارهایی مثل Claude برای تسریع ادغام اشاره داشتند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل