اگر شخصی مشکلی را شناسایی کند یا یک ویژگی را برای یکی از محصولات درخواست کند، یک Issue را در مخزن مربوطه باز می کند. هنگام بررسی باگ ها، دانستن اطلاعات مانند نسخه سیستم عامل، نسخه نرم افزار مفید است. این باعث می شود که توسعه دهنده بتواند مشکل ایجاد شده را دوباره ایجاد کند (جهت شناسایی منبع مشکل) و در نتیجه رفع آن بسیار سریعتر شود. بنابراین با کمک قالب ها میتوانید انواع ورودی، اعتبارسنجی و برچسبهای پیشفرض را برای فرمهای خود تعریف کنید.
ابتدا باید خوب فکر کنید که برای گزارش یک مشکل به چه اطلاعاتی نیاز دارید. من برای مخزن WindowsAppSDK مایکروسافت موارد زیر را در نظر گرفتم:
فرم های Issue به زبان YAML نوشته میشوند که به راحتی قابل درک است. فرم ها ساختار خاصی دارند که باید از آن پیروی کنید. هر فرم باید شامل یک نام، توضیحات، عنوان و برچسب باشد و یک عنصر body که ورودیهای اصلی در آن قرار میگیرند.
انواع ورودی های مجاز عبارتند از: markdown, dropdown, checkbox, textarea (جعبه متن، لیست کشویی (کمبوباکس)، چک باکس و مارک داون)
فرم ها باید در پوشه .github/ISSUE_TEMPLATE در مخزن شما قرار گیرند.
این الگو با یک بلوک علامتگذاری کوچک شروع میشود: ما میخواهیم کاربران را تشویق کنیم تا قبل از ایجاد هر گونه مشکل جدید ابتدا آن را در مسائل موجود جستجو کنند تا از مشکلات تکراری جلوگیری کنیم.
برای شروع ابتدا تمپلت پیشفرض را برای مخزن موردنظر ایجاد کنید. (اگر قبلا تمپلت ایجاد کرده اید میتوانید این مراحل را رد کنید.)
2. تمپلت موردنظر را انتخاب کنید ما اینجا گزنیه اول bug report را انتخاب میکنیم.
3. حالا روی گزینه Propose changes کلیک کنید. (قبل از ثبت تغییرات میتوانید تمپلت را با زدن گزینه Preview and edit ویرایش کنید. من ترجیح میدهم بعد از ایجاد آن را ویرایش کنم)
4. تغییرات را کامیت کنید
5.حالا میرویم سراغ فایل تمپلت پیشفرضی که ایجاد شده و آن را ویرایش میکنیم. (به مسیر فایل دقت کنید.)
6.نکته ای که باید دقت کنید، شما اول باید پسوند فایل را از md به yaml تغییر بدهید. محتوای فایل را کامل پاک کنید.
7. بسیار خوب حالا نوبت به نوشتن قالب دلخواهمان رسیده است. اول از همه باید ویژگی های پیشفرض را مشخص کنیم:
name: Bug report description: File a bug report title: "Bug title" labels: [] body:
مهم ترین ویژگی قسمت body است که باید فرم دلخواهمان را داخلش ایجاد کنیم.
ابتدا از کاربر توضیح اشکال و مراحل بازتولید را میخواهیم. اینها را می توان در ورودی متنی نوشت.
- type: markdown attributes: value: | For bugs related to WinUI, please open a bug on the [Microsoft.UI.Xaml repository](https://github.com/microsoft/microsoft-ui-xaml) - type: textarea validations: required: true attributes: label: Describe the bug description: Please enter a short, clear description of the bug. - type: textarea validations: required: true attributes: label: Steps to reproduce the bug description: Please provide any required setup and steps to reproduce the behavior. placeholder: | 1. Go to '...' 2. Click on '....' - type: textarea attributes: label: Expected behavior description: Please provide a description of what you expected to happen - type: textarea attributes: label: Screenshots description: If applicable, add screenshots here to help explain your problem
با کلمه type نوع ورودی مشخص میشود،هر ورودی شامل یک attributes است که میتوانیم لیبل، متن PlaceHolder (در صورت خالی بودن ورودی این متن نمایش داده میشود) و توضیحات مربوط به ورودی را اضافه کنیم. در قسمت validations اجباری یا اختیاری بودن ورودی مشخص میشود. در صورت اجباری بودن ورودی، تا زمانی که کاربر ورودی موردنظر را پر نکند امکان ایجاد Issue را نخواهد داشت.
در پایان باید اطلاعات نیازسنجی شده را از کاربر دریافت کنیم. با توجه به اطلاعات موردنیاز میتوانید از انواع ورودی، لیست کشویی (تک انتخابی، چند انتخابی) و چک باکس استفاده کنید.
- type: dropdown attributes: label: IDE description: Which IDE do you use? multiple: true options: - "Visual Studio 2022-preview" - "Visual Studio 2022" - "Visual Studio 2019" - "Visual Studio 2017" - "Other" - type: dropdown attributes: label: NuGet package version options: - "Microsoft.WindowsAppSDK 1.0.0-preview3" - "Microsoft.WindowsAppSDK 1.0.0-preview2" - "Microsoft.WindowsAppSDK 1.0.0-preview1" - "Microsoft.WindowsAppSDK 1.0.0-experimental1" - "Microsoft.ProjectReunion 0.8.5" - "Microsoft.ProjectReunion 0.8.4" - "Microsoft.ProjectReunion 0.8.3" - "Microsoft.ProjectReunion 0.8.2" - "Microsoft.ProjectReunion 0.8.1" - "Microsoft.ProjectReunion 0.8.0" - type: checkboxes attributes: label: Project type description: Please specify project type you have encountered the issue. options: - label: "Packaged" - label: "Unpackaged" - type: dropdown attributes: label: Windows version description: Which Windows versions did you see the issue on? multiple: true options: - "Insider Build (xxxxx)" - "Windows 11 (22000)" - "May 2021 Update (19043)" - "October 2020 Update (19042)" - "May 2020 Update (19041)" - "November 2019 Update (18363)" - "May 2019 Update (18362)" - "October 2018 Update (17763)" - "April 2018 Update (17134)" - "Fall Creators Update (16299)" - "Creators Update (15063)"
در نهایت روی کامیت کلیک کنید تا تغییرات ثبت شود.
حال یک issue جدید ایجاد کنید. تا فرم ثبت گزارش خود را مشاهده کنید.
کدهای کامل را میتوانید در این پول ریکوئست مشاهده کنید.