برنامه نویسی

Microsoft.CodeAnalysis.BannedApiAnalyzer – انجمن DEV

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

حتی با بررسی کد، قوانین همچنان می توانند شکسته شوند که ما را به یک بسته MCABAA NuGet Microsoft.CodeAnalysis.BannedApiAnalyzers Roslyn می رساند که راهی برای انجام یک بررسی پیش از بررسی کد و/یا هنگام نوشتن کد ارائه می دهد.

نحوه استفاده از MCABAA

  • بسته را به یک پروژه اضافه کنید
  • یک فایل متنی با نام BannedSymbols.txt در پوشه اصلی پروژه ایجاد کنید.

فایل پروژه را با دوبار کلیک کردن روی فایل پروژه در Solution Explorer بررسی کنید و به نحوه قرار دادن فایل ممنوعه توجه کنید.

  <ItemGroup>
      <None Remove="BannedSymbols.txt" />
  </ItemGroup>

  <ItemGroup>
      <AdditionalFiles Include="BannedSymbols.txt" />
  </ItemGroup>
وارد حالت تمام صفحه شوید

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

افزودن قوانین

مثال 1

فرض کنید برای کار با پایگاه داده SQL-Server با ارائه دهنده داده بسته Microsoft.Data.SqlClient نباید استفاده شود اما در عوض هسته چارچوب نهاد. قانون زیر را اضافه کنید (زیرا اولین تماس معمولاً یک نمونه از SqlConnection ایجاد می کند.

T:Microsoft.Data.SqlClient.SqlConnection; Use EF Core instead
وارد حالت تمام صفحه شوید

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

در صورتی که توسعه‌دهنده تلاش می‌کند از آن استفاده کند، قانون دیگری لازم است System.Data.SqlClient

T:System.Data.SqlClient.SqlConnection; Use EF Core instead
وارد حالت تمام صفحه شوید

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

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

M:Library1.Classes.DataOperations.ReadData; use EF Core instead
وارد حالت تمام صفحه شوید

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

مثال 2

عدم استفاده از Newtonsoft.Json.JsonConvert، استفاده کنید System.Text.Json.JsonSerializer بجای.

T:Newtonsoft.Json.JsonConvert;Use System.Text.Json.JsonSerializer instead
وارد حالت تمام صفحه شوید

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

مثال 3

غیر مجاز System.DateTime.Now به نفع استفاده System.DateTime.UtcNow

P:System.DateTime.Now;Use System.DateTime.UtcNow instead
وارد حالت تمام صفحه شوید

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

مثال 4

تیم دو نسخه از یک کلاس دارد، در این مورد Person در دو پروژه کلاس جداگانه.

پروژه کلاسی Library1 کلاس شخص

public class Person
{
    public int Id { get; set; }
    public string Type { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime? BirthDate { get; set; }
}
وارد حالت تمام صفحه شوید

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

پروژه کلاس Library2 کلاس شخص

public class Person
{
    public int Id { get; set; }
    public string Type { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateOnly? BirthDate { get; set; }
}
وارد حالت تمام صفحه شوید

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

Library1 برای پروژه از قبل موجود است، بنابراین باید باقی بماند، اما برای پروژه های جدید، از Library2 استفاده کنید. موارد زیر را اضافه می کنیم.

T:Library1.Models.Person;Use Library2.Models.Person which uses DateOnly rather than DateTime.
وارد حالت تمام صفحه شوید

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

پیدا کردن قوانین شکسته

پروژه(ها) را بسازید و لیست خطاها را در ویژوال استودیو بررسی کنید.

کد با قوانین شکسته چگونه به نظر می رسد

قوانین شکسته در ویرایشگر کد

برگه تقلب قوانین

صفحه زیر را ببینید

هشدارها

  • پرونده BannedSymbols.txt را می توان در پوشه ای خارج از پروژه قرار داد، اما ممکن است همیشه کار نکند.
  • قوانین را نمی توان برای روش های پسوند زبان اعمال کرد.

کد منبع

به جای صرف زمان برای راه اندازی یک پروژه، مخزن GitHub زیر را شبیه سازی کنید.

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

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

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

همچنین ببینید
بستن
دکمه بازگشت به بالا