برنامه نویسی

چه چیزی Reviewpad را به بهترین سیستم مدیریت درخواست کشش تبدیل می کند

“آیا تا به حال ساعت ها صرف بررسی کد شخص دیگری کرده اید تا احساس کنید که هیچ پیشرفتی ندارید؟”

توضیحات تصویر

زمانی که من برای اولین بار به عنوان یک توسعه دهنده شروع به کار کردم، بررسی کد یکی از ترسناک ترین جنبه های کار بود.

من هرگز نمی دانستم چه انتظاری داشته باشم و اغلب احساس می کردم که کارم در حال از هم پاشیدن است. اما با گذشت زمان، یاد گرفتم که از ارزش بازخورد و اینکه چگونه می تواند به من در بهبود مهارت های کدنویسی کمک کند، قدردانی کنم.

اگر در زمینه توسعه نرم افزار کار کرده اید، احتمالاً با بررسی کدها سروکار داشته اید.

بررسی کد بازخورد است، اما فرآیندی زمان‌بر است.

هدف توسعه نرم افزار بهبود مستمر است و دریافت بازخورد برای دستیابی به آن هدف ضروری است.

با این حال، بررسی کد ممکن است دردسر بزرگی باشد. اگر راهی برای تسریع و کوتاه کردن روند وجود داشته باشد چه؟ جایی است که Reviewpad وارد بازی می شود.


چرا بررسی کدها اهمیت دارد؟

آنها یک فرصت عالی برای مربیگری هستند. بازخورد روشنگرانه یادگیری و توسعه را سرعت می بخشد.

کد کیفیت خوانایی را بهبود می بخشد و یک ضرب کننده نیرو برای سرعت طولانی مدت تیم است.

اشتباه رایجی که در حرفه‌ام دیده‌ام این است که توسعه‌دهندگانی که جدیداً در نقش «رهبر فناوری» هستند سعی می‌کنند هر بازبینی کد را انجام دهند. آنها می ترسند که اگر این کار را نکنند، چیزی خراب شود، اما بررسی هر درخواست کششی امکان پذیر یا مقیاس پذیر نیست.

اکثر توسعه دهندگان نرم افزار احتمالا از تخصیص دستی بازبینان به درخواست های کششی GitHub خسته شده اند.

آیا آماده هستید تا بهره وری خود را توربو شارژ کنید؟

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

در این آموزش، ویژگی‌ها و مزایای Reviewpad را بررسی می‌کنیم و به برخی از بهترین روش‌ها و نکاتی که به شما کمک می‌کند بهترین استفاده را از آن ببرید، نگاه می‌کنیم.

پس بیایید و پتانسیل Reviewpad را باز کنید و بهره وری خود را به سطح بعدی ببرید.

هر درخواست کشش منحصر به فرد است. با این حال، روش بررسی کد یکسان باقی می ماند. این امر توسعه را کند می کند و احساس امنیت کاذب ایجاد می کند.


TL; DR

  • Reviewpad چیست؟
  • من به عنوان یک بازبین کد با چه چالش هایی مواجه شدم؟
  • چرا Reviewpad
  • شروع کار با Reviewpad
  • OpenAI + Reviewpad
  • چرا استفاده از Reviewpad بهترین گزینه است

Reviewpad چیست؟

Reviewpad یک پلتفرم SaaS است که به توسعه دهندگان اجازه می دهد چندین فرآیند بررسی کد را مشخص و خودکار کنند.

توضیحات تصویر

این پلتفرم به‌طور یکپارچه با GitHub ادغام می‌شود و تیم‌ها را برای بهبود بررسی کدهای خود و جمع‌آوری گردش‌های درخواستی ساده می‌کند.

راه حل مقرون به صرفه و کارآمد Reviewpad به ویژه برای تیم های راه دور یا تیم هایی که در مکان های توزیع شده کار می کنند مفید است.

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

یک مثال ساده:

labels:
  ship:
    description: Ship mode
    color: 76dbbe

workflows:
  - name: ship
    description: Ship process - bypass the review and merge with rebase
    if:
      - $hasFileExtensions([".md"])
    then:
      - $addLabel("ship")
      - $summarize()
      - $merge()

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


من به عنوان یک بازبین کد با چه چالش هایی مواجه شدم؟

توضیحات تصویر

من زمان زیادی را صرف بررسی کدهای مهندسی نرم افزار می کنم، و برخی از مشکلات رایجی که با آن مواجه شدم عبارتند از:

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

و بدترین اتفاقی که می‌تواند بیفتد زمانی است که توسعه‌دهنده به «چگونه کد بهتر بنویسیم» فکر نمی‌کند و شروع به فکر کردن در مورد «چگونه کدی را بنویسد که از بررسی کد عبور می‌کند» فکر کند.

آیا انبوهی از فرآیندهای خودکار برای بررسی کد وجود ندارد؟

هنگامی که اعضای یک تیم مهندسی نرم افزار نیاز به بررسی کد دارند، اغلب باید بین ابزارها یا پلتفرم ها جهش کنند، که می تواند ناکارآمد و گیج کننده باشد.

  • Reviewpad به عنوان یک پلتفرم خدماتی عمل می کند که به همه اعضای تیم اجازه همکاری می دهد.
  • Reviewpad یک پیکربندی متمرکز برای تمام اتوماسیون درخواست کشش ارائه می دهد.

مزایای استفاده از Reviewpad در SDLC

  • گردش کار خودکار
  • تجربه بررسی یکپارچه
  • قالب های بررسی قابل تنظیم
  • انواع بررسی چندگانه
  • ادغام با سایر ابزارها
  • امنیت تقویت شده
  • پیگیری و حل مسئله
  • راه حل مقرون به صرفه

چرا Reviewpad

Reviewpad یک رویکرد ساختاریافته و استاندارد برای بررسی کدها اتخاذ می کند، آنچه را که باید بررسی شود و چارچوبی سازگار برای ارائه بازخورد ارائه می دهد.

همه درخواست های کشش یکسان نیستند. چرا از یک رویه برای همه استفاده کنید؟

Reviewpad می‌تواند با ارائه چک‌ها و هشدارهای خودکار، به کاهش خطر خطاها کمک کند و اطمینان حاصل کند که هیچ چیزی در طول فرآیند بررسی از دست نرفته است.

توضیحات تصویر

آنها خط‌مشی‌های خودکار را برای رسیدگی به درخواست‌های کشش ایجاد کرده‌اند:

  • برچسب زدن
  • بررسی تکلیف
  • نظرات کیفیت کد سفارشی و امنیتی
  • ادغام اتوماسیون

شروع کار با Reviewpad

شروع کار با Reviewpad بسیار ساده است.

Reviewpad را در مخزن تیم خود نصب کنید و reviewpad.yml خود را پیکربندی کنید (یا یکی را تغییر دهید پیشنهاد شده در روابط عمومی داخلی).

  • Reviewpad یک فرآیند بررسی مداوم با فعالیت‌های خودکار و بازخورد واضح ارائه می‌کند.
  • شما می توانید تنظیمات بررسی خود را مطابق با نیازهای تیم خود تنظیم کنید و از پلت فرم متمرکز Reviewpad برای همکاری و ارتباط استفاده کنید.
  • Reviewpad به شما امکان می دهد تا به سرعت فرآیند بررسی کد خود را ساده کنید و کیفیت کد خود را بهبود بخشید.

به صفحه Reviewpad GitHub App بروید و روی آن کلیک کنید Install دکمه.

توضیحات تصویر

شما می توانید Reviewpad را در تمام مخازن یا فقط چند مخزن نصب کنید. من تمام مخازن را انتخاب کردم.

پس از آن، نوبت به پیکربندی گردش کار GitHub می رسد.

پیکربندی Reviewpad یک فایل YAML است که گردش کار مورد استفاده برای خودکار کردن فرآیند درخواست کشش را تعریف می کند.

پس از اینکه Reviewpad را نصب کردید، یک روابط عمومی داخلی در مخازن انتخابی ایجاد می کند که یک پیشنهاد می دهد reviewpad.yml جایی که می‌توانید تنظیمات را تغییر دهید و یک پیش‌نمایش زنده از اقداماتی که در روابط عمومی باز شما انجام می‌دهد را مشاهده کنید.”

اضافه کردن reviewpad.yml به ریشه مخزن

Reviewpad به دنبال a خواهد بود reviewpad.yml در ریشه مخزن خود فایل کنید و گردش کار تنظیم شده در آن را اجرا کنید.

در ریشه مخزن خود، یک فایل به نام ایجاد کنید reviewpad.yml و مطالب زیر را اضافه کنید

# This file is used to configure Reviewpad.
# The configuration is a proposal to help you get started.
# You can use it as a starting point and customize it to your needs.
# For more details see https://docs.reviewpad.com/guides/syntax.

# Define the list of labels to be used by Reviewpad.
# For more details see https://docs.reviewpad.com/guides/syntax#label.
labels:
  small:
    description: Pull request is small
    color: "#76dbbe"
  medium:
    description: Pull request is medium
    color: "#2986cc"
  large:
    description: Pull request is large
    color: "#c90076"

# Define the list of workflows to be run by Reviewpad.
# A workflow is a list of actions that will be executed based on the defined rules.
# For more details see https://docs.reviewpad.com/guides/syntax#workflow.
workflows:
  # This workflow calls Reviewpad AI agent to summarize the pull request.
  - name: summarize
    description: Summarize the pull request
    always-run: true
    if:
      # Summarize the pull requests when pull requests are opened or synchronized.
      - rule: ($eventType() == "synchronize" || $eventType() == "opened") && $state() == "open"
        extra-actions:
          - $summarize()

  # This workflow assigns the most relevant reviewer to pull requests.
  # This helps guarantee that pull requests are reviewed by at least one person.
  - name: reviewer-assignment
    description: Assign the most relevant reviewer to pull requests
    always-run: true
    if:
      # Automatically assign reviewer when the pull request is ready for review.
      - rule: $isDraft() == false
        extra-actions:
          - $assignCodeAuthorReviewers()

  # This workflow praises contributors on their pull request contributions.
  # This helps contributors feel appreciated.
  - name: praise-contributors-on-milestones
    description: Praise contributors based on their contributions
    always-run: true
    if:
      # Praise contributors on their first pull request.
      - rule: $pullRequestCountBy($author()) == 1
        extra-actions:
          - $commentOnce($sprintf("Thank you @%s for this first contribution!", [$author()]))

  # This workflow validates that pull requests follow the conventional commits specification.
  # This helps developers automatically generate changelogs.
  # For more details, see https://www.conventionalcommits.org/en/v1.0.0/.
  - name: check-conventional-commits
    description: Validate that pull requests follow the conventional commits
    always-run: true
    if:
      - rule: $isDraft() == false
    then:
      # Check commits messages against the conventional commits specification
      - $commitLint()
      # Check pull request title against the conventional commits specification.
      - $titleLint()

  # This workflow validates best practices for pull request management.
  # This helps developers follow best practices.
  - name: best-practices
    description: Validate best practices for pull request management
    always-run: true
    if:
      # Warn pull requests that do not have an associated GitHub issue.
      - rule: $hasLinkedIssues() == false
        extra-actions:
          - $warn("Please link an issue to the pull request")
      # Warn pull requests if their description is empty.
      - rule: $description() == ""
        extra-actions:
          - $warn("Please provide a description for the pull request")
      # Warn pull request do not have a clean linear history.
      - rule: $hasLinearHistory() == false
        extra-actions:
          - $warn("Please rebase your pull request on the latest changes")

  # This workflow labels pull requests based on the total number of lines changed.
  # This helps pick pull requests based on their size and to incentivize small pull requests.
  - name: size-labeling
    description: Label pull request based on the number of lines changed
    always-run: true
    if:
      - rule: $size() < 100
        extra-actions:
          - $removeLabels(["medium", "large"])
          - $addLabel("small")
      - rule: $size() >= 100 && $size() < 300
        extra-actions:
          - $removeLabels(["small", "large"])
          - $addLabel("medium")
      - rule: $size() >= 300
        extra-actions:
          - $removeLabels(["small", "medium"])
          - $addLabel("large")

  # This workflow signals pull requests waiting for reviews.
  # This helps guarantee that pull requests are reviewed and approved by at least one person.
  - name: check-approvals
    description: Check that pull requests have the required number of approvals
    always-run: true
    if:
      # Label pull requests with `waiting-for-review` if there are no approvals;
      - rule: $isDraft() == false && $approvalsCount() < 1
        extra-actions:
          - $addLabel("waiting-for-review")

  # This workflow labels pull requests based on the pull request change type.
  # This helps pick pull requests based on their change type.
  - name: change-type-labelling
    description: Label pull requests based on the type of changes
    always-run: true
    if:
      # Label pull requests with `docs` if they only modify Markdown or txt files.
      - rule: $hasFileExtensions([".md", ".txt"])
        extra-actions:
          - $addLabel("docs")
      # Label pull requests with `infra` if they modify Terraform files.
      - rule: $hasFileExtensions([".tf"])
        extra-actions:
          - $addLabel("infra")
      # Label pull requests with `dependencies` if they only modify `package.json` and `package.lock` files.
      - rule: $hasFileExtensions(["package.json", "package-lock.json"])
        extra-actions:
          - $addLabel("dependencies")

  # This workflow validates that pull requests do not contain changes to the license.
  # This helps avoid unwanted license modifications.
  - name: license-validation
    description: Validate that licenses are not modified
    always-run: true
    if:
      # Fail Reviewpad check on pull requests that modify any LICENSE;
      - rule: $hasFilePattern("**/LICENSE*")
        extra-actions:
          - $fail("License files cannot be modified")

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


OpenAI + Reviewpad

زمان هیجان انگیزی است که هوش مصنوعی فناوری را مختل می کند و ما شاهد برنامه های بسیار عالی هستیم.

تیم Reviewpad در حال راه‌اندازی یک راه‌حل خارج از جعبه است که نحوه همکاری روزانه توسعه‌دهندگان نرم‌افزار در روابط عمومی را مختل می‌کند.

Reviewpad دستورات اسلش جدید GitHub را حتی سردتر کرده است!

آنها در حال معرفی دستور summarize هستند، در روابط عمومی شما، تایپ کنید/reviewpad summarizeبرای یک نظر در مورد خلاصه تغییرات!

می توانید همین الان به آن ضربه بزنید.


چرا استفاده از Reviewpad بهترین گزینه است

Reviewpad دارای موارد استفاده بسیار عالی است.

  • خود رفتن
  • برچسب زدن خودکار
  • مسدود کردن ادغام
  • در مورد درخواست های کشش اظهار نظر کنید
  • اجرای کنوانسیون های شعبه
  • تکلیف داور
  • ارسال / نمایش / درخواست

توضیحات تصویر

به عنوان مثال، یکی از اعضای تیم من درخواست‌های کششی بسیار کوچکی را مطرح کرد که در آنها فقط برخی از بسته‌ها را به‌روزرسانی کرد package.json

labels:
  ship:
    description: Ship mode
    color: 76dbbe

groups:
  - name: ignore-patterns
    spec: '["*.lock", "generated/**"]'

rules:
  - name: is-small-patch
    description: Patch has less than 90 changes and 6 files
    spec: $size($group("ignore-patterns")) < 90 && $fileCount() <= 5

workflows:
  - name: ship
    description: Ship process - bypass the review and merge with rebase
    if:
      - rule: is-small-patch
    then:
      - $addLabel("ship")
      - $merge("rebase")

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


نتیجه

Reviewpad یک ابزار قدرتمند و همه کاره است که می تواند به ساده سازی فرآیند بررسی کد و بهبود کیفیت کد کمک کند. این یک پلتفرم متمرکز برای همکاری و ارتباطات، قالب‌های بازبینی قابل تنظیم، و ویژگی‌های اظهارنظر و همکاری در زمان واقعی است.

راه حل مقرون به صرفه و کارآمد Reviewpad به ویژه برای تیم های راه دور یا تیم هایی که در مکان های توزیع شده کار می کنند مفید است.

اگر از تخصیص دستی بازبین به درخواست های GitHub خسته شده اید و می خواهید بهره وری خود را توربوشارژ کنید، Reviewpad قطعا ارزش بررسی را دارد.

من می خواهم این وبلاگ را با این نقل قول زیبا به پایان برسانم.

زمانی که روابط عمومی خوب است، نه کامل، تایید می‌کنم.» – کورتیس اینسمن

توصیه می کنم این وبلاگ را بخوانید که در آن او رویکرد خود را برای بررسی کد در آمازون توضیح می دهد.


این پایان این وبلاگ بود. امروز امیدوارم چیز جدیدی یاد گرفته باشید.

اگر این کار را کردید، لطفاً آن را لایک یا به اشتراک بگذارید تا دیگران نیز بتوانند آن را ببینند.

از اینکه خواننده همیشگی هستید متشکرم. شما بخش بزرگی از این هستید که چرا من توانسته ام تجربیات زندگی/ شغلی ام را با شما به اشتراک بگذارم.

دنبال کردن صفحه بررسی در توییتر برای دریافت جدیدترین به روز رسانی ها، و در صورت داشتن هر گونه سوال یا مشکل، می توانید به سرور discord آنها بپیوندید تا بحث کنید و راهنمایی دریافت کنید.

به خبرنامه من بپیوندید یا من را دنبال کنید توییتر برای دریافت مقالات بیشتر نویسندگی و مهندسی نرم افزار.

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا