Future ForgeFuture ForgeFuture ForgeFuture Forge
خدماتنمونه‌کارهاپکیج‌هاابزارهای رایگانیادداشت‌هادرباره ماتماس
شروع پروژه
  1. خانه
  2. /یادداشت‌ها
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

خدمات

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

کاوش

نمونه‌کارهایادداشت‌هاپرسش‌هاپکیج‌ها

ابزارهای رایگان

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

شرکت

درباره ماتماسحریم خصوصیشرایط استفاده

پروژه‌تان را مطرح کنید

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. همه حقوق محفوظ است.

خانهخدماتابزارهای رایگانشروع پروژه
واژه‌نامه

Code Review در GitHub چگونه انجام می‌شود؟ از کامنت تا Approve

بازبینی کد روی Pull Request: هدف کیفیت و اشتراک دانش، انواع Review، چک‌لیست Reviewer و نویسنده، اشتباه‌های سمی — با GitHub Docs About pull request reviews.

سا
سهیل ابراهیم‌پور

بنیان‌گذار و مهندس محصول

·۲۹ شهریور ۱۴۰۵·6 دقیقه مطالعه
کامنت‌های ریویو روی کد و دفترچه Approve یا Request changes

Code Review روی GitHub عمدتاً روی Pull Request زندگی می‌کند: خواندن diff، گذاشتن کامنت خطی، و ثبت Review با یکی از حالت‌های Comment، Approve یا Request changes. مسئله فقط پیدا کردن باگ نیست؛ کاهش ریسک تولید، انتقال دانش، و یکدست‌کردن استاندارد تیم است. مقالهٔ ۰۷۹ مفهوم عمومی Review را گفت؛ اینجا زاویهٔ عملی روی GitHub و آسیب‌شناسی Review بد.

مستندات GitHub About pull request reviews این حالت‌ها و پیشنهاد تغییر را شرح می‌دهد. Branch protection می‌تواند حداقل یک Approve را اجباری کند تا دکمهٔ Merge بدون بازبینی کار نکند.

Open PR تا Comments تا Decide تا Merge

پاسخ کوتاه

Reviewer فایل‌های عوض‌شده را می‌بیند، روی خطوط مشخص کامنت می‌گذارد، در صورت نیاز Suggested change پیشنهاد می‌کند، و در پایان Review را Submit می‌کند. Approve به‌معنی رضایت از ادغام (با فرض سبز بودن CI) است؛ Request changes مانع ادغام در مخازن با قوانین سخت می‌شود تا اصلاحات بیاید. Comment بازخورد بدون قفل کردن است.

Review خوب دربارهٔ تغییر است نه شخصیت نویسنده؛ لحن تند دانش را متوقف می‌کند.

هدف‌های Review — اولویت‌بندی

  1. صحت و امنیت: منطق غلط، تزریق، نشت Secret، مجوز نادرست.
  2. رگرسیون و سازگاری با قراردادهای موجود.
  3. خوانایی و قابلیت نگهداری در محدودهٔ معقول.
  4. اشتراک دانش و پرسش‌های آموزشی.

اگر همه چیز را در یک PR به سطح ایده‌آل معماری برسانید، صف Review می‌میرد. اولویت ریسک تولید است؛ پیشنهادهای سبک را به‌صورت non-blocking علامت بزنید.

ابزارهای GitHub که باید بشناسید

  • کامنت خطی و شروع Review چندکامنتی قبل از Submit.
  • Suggested changes برای اصلاح کوچک قابل یک‌کلیک.
  • Files changed / Commits برای دیدن دامنه.
  • CODEOWNERS برای Reviewer اجباری حوزه.
  • Required reviews در Branch protection.

CI و botها مکمل‌اند نه جایگزین انسان برای تصمیم محصولی و تهدیدهای منطقی پیچیده.

چک‌لیست Reviewer

سؤالاگر مشکوک
آیا دامنه با عنوان PR یکی است؟درخواست شکستن PR
آیا تست/مهاجرت متناسب است؟Request changes
آیا Secret یا دادهٔ حساس آمده؟Blocking فوری
آیا API عمومی ناسازگار شده؟بحث نسخه/مستند
آیا فقط سلیقه است؟کامنت اختیاری با برچسب nit

چک‌لیست نویسنده قبل از درخواست Review

  • خودتان یک‌بار diff را مثل Reviewer بخوانید.
  • بدنهٔ PR زمینه و نحوهٔ تست را بگوید.
  • CI محلی/ریموت سبز باشد یا علت قرمز معلوم باشد.
  • PR را با دامنهٔ یک منظور نگه دارید.
  • به کامنت‌ها پاسخ دهید: Fixed / Won’t fix با دلیل.

فرهنگ: Review سمی در برابر مؤثر

مؤثر: مشخص، قابل اقدام، با اشاره به ریسک. سمی: تمسخر، بازنویسی سلیقه‌ای کل فایل بدون معیار، یا Approve بدون خواندن. تیم‌های سالم زمان Review را در ظرفیت Sprint حساب می‌کنند؛ Review رایگان و آنی نیست.

برای تغییرهای حساس (امنیت، پرداخت، داده) دو Reviewer یا الزام CODEOWNERS منطقی است. برای typo در docs، یک Approve سبک کافی است.

اشتباه‌های رایج

  1. Approve برای «دوستانه بودن» بدون خواندن.
  2. ده‌ها nit بدون تفکیک Blocking.
  3. بحث طولانی در کامنت که باید به طراحی/Issue برود.
  4. نادیده گرفتن پیشنهاد امنیتی به‌خاطر عجلهٔ Release.
  5. Review فقط روی آخرین Commit و از دست دادن زمینهٔ کل PR.

نمونهٔ کامنت قابل اقدام در برابر مبهم

مبهم: «این خوب نیست.» قابل اقدام: «این شاخه در صورت null بودن user، 500 برمی‌گرداند؛ در خط ۲۸ یا زودتر 400 برگردانید تا با قرارداد API در docs/errors.md یکی شود.» دومی هم مشکل را می‌گوید هم مسیر اصلاح را.

برای نیت‌های سبک از پیشوندهایی مثل nit: استفاده کنید تا نویسنده بداند Blocking نیست. برای امنیت هرگز nit نگذارید.

Review در حضور CI و ربات

اگر ربات استایل را چک می‌کند، وقت انسان را روی همان خرج نکنید مگر ربات غلط می‌گوید. تمرکز انسان: مرز دامنه، تهدید، خوانایی قراردادهای دامنه، و تست‌های غایب. Approve وقتی CI قرمز است فقط با توضیح صریح معنا دارد؛ وگرنه سیگنال را خراب می‌کنید.

زمان‌بندی و ظرفیت

Review کار واقعی است. اگر همه فقط صبح‌ها کد می‌نویسند و عصرها صف PR می‌ترکد، SLO نقض می‌شود. چرخش Reviewer، محدود کردن اندازهٔ PR، و اختصاص زمان تقویمی برای Review بخشی از طراحی فرآیند است نه اخلاق فردی صرف.

Suggested changes و Commit از Review

پیشنهاد خطی GitHub برای اصلاحات کوچک عالی است؛ برای بازطراحی بزرگ بهتر است کامنت توضیحی بگذارید تا نویسنده خودش Commit بزند. دسته کردن پیشنهادها در یک Review به‌جای ده اعلان جدا، نویز را کم می‌کند.

Review بعد از Push جدید

وقتی نویسنده Commit جدید می‌آورد، Review قبلی ممکن است stale شود. عادت خوب: روی تغییرات جدید یک Review تازه یا حداقل تأیید «لینت‌ها را دیدم». در مخازن با dismiss stale reviews، Approve قدیمی خودکار کنار می‌رود — این را به تیم توضیح دهید تا غافلگیر نشوند.

Review امنیتی حداقلی

حتی در تیم بدون Security Engineer، Reviewer می‌تواند بپرسد: آیا ورودی اعتبارسنجی شده؟ آیا Secret در diff هست؟ آیا مجوز دسترسی درست است؟ آیا لاگ دادهٔ حساس می‌نویسد؟ این چک‌لیست کوتاه جلوی کلاس بزرگی از حوادث را می‌گیرد و با مقالهٔ ۲۱۶–۲۱۷ هم‌مسیر است.

آمار بدون وسواس

تعداد Approve یا زمان تا Merge متریک‌های مفیدند اگر برای بهبود فرآیند استفاده شوند، نه برای تنبیه افراد. Review سطحی برای بهتر کردن میانگین زمان، کیفیت را می‌کشد. متریک سالم‌تر: نرخ برگشت بعد از Merge، یا تعداد حوادث مرتبط با تغییر بدون Review.

سوالات متداول

چقدر طول بکشد؟

به اندازهٔ PR بستگی دارد. SLA تیمی (مثلاً یک روز کاری برای PR متوسط) بهتر از انتظار مبهم است.

آیا AI جای Reviewer را می‌گیرد؟

می‌تواند الگو و اشتباه سطحی را علامت بزند؛ مسئولیت ادغام و فهم دامنه هنوز با انسان و سیاست تیم است. مقالهٔ ۱۳۰ همین سری به AI code review می‌پردازد.

Request changes را کی بردارم؟

وقتی نویسنده اصلاحات را Push کرد، Review جدید ثبت کنید (Approve یا Comment). رها کردن Request changes کهنه صف را قفل می‌کند.

خلاصه

Code Review روی GitHub لایهٔ انسانی کیفیت قبل از Merge است: کامنت خطی، حالت‌های Review، و قوانین مخزن. هدف کاهش ریسک و اشتراک دانش است با لحن قابل اقدام. نویسنده با PR تمیز و Reviewer با اولویت‌بندی ریسک، جریان را زنده نگه می‌دارند.

پیوندها: ۲۰۸ برای خود PR، ۲۲۰ برای اجباری کردن Review، ۱۳۰ برای نقش AI.

منابع و مراجع

  • GitHub Docs — About pull request reviews — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews
  • GitHub Docs — Reviewing proposed changes in a pull request — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request
  • GitHub Docs — Approving a pull request with required reviews — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews
  • GitHub Docs — About code owners — https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
  • GitHub Docs — Commenting on a pull request — https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request

نویسنده

سا

سهیل ابراهیم‌پور بنیان‌گذار FutureForge است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

یادداشت‌های مرتبط

یادداشت‌های مرتبط

دسته‌بندی‌ها

خدمات مرتبط

از یادداشت تا پروژه

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

اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، می‌توانید درباره پروژه صحبت کنیم.

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

Code Review در GitHub
pull request review
approve
request changes
review comment
CODEOWNERS
سهیل ابراهیم‌پور
یادداشت‌ها
Monolith در برابر Microservices: کدام را انتخاب کنیم؟
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
Empty State، Error State و Loading State چیست؟
UX مهم‌تر است یا UI؟
چرا متن بد می‌تواند حتی یک UI زیبا را خراب کند؟

معماری نرم‌افزار

Monolith در برابر Microservices: کدام را انتخاب کنیم؟

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

۲۹ شهریور ۱۴۰۵

مهندسی محصول

Empty State، Error State و Loading State چیست؟

۲۹ شهریور ۱۴۰۵

مهندسی محصول

UX مهم‌تر است یا UI؟

۲۹ شهریور ۱۴۰۵

مهندسی محصول

چرا متن بد می‌تواند حتی یک UI زیبا را خراب کند؟

۲۹ شهریور ۱۴۰۵
همه یادداشت‌ها219
معماری نرم‌افزار13
واژه‌نامه37
عملیات و استقرار87
مهندسی محصول74
راهنمای وب8
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
پروژه‌تان را مطرح کنید
ابزارهای رایگان
پروژه‌تان را مطرح کنید