پس از شش سال توسعه، اولین انتشار پایدار تحلیلگر استاتیک PHPStan 1.0 انجام شد که به شما امکان می دهد بدون اجرای آن و با استفاده از تست های واحد، خطاهای کد PHP را پیدا کنید. کد پروژه به زبان PHP نوشته شده و تحت مجوز MIT توزیع شده است.
آنالایزر 10 سطح بررسی را ارائه می دهد که در آن هر سطح بعدی قابلیت های قبلی را گسترش می دهد و بررسی های دقیق تری را ارائه می دهد:
نمونه هایی از مشکلات اساسی شناسایی شده:
- وجود کلاسهایی که در instanceof، catch، typehints و دیگر ساختارهای زبان استفاده میشوند.
- وجود و در دسترس بودن متدها و توابع فراخوانی شده و همچنین تعداد آرگومان های ارسال شده.
- بررسی اینکه متد داده هایی را با همان نوع تعریف شده در عبارت بازگشتی برمی گرداند.
- وجود و قابل مشاهده بودن ویژگی های مورد دسترسی و بررسی انواع داده های اعلام شده و واقعی مورد استفاده در ویژگی ها.
- تعداد پارامترهای ارسال شده به تماس های sprintf/printf در بلوک قالب بندی رشته درست است.
- وجود متغیرهایی با در نظر گرفتن بلوک های تشکیل شده توسط عملگرها و حلقه های انشعاب.
- ارسالهای نوع بیفایده (مثلاً "(رشته) 'foo') و آزمایشهای سخت ("===" و "!==") روی دادهها با انواع مختلف و عملوندهایی که همیشه false را برمیگردانند.
نوآوری های کلیدی در PHPStan 1.0:
- سطح بررسی "9" پیاده سازی شده است که استفاده از نوع "مخلوط" را بررسی می کند که برای سازماندهی دریافت تابع از پارامترها با انواع مختلف در نظر گرفته شده است. سطح XNUMX کاربردهای ناامن "مخلوط" را شناسایی می کند، مانند انتقال مقادیر از نوع "مخلوط" به نوع دیگر، فراخوانی روش های نوع "مخلوط" و دسترسی به ویژگی های آن به دلیل اینکه ممکن است وجود نداشته باشند.
- با استفاده از حاشیهنویسیهای @phpstan-pure و @phpstan-impure، کنترل کنید که آیا مقادیر بازگشتی برای فراخوانیهای تابع یکسان یکسان هستند یا خیر.
- تجزیه و تحلیل را در ساختارهای try-catch-finally با استفاده از حاشیهنویسیهای @throws تایپ کنید.
- شناسایی ویژگی ها، روش ها و ثابت های داخلی (خصوصی) تعریف شده اما استفاده نشده.
- ارسال تماس های ناسازگار به توابع آرایه مانند array_map و usort.
- بازرسی تایپ برای یادداشتهای تایپ از دست رفته.
- اعلانهای نوع سازگار با PHPDocs، اجازه میدهد تا انواع پیامهای خطا در PHPDocs استفاده شوند.
منبع: opennet.ru