بررسی کد (Code Review)

بررسی کد فرآیندی است که در آن اعضای تیم کد یکدیگر را قبل از merge بررسی می‌کنند. به حفظ کیفیت کد، اشتراک دانش و شناسایی زودهنگام باگ‌ها کمک می‌کند.

گردش کار بررسی کد

۱. ایجاد Pull Request

# ایجاد branch ویژگی
git checkout -b feature/new-feature

# ایجاد تغییرات و commit
git add .
git commit -m "افزودن ویژگی جدید"
git push origin feature/new-feature

سپس یک pull request در گیتی‌یار ایجاد کنید.

۲. درخواست بررسی

در pull request:

  1. روی "بررسی‌کنندگان" در نوار کناری راست کلیک کنید
  2. اعضای تیم را انتخاب کنید
  3. اختیاری کامنتی اضافه کنید که روی چه چیزی تمرکز کنند

۳. بررسی کد

بررسی‌کنندگان باید:

  • تغییرات کد را با دقت بخوانند
  • هدف و زمینه را درک کنند
  • به دنبال باگ‌ها و موارد خاص باشند
  • تأیید کنند کد از استانداردها پیروی می‌کند
  • در صورت نیاز تغییرات را محلی تست کنند

ویژگی‌های بررسی

مشاهده تغییرات

نمای Diff:

  • مشاهده تمام تغییرات کنار هم
  • اضافات و حذف‌های برجسته
  • برجسته‌سازی سینتکس
  • Diff تقسیم‌شده یا یکپارچه

تاریخچه Commit:

  • مشاهده تمام commit ها در PR
  • دیدن پیام‌های commit
  • ردیابی تغییرات در طول زمان

کامنت‌های درون‌خطی

روی خطوط خاص کامنت بگذارید:

  1. روی شماره خط hover کنید
  2. روی آیکون "+" کلیک کنید
  3. کامنت خود را بنویسید
  4. روی "افزودن کامنت تکی" یا "شروع بررسی" کلیک کنید

وضعیت‌های بررسی

کامنت:

  • بازخورد عمومی
  • بدون تأیید یا رد
  • پرسیدن سوالات یا پیشنهاد بهبودها

تأیید:

  • کد آماده merge است
  • تمام نگرانی‌ها برطرف شده
  • استانداردهای کیفیت را دارد

درخواست تغییرات:

  • مسائل باید قبل از merge رفع شوند
  • بازخورد خاص ارائه شده
  • نویسنده باید نگرانی‌ها را برطرف کند

بهترین شیوه‌ها

برای نویسندگان

قبل از ارسال:

  • ✅ ابتدا کد خود را self-review کنید
  • ✅ اطمینان حاصل کنید کد کامپایل می‌شود و تست‌ها پاس می‌شوند
  • ✅ توضیح PR واضح بنویسید
  • ✅ تغییرات بزرگ را به PR های کوچکتر تقسیم کنید
  • ✅ برای منطق پیچیده کامنت اضافه کنید
  • ✅ برای ویژگی‌های جدید تست شامل کنید

در طول بررسی:

  • ✅ به تمام کامنت‌ها پاسخ دهید
  • ✅ محترمانه و حرفه‌ای باشید
  • ✅ استدلال خود را توضیح دهید
  • ✅ تغییرات درخواستی را سریع انجام دهید
  • ✅ به‌روزرسانی‌ها را به همان branch push کنید
  • ✅ از بررسی‌کنندگان به خاطر زمانشان تشکر کنید

برای بررسی‌کنندگان

فرآیند بررسی:

  • ✅ سریع بررسی کنید (ظرف ۲۴ ساعت)
  • ✅ سازنده باشید، نه انتقادی
  • ✅ چرا را توضیح دهید، نه فقط چه چیزی را
  • ✅ بهبودهای خاص پیشنهاد دهید
  • ✅ شیوه‌های خوب را تأیید کنید
  • ✅ اگر تغییرات پیچیده هستند محلی تست کنید

انواع کامنت:

سوالات:

"اگر این آرایه خالی دریافت کند چه اتفاقی می‌افتد؟"

پیشنهادات:

"استفاده از map را در اینجا برای عملکرد بهتر در نظر بگیرید"

نکات ریز:

"نکته: فاصله اضافی در خط ۴۲"

موانع:

"این باید قبل از merge حالت خطا را مدیریت کند"

چک‌لیست بررسی کد

عملکرد

  • آیا کد کار مورد نظر را انجام می‌دهد؟
  • آیا موارد خاص مدیریت شده‌اند؟
  • آیا مدیریت خطا کافی است؟
  • آیا باگی وجود دارد؟

کیفیت کد

  • آیا کد خوانا و قابل نگهداری است؟
  • آیا از قراردادهای پروژه پیروی می‌کند؟
  • آیا نام متغیرها توصیفی است؟
  • آیا پیچیدگی غیرضروری وجود دارد؟

امنیت

  • آیا آسیب‌پذیری امنیتی وجود دارد؟
  • آیا ورودی کاربر اعتبارسنجی شده است؟
  • آیا secrets به‌درستی مدیریت شده‌اند؟
  • آیا احراز هویت/مجوز صحیح است؟

عملکرد

  • آیا مشکل عملکردی وجود دارد؟
  • آیا محاسبات غیرضروری وجود دارد؟
  • آیا query های دیتابیس کارآمد هستند؟
  • آیا caching به‌طور مناسب استفاده شده است؟

تست

  • آیا تست‌ها شامل شده‌اند؟
  • آیا تست‌ها موارد خاص را پوشش می‌دهند؟
  • آیا تمام تست‌ها پاس می‌شوند؟
  • آیا پوشش تست کافی است؟

مستندات

  • آیا کد مستند شده است؟
  • آیا الگوریتم‌های پیچیده توضیح داده شده‌اند؟
  • آیا توضیح PR واضح است؟
  • آیا تغییرات API مستند شده‌اند؟

رفع نگرانی‌های بررسی

ایجاد تغییرات

# ایجاد تغییرات درخواستی
# ویرایش فایل‌ها...

# Commit تغییرات
git add .
git commit -m "پاسخ به کامنت‌های بررسی"

# Push برای به‌روزرسانی PR
git push origin feature/new-feature

علامت‌گذاری به عنوان حل‌شده

  1. کامنت را در کد یا مکالمه برطرف کنید
  2. اگر بررسی‌کننده هستید روی "حل مکالمه" کلیک کنید
  3. اطمینان حاصل کنید تمام تغییرات درخواستی برطرف شده‌اند

بررسی‌های پیگیری

پس از ایجاد تغییرات:

  1. بررسی‌کنندگان کد به‌روز شده را مجدداً بررسی می‌کنند
  2. اگر راضی هستند تأیید می‌کنند
  3. اگر لازم است درخواست تغییرات بیشتر می‌کنند
  4. وقتی تمام نگرانی‌ها برطرف شد merge می‌کنند

Merge

چه زمانی Merge کنیم

  • ✅ تمام تغییرات درخواستی برطرف شده
  • ✅ حداقل یک تأیید (یا تعداد مورد نیاز)
  • ✅ تمام بررسی‌های CI در حال پاس شدن
  • ✅ بدون تداخل merge
  • ✅ تیم موافق است آماده است

روش‌های Merge

Merge Commit:

  • تمام commit ها را حفظ می‌کند
  • یک commit merge ایجاد می‌کند
  • بهترین برای branch های ویژگی

Squash و Merge:

  • تمام commit ها را در یکی ترکیب می‌کند
  • تاریخچه تمیز
  • بهترین برای PR های کوچک

Rebase و Merge:

  • commit ها را روی branch هدف rebase می‌کند
  • تاریخچه خطی
  • بهترین برای حفظ تاریخچه تمیز

مراحل بعدی