وقتی تستها سبزن ولی کد داره میپوسه
خلاصهٔ کاملتر
تیم OfficeFloor تو این پست میگه مشکل اصلی اینه که هوش مصنوعی از پیچیدگی نمیترسه. یه متد غولپیکر یه شاخهٔ دیگه میگیره، یه کلاس شلوغ یه متد دیگه، تستها سبز میمونن و فیچر هم میره رو پروداکشن. به گفتهٔ نویسنده، سیستم کمکم به جایی میرسه که دیگه تو ذهن هیچ آدمی جا نمیشه و آخرش حتی خود AI هم رشتهٔ کار رو گم میکنه. وقتی درد حس میشه، راهحل ارزون رفته و فقط بازنویسی مونده.
ایدهٔ اندازهگیریشون اینه که بهجای کد، خود تغییر رو امتیاز بدن. متریکهای معمول کیفیت یه اسنپشات رو میسنجن، ولی پوسیدگی یه حالت نیست، یه حرکته: اضافه کردن به چیزی که از قبل سنگینه. هستهٔ معیارشون چیزیه که بهش surrounding weight میگن، یعنی پیچیدگیای که پیش از تغییر تو همون کلاس یا ماژول نشسته بوده. یه فایل کاملاً جدید تقریباً هیچ امتیازی نمیگیره، ولی بزرگتر کردن یه god class امتیاز زیادی میگیره، و همین عدم تقارن سیگنال پوسیدگیه.
تو آزمایش، دو کدبیس رو با یه سری تغییر AI جلو بردن: یکی additive که تکههای جدید رو کنار هم میچینه، یکی mutative که یه کل درهمتنیده رو ویرایش میکنه. آخر کار، یه تغییر تو نسخهٔ mutative حدود ۱۵ برابر ساختار وزندار بیشتری رو بههم میریخت. همبستگی این عدد با هزینهٔ مالی تغییر، دوبارهخوانی کد موجود و زمان صرفشدهٔ مدل بین ۰.۴۹ تا ۰.۶۹ بود و تو هر دو بازو مستقل از هم برقرار موند.
بعد رفتن سراغ کاری که بیشتر پستهای ابزار ازش صرفنظر میکنن: تلاش برای شکستن معیار خودشون. ۲۰ مخزن اوپنسورس تو ۸ زبان رو اسکن کردن و بیشتر از ۳۴۹ هزار مشاهده بهازای هر کامیت جمع کردن. نتیجه این شد که معیارشون بهعنوان پیشبینیکنندهٔ باگ حتی از «اندازهٔ فایل» هم جلو نزد. نویسنده میگه این شکست نیست، چون هیچوقت ادعای پیشبینی باگ نداشتن؛ چیزی که میسنجن هزینهٔ تغییر و پوسیدگی ساختاریه، نه احتمال باگ.
به گفتهٔ نویسنده، کاربرد عملی معیار سهتاست. اول اینکه جلوی پوسیدگی رو میگیره: وقتی یه تغییر داره زیادی رو کد سنگین تلنبار میکنه، هشدار میده یا merge رو میبنده. دوم اینکه توجه رو هدایت میکنه و لیست رتبهبندیشدهٔ فایلهایی رو میده که پوسیدگی توشون داره جمع میشه. سوم اینکه چون تأثیر تغییر بین پروژهها حدود ۳۰۰ برابر و بین زبانها ۶۰ برابر فرق داره، بهجای آستانهٔ ثابت با صدک نسبت به تاریخچهٔ خود مخزن نمره میده.
همهٔ اینا تو ابزاری به اسم ImpactGate عرضه شده که هم CLI داره، هم هوک pre-commit گیت، و هم بهعنوان چک رو GitHub و GitLab و Jenkins اجرا میشه. با تغییری که AI نوشته مثل هر تغییر دیگه برخورد میکنه: دامنهٔ تأثیرش رو امتیاز میده و بزرگهاش رو نگه میداره تا یه آدم نگاهشون کنه، وقتی هنوز اصلاحش ارزونه.
نکات کلیدی:
- معیار روی خود تغییر اعمال میشه، نه اسنپشات کد؛ وزنش از پیچیدگی قبل از تغییر میاد
- تو آزمایش، تغییر رو کدبیس mutative حدود ۱۵ برابر ساختار بیشتری رو درگیر میکرد
- همبستگی با هزینه، دوبارهخوانی کد و زمان مدل بین ۰.۴۹ تا ۰.۶۹ بود
- رو ۲۰ مخزن اوپنسورس و بیشتر از ۳۴۹ هزار مشاهده، معیار از «اندازهٔ فایل» بهعنوان پیشبین باگ جلو نزد
- تأثیر تغییر بین پروژهها ۳۰۰ برابر و بین زبانها ۶۰ برابر فرق داره، برای همین نمرهدهی صدکیه
- ImpactGate به شکل CLI، هوک pre-commit و چک GitHub/GitLab/Jenkins در دسترسه




