0g امکان_خبرش +++++++++++++++++++++++++++++ “5.7909090909091”>
sonarsourceSonarSource
ما ابزار کلاس و کیفیت کد جهانی را تولید می کنیم: SonarQube ، SonarLint و SonarCloud < / p>
0g امکان_خبرش +++++++++++++++++++++++++++++ “5.7909090909091”>
ما ابزار کلاس و کیفیت کد جهانی را تولید می کنیم: SonarQube ، SonarLint و SonarCloud < / p>
به عنوان توسعه دهندگان ، همیشه زمانی فرا می رسد که اشکالی در تولید پیدا می کنیم و متعجب می شویم که چگونه از همه بررسی های کیفیت ما عبور کرده است. حقیقت این است که ما هرگز نمی توانیم مطمئن باشیم که کد ما بدون اشکال است. ما فقط می توانیم ابزارها و گردش کارهایی را انتخاب کنیم که بیشترین اشکال را پیدا کنند بدون اینکه سرعت ما را خیلی کم کند. p>
SonarQube ، SonarLint و SonarCloud از این دست ابزارها هستند. ما در حین کارزار گزارش اشکالات اخیر خود از SonarCloud استفاده کردیم ، که روی پروژه های معروف مانند tensorflow ، numpy ، نمک ، نگهبانی و بیو پایتون متمرکز بود. نتیجه کارزار کاملا جالب بود ، از آنجا که اشکالاتی را نشان می دهد که ما می توانیم در یک پروژه پایتون پیدا کنیم حتی اگر روند کار توسعه آن شامل بهترین روش ها باشد: بررسی کد ، پوشش آزمایش بالا و استفاده از یک یا چند پرز (flake8 ، pylint) ، …).
بیایید چند اشکال را که با SonarCloud پیدا کرده ایم مرور کنیم و ببینیم چرا وقتی که پرزهای محبوب این کار را نمی کنند ، چرا قادر به شناسایی آنها است. p>
SonarCloud هنگامی که متغیرها در شاخه دیگری p> تعریف می شوند می تواند ارجاعات اشکالی به متغیرهای تعریف نشده را تشخیص دهد. این از نمودار جریان کنترل استفاده می کند تا استنباط کند که تعریف متغیر هرگز قبل از ارجاع اشکال رخ نخواهد داد.
> class = “paragraf”> تشخیص کد مرده زمانی آسان است که پس از بازپرداخت p> یا دستور افزایش باشد. هنگامی که بازگشت مشروط است ، کمی سخت تر است. ما برای تشخیص مواردی که چند شاخه درست قبل از رسیدن به یک عبارت خارج می شوند ، از یک نمودار جریان کنترل استفاده می کنیم.
SonarCloud دارای یک موتور استنباط نوع است ، که به کمک آن می تواند تشخیص دهد خطاهای نوع پیشرفته از همه اطلاعاتی که می تواند برای استنباط نوع متغیر از جمله مقاله های خرد Typeshed ، تکالیف و حاشیه نویسی نوع شما استفاده کند ، استفاده می کند. در عین حال ، اگر از حاشیه نویسی نوع استفاده نکنید شکایت نمی کند ، و برای جلوگیری از مثبت های کاذب. تاپل این الگوریتم می تواند تکالیف لیست بعدی را به output_shape نادیده بگیرد.
<> پاراگراف بیشتر>> “<" پاراگراف "> <> پاراگراف> <> پاراگراف paragraf> پارامتر> <> پاراگراف paragraf>
SonarCloud از مقاله های خرد Typeshed برای شناخت انواع مورد انتظار توابع builtins استفاده می کند. بنابراین در اینجا این مسئله مسئله ای را ایجاد می کند زیرا اگر len داخلی را روی یک عدد صحیح فراخوانی کنید ، یک p> TypeError دریافت می کنید.
SonarCloud قوانین زیادی برای تشخیص کد دارد که ایجاد نمی کند احساس، مفهوم. مقایسه انواع ناسازگار با p> == هرگز شکست نخواهد خورد ، اما اگر False استفاده کنید همیشه False یا True برمی گردد! =. در اینجا می توانیم یک مسئله را مشاهده کنیم زیرا platform.architecture () یک جمع را برمی گرداند.
هنگام بازبینی کد ، معمولاً کلاسها ، متغیرها و سایر نمادهای معنی دار را بررسی می کنیم و فراموش می کنیم جزئیات کمی را بررسی کنیم ، از جمله “آیا وجود دارد کلمه کلیدی را قبل از استثنا my من مطرح کنید “. SonarCloud برای استخراج سلسله مراتب نوع ، کل پروژه شما را تجزیه و تحلیل می کند. بنابراین وقتی استثناهای سفارشی کنار گذاشته می شود ، نه فقط موارد ساخته شده را تشخیص می دهد. p>
این یکی از بازخوردهای خوبی است که در طی گزارش گزارش اشکالات خود دریافت کردیم. (موارد بیشتری وجود دارد!). p>
همه پروژه هایی که بررسی کردیم از یک یا چند پرز استفاده می کنند ، مانند Flake8 که بسیار محبوب است و اغلب در گردش کار CI گنجانده می شود. دلایل بسیار خوبی برای استفاده گسترده Flake8 وجود دارد: p>
SonarLint ، SonarCloud و SonarQube از همان فلسفه در مورد سرعت و مثبت کاذب برخوردارند. هر سه توسعه دهنده هدف ، این بدان معنی است که ما سخت تلاش می کنیم تا “سر و صدا” را به حداقل برسانیم. علاوه بر این ، SonarCloud و SonarQube می توانند هر دو شماره Flake8 را وارد کنند. اما مهمتر از همه: p>
می توانید از SonarCloud بصورت رایگان استفاده کنید هر پروژه منبع باز و فقط با چند کلیک شروع کنید. SonarQube Community Edition همچنین برای استفاده در فضای داخلی نامحدود رایگان است. دریغ نکنید که نظرات خود را ، خوب یا بد ، در انجمن جامعه ما به اشتراک بگذارید. این به ما کمک می کند تا ابزارهای خود را هر روز بهبود ببخشیم. p>
قبلاً در https://blog.sonarsource.com/sonarcloud-finds-bugs-in-high-bigh-python-projects p>