بهبود کیفیت کد با آنالیز استاتیک کد

آنالیز یا تست استایک کد چیست؟

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

 

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

یکی از ویژگی های برنامه ای که خوب نوشته شده این است که هزینه پیاده سازی امکانات جدید در طول حیات پروژه ثابت است. برای دسترسی به این هدف نیاز است که 7 مورد زیر در هر پروژه بررسی شود:

  • فقدان best practice و استاندارد برای کدها
  • فقدان کامنت های مناسب در سورس برنامه مخصوصا در API های عمومی
  • وجودها کدهای تکراری
  • پیچیدگی یک بخش یا پیچیدگی بین بخش های مختلف
  • عدم پوشش کد در تست واحد
  • طراحی اسپاگتی

در نتیجه امروزه علاوه بر تست های عملکردی ، نیاز به انجام سایر انواع تست مانند تست ایستا یا static test نیز ضرورت پیدا کرده است. ابزارهای مختلفی برای انجام این نوع تست مانند , Find Bugs, SonarQube, Pmd, Hp Forify, وجود دارد. در شرکت فرآیند مدار نت از نرم افزار Sonar استفاده می شود. SonarQube به دلیل ویژگی هایی مانند قابلیت ارزیابی کیفیت و امنیت برنامه های نوشته شده به زبان های متعددی همچون java, PHP, Python, Csharp  ، امکان یکپارچه سازی با Jenkins, Maven, Ant و... متمایز می باشد.

این ابزار کیفیت کد را در موارد زیر بررسی میکند:

  • کشف کدهای تکراری (Duplicted code)
  • بررسی استانداردهای کد
  • انجام تست های واحد
  • بررسی فزونی کدهای پیچیده
  • شناسایی موارد مستعد باگ
  • مشکلات طراحی و معماری
  • تشخیص مشکلات حافظه و مدیریت منابع در سطح برنامه

 

SonarQube چگونه کار میکند؟

SonarQube شامل سه بخش مجزا می باشد

1-      یک مجموعه آنالیزکننده/آنالیزور سورس کد که در پلاگین Maven گروه بندی شده اند و بسته به نیاز، هر یک از آنها فعال میشوند.

2-      در دیتابیس نه تنها نتایج تحلیل های انجام شده روی کد و تنظیمات پروژه ذخیره میشود بلکه تاریخچه تحلیل های انجام شده قبلی نیز وجود دارد

3-      قابلیت ارائه گزارش وبی برای هر پروژه ، خطاهای کشف شده و...

 

SonarQube در شرکت فرآیند مدار نت:

در شرکت فرآیند مدار نت از ابزار Sonar برای تحلیل کدهای ایستا استفاده می شود. پس از نوشتن کدها توسط برنامه نویس، زمانی که کد در مخزن کامیت می شود، عملیات تحلیل کد بصورت اتوماتیک در سرور Sonar انجام می پذیرد و توسط وی و مدیران قابل مشاهده می باشد. همچنین در پایان هر روز یک گزارش جامع از آنالیز کد به وی ایمیل می شود.

همه کدها با فایلهای ارائه شده( سورس کد یا فایلهای تست) بطور کامل بررسی می شوند. به عنوان مثال چه مقدار از کد توسط تست واحد پوشش داده شده است

همچنین با استفاده از SonarLint for Intelij ,for Eclipse هر برنامه نویس می تواند روی سیستم خود سونار را اجرا نموده و کیفیت کد خود را بررسی کند