گام بزرگ بعدی در کدنویسی CI، زمینه کدبیس است

از زمان راه‌اندازی گیت‌هاب کوپایلوت (GitHub Copilot) در سال ۲۰۲۱، این ابزار توسعه نرم‌افزار را متحول کرده است. نظرسنجی‌ها نشان‌دهنده پذیرش گسترده و بهبودهای درک‌شده در کیفیت کد هستند. مطالعه‌ای از سوی گیت‌هاب و اکسنچر، نرخ پذیرش ۸۰ درصدی را گزارش کرد، اما موفقیت بر اساس پذیرش پیشنهادهای کوپایلوت توسط توسعه‌دهندگان اندازه‌گیری شد، نه افزایش بهره‌وری عینی.

توسعه‌دهندگان در سراسر طیف، افزایش بهره‌وری شخصی را گزارش می‌کنند، اما در واقعیت، مزایای برنامه‌های سازمانی ممکن است بیش از حد بیان شده باشد - تجزیه و تحلیل Uplevel، بهبودهای بهره‌وری حداقلی اما افزایش ۴۱ درصدی در اشکالات را نشان داد، که نگرانی‌هایی فراتر از کاهش زمان کدنویسی دستی ایجاد می‌کند. واقعیت این است که بسیاری از دستاوردهای بهره‌وری درک‌شده از استفاده از کوپایلوت بر روی دستاوردهای کوتاه‌مدت متمرکز هستند. این امر مشکلی بسیار بزرگتر از دردسر نوشتن دستی کد قالبی ایجاد می‌کند. چیزی که توسعه‌دهندگان در حال یادگیری آن هستند این است که تولید کد هوش مصنوعی هنوز در مرحله تحقیق و توسعه قرار دارد.

حتی زمانی که تولید کد مبتنی بر هوش مصنوعی باعث صرفه‌جویی در زمان توسعه‌دهندگان می‌شود، این زمان اغلب در طول بازبینی‌های کد، نگهداری مداوم و پاسخ به حوادث بازپس گرفته می‌شود. به همین دلیل است که پس از تولید کد، کدنویسی هوش مصنوعی ابزاری قدرتمند برای متعادل کردن این سربار و همچنین بهبود فرآیند بلندمدت برای تیم‌ها است.

بیایید بررسی کنیم که تولید کد هوش مصنوعی در کجا و چرا کوتاهی می‌کند و چه چیزی برای کمک به توسعه‌دهندگان برای استفاده موفقیت‌آمیز از کد و بازبینی‌های تولید شده توسط هوش مصنوعی لازم است.

کلید در بازنگری نهفته است

خروجی کوپایلوت با زمینه‌ای که دارد محدود می‌شود. در نتیجه، کد تولید شده توسط هوش مصنوعی اغلب در پروژه‌های چند مخزنی و چند زبانه به طور موثر اجرا نمی‌شود. در حالی که کوپایلوت‌ها و عامل‌های هوش مصنوعی می‌توانند تولید کد را تسریع کنند، بهره‌وری کلی هنوز توسط سایر فرآیندهای حیاتی توسعه مانند بازبینی کد، آزمایش، یکپارچه‌سازی، ساخت، استقرار و غیره با مانع روبرو می‌شود.

کوپایلوت اکنون نه تنها سندی را که روی آن کار می‌کنید، بلکه سایر تب‌های باز در IDE شما را نیز در نظر می‌گیرد. با این حال، این هنوز با زمینه کامل مورد نیاز برای مدیریت سیستم‌هایی که چندین مخزن، محیط‌های ابری و احتمالاً حتی زمان‌های اجرا (runtime) مختلف را در بر می‌گیرند، فاصله زیادی دارد – پنجره زمینه به سادگی ناکارآمد است.

یکی از محدودیت‌های اصلی، فقدان داده‌های تأثیر پایین‌دستی در فرآیند تولید کد است. در ساخت عامل بازبینی کد هوش مصنوعی خود، با آزمایش با OpenTelemetry، من روی لاگ‌های CI/CD و ردیابی شرط‌بندی می‌کنم تا دید را افزایش دهم و به عامل‌ها کمک کنم تا جزئیات پیاده‌سازی ظریف را بهتر درک کنند.

من روی لاگ‌های CI/CD و ردیابی شرط‌بندی می‌کنم تا دید را افزایش دهم و به عامل‌ها کمک کنم تا جزئیات پیاده‌سازی ظریف را بهتر درک کنند.

بدون این نوع آگاهی زمینه‌ای دقیق، عامل‌های کدنویسی هوش مصنوعی نمی‌توانند به درستی پیش‌بینی کنند که چگونه کد جدید به طور کامل با سیستم‌های موجود یکپارچه می‌شود و اغلب پیشنهادهایی را ارائه می‌دهند که با الزامات گسترده‌تر پروژه همسو نیستند.

پنجره زمینه برای کوپایلوت به آنچه مستقیماً در جلو یا پشت مکان‌نما و بالقوه سایر اسناد باز در IDE قرار دارد، محدود می‌شود. هنگام تولید کد، کوپایلوت عمدتاً به آموزش مدل زبان بزرگ خود بر روی الگوهای برنامه‌نویسی عمومی متکی است، نه قراردادهای خاص پروژه. در حالی که این امر این ابزار را انعطاف‌پذیر می‌کند، اما اغلب عناصر حیاتی خاص پروژه مانند قراردادهای نام‌گذاری، الگوهای معماری یا وابستگی‌های بین اجزای پراکنده در چندین مخزن را نادیده می‌گیرد.

مگر اینکه ابزار هوش مصنوعی شما بسیار سفارشی‌شده و عمیقاً با پروژه شما یکپارچه شده باشد (یک تلاش پرهزینه برای اکثر تیم‌ها)، نمی‌تواند دانشی در مورد تاریخچه، تکامل یا commitهای قبلی پروژه حفظ کند. این می‌تواند منجر به پیشنهادهای کد ناسازگار یا ناهماهنگ شود که رفع آن‌ها بعداً پرهزینه است.

وقتی کد تولید شده توسط هوش مصنوعی به بازبینی کد می‌رسد

من اشاره کردم که در حالی که زمان صرفه‌جویی شده در کد تولید شده اکنون اغلب زمانی است که در بازبینی صرف می‌شود. پیشنهادهایی که با معماری پروژه همسو نیستند، خطر ایجاد ناسازگاری‌هایی را دارند که بازبین‌ها باید به صورت دستی کشف و حل کنند. کدی که در ابتدا کاربردی به نظر می‌رسد اغلب منجر به بدهی فنی یا اشکالات پنهان می‌شود و بار کاری را برای بازبین‌ها افزایش می‌دهد - یا بدتر از آن، باعث خرابی‌های تولید می‌شود که باید تحت فشار خرابی برطرف شوند.

درست همانطور که دستیاران هوش مصنوعی فاقد توانایی در نظر گرفتن وابستگی‌های چند مخزنی هستند، ابزارهای بازبینی کد نیز اغلب نمی‌توانند دیدی در سطح پروژه ارائه دهند. این محدودیت‌ها بار کاری را برای بازبین‌ها افزایش می‌دهد، که فاقد راه‌های کارآمد برای شناسایی تغییرات، یافتن وابستگی‌ها یا ارزیابی تأثیرات گسترده‌تر تغییرات کد هستند.

پذیرش سریع ابزارهای هوش مصنوعی از توسعه چارچوب‌هایی برای تضمین کیفیت کد پیشی گرفته است. تا زمانی که ابزارهای پیچیده‌تر استاندارد نشوند، افزایش بدهی فنی، مسائل تولید و اشکالات احتمالاً ادامه خواهد داشت. این امر فشار بیشتری را بر تیم‌های توسعه وارد می‌کند، که باید استقرارهای سریع‌تر را با کنترل کیفیت فشرده‌تر متعادل کنند.

نسل جدیدی از بازبین‌های کد هوش مصنوعی

خبر خوب؟ نسل جدیدی از دستیاران کد هوش مصنوعی در حال ظهور هستند - اما مهندسان باید مزایا و معایب را درک کنند تا بیشترین بهره را از آن‌ها ببرند.

بازبینی کد Baz AI

Baz بر روی بازبینی‌های خودکار درخواست‌های pull (PR) با پیشنهادات مبتنی بر هوش مصنوعی تمرکز دارد و بازخورد بی‌درنگ در مورد کیفیت کد و بهترین شیوه‌ها ارائه می‌دهد. Baz با بهره‌گیری از مدل‌ها و جاسازی‌های تخصصی، پیشنهادهای بازبینی کد را تولید می‌کند که تأثیر API و تجزیه و تحلیل عمیق پایین‌دستی را پوشش می‌دهد. این ابزار با گیت‌هاب یکپارچه می‌شود و دارای یک تجربه مستقل با قابلیت چت کوپایلوت است. این یک پلتفرم قوی برای پایگاه‌های کد پیچیده، چند مخزنی و چند زبانه است.

در حال حاضر Baz کاملاً بر روی چرخه بازبینی کد متمرکز است، بنابراین ابزار محدودی به عنوان IDE یا تولید کد در اوایل چرخه توسعه دارد. برای شفافیت کامل، این محصول بازبینی کد هوش مصنوعی من است که به تازگی در ژانویه منتشر شده است.

CodeRabbit

CodeRabbit همچنین با ارائه توضیحات کد و پیشنهادات بهبود در زمینه‌هایی مانند خوانایی، امنیت و کارایی، بر روی بازبینی‌های PR هوش مصنوعی متمرکز است. این ابزار به ویژه برای تیم‌های کوچک و متوسط که به دنبال ساده‌سازی فرآیندهای بازبینی خود هستند مفید است. با این حال، سفارشی‌سازی محدودی برای معیارهای پیشرفته بازبینی هوش مصنوعی دارد و به اندازه سایرین در زمینه جستجو و تجزیه و تحلیل کد جامع نیست. توسعه‌دهندگان بازخوردی را به اشتراک گذاشته‌اند که نشان می‌دهد پیشنهادات تولید شده توسط هوش مصنوعی آن گاهی اوقات می‌تواند زائد باشد یا با قراردادهای کدنویسی یک تیم همسو نباشد. همچنین برای پروژه‌های متن‌باز رایگان است.

Graphite

Graphite برای بهبود گردش کار توسعه‌دهندگان با فعال کردن PRهای سریع و افزایشی با diffهای پشته‌ای طراحی شده است، که به حفظ تاریخچه Git تمیزتر کمک می‌کند. همچنین شامل خلاصه‌های تغییر کد با کمک هوش مصنوعی می‌شود که بازبینی به‌روزرسانی‌ها را برای تیم‌ها آسان‌تر می‌کند. در حالی که Graphite برای مدیریت گردش کار عالی است، تمرکز اصلی آن بر تجزیه و تحلیل عمیق کد مبتنی بر هوش مصنوعی نبوده است و نیازمند پذیرش پلتفرم است که شامل یک منحنی یادگیری برای تیم‌های ناآشنا با diffهای پشته‌ای است.

Sourcegraph

Sourcegraph به دلیل ابزار جستجو و هوش کد قدرتمند خود، به ویژه برای پایگاه‌های کد بزرگ، شناخته شده است. در اطلاعیه‌های اخیر، آن‌ها توضیح می‌دهند که چگونه Cody، عامل کدنویسی آن‌ها، امکان تجزیه و تحلیل عمیق در سراسر مخازن و روندهای کد تاریخی را فراهم می‌کند و آن را به یک منبع ارزشمند برای توسعه‌دهندگانی تبدیل می‌کند که به قابلیت‌های جستجوی پیشرفته نیاز دارند. همچنین دارای تکمیل خودکار و توضیحات کد مبتنی بر هوش مصنوعی است. راه‌اندازی و فهرست‌بندی آن می‌تواند برای سازمان‌های بزرگ‌تر سربار ایجاد کند و در حالی که در کاوش کد عالی است، کمتر بر روی بازبینی‌های خودکار PR متمرکز است.

نتیجه‌گیری: بازبینی کد هوش مصنوعی به زمینه کدبیس نیاز دارد

ردیابی و مشاهده‌پذیری، ضریب‌های بهره‌وری برای بازبینی‌های کد هستند و به توسعه‌دهندگان این امکان را می‌دهند تا محیط‌های پیچیده، چند مخزنی و چند زبانه را بهتر درک کنند. قابلیت مشاهده بین مخزنی و بین زبانی باید خط پایه برای پروژه‌های در مقیاس بزرگ باشد – برای برنامه‌های توزیع‌شده امروزی غیرقابل مذاکره است. ابزارهایی که این قابلیت‌ها را اولویت‌بندی می‌کنند، گردش‌های کاری تولید و بازبینی کد را بازتعریف می‌کنند و به هوش مصنوعی اجازه می‌دهند تا کد واقعاً آگاه از زمینه را تولید کند که متناسب با محیط‌های نرم‌افزاری مدرن باشد.