Зургаан жилийн турш хөгжүүлсний дараа PHPStan 1.0 статик анализаторын анхны тогтвортой хувилбар гарсан бөгөөд энэ нь PHP кодын алдааг түүнийг ажиллуулахгүйгээр, нэгжийн тест ашиглахгүйгээр олох боломжийг олгодог. Төслийн код нь PHP дээр бичигдсэн бөгөөд MIT лицензийн дагуу түгээгддэг.
Анализатор нь 10 түвшний шалгалтыг өгдөг бөгөөд дараагийн түвшин бүр нь өмнөх түвшний чадавхийг өргөжүүлж, илүү хатуу шалгалтыг өгдөг.
Тодорхойлсон үндсэн асуудлуудын жишээ:
- instanceof, catch, typehints болон бусад хэлний бүтцэд хэрэглэгддэг ангиуд байгаа эсэх.
- Дуудаж буй арга, функцүүдийн оршин тогтнох, хүртээмж, түүнчлэн дамжуулсан аргументуудын тоо.
- Арга нь буцах илэрхийлэлд тодорхойлсонтой ижил төрлийн өгөгдлийг буцаадаг эсэхийг шалгаж байна.
- Хандагдаж буй шинж чанаруудын байгаа эсэх, харагдах байдал, мөн шинж чанаруудад ашиглагдсан зарласан болон бодит өгөгдлийн төрлийг шалгах.
- Мөр форматлах блок дахь sprintf/printf дуудлагад дамжуулагдсан параметрийн тоо зөв байна.
- Салаалсан операторууд болон гогцоонуудын үүсгэсэн блокуудыг харгалзан хувьсагчийн оршин тогтнох.
- Үргэлж худал буцаадаг өөр өөр төрөл, операнд бүхий өгөгдөлд ашиггүй төрлийн дамжуулалт (жишээ нь: "(string) 'foo'") болон хатуу тестүүд ("===" ба "!==").
PHPStan 1.0-ийн гол шинэчлэлүүд:
- Төрөл бүрийн параметрүүдийг хүлээн авах функцийг зохион байгуулахад зориулагдсан "холимог" төрлийн хэрэглээг шалгадаг "9" хяналтын түвшинг хэрэгжүүлэв. XNUMX-р түвшин нь "холимог" төрлийн утгыг өөр төрөлд шилжүүлэх, "холимог" төрлийн аргуудыг дуудах, тэдгээр нь байхгүй байж болзошгүй тул шинж чанаруудад хандах зэрэг "холимог"-ын аюултай хэрэглээг тодорхойлдог.
- @phpstan-pure болон @phpstan-impure тэмдэглэгээг ашиглан ижил функцийн дуудлагад буцах утгууд ижил байгаа эсэхийг хянана.
- @throws тэмдэглэгээг ашиглан try-catch-finally бүтцэд дүн шинжилгээ хийх.
- Тодорхойлогдсон боловч ашиглагдаагүй дотоод (хувийн) шинж чанар, арга, тогтмолуудыг тодорхойлох.
- array_map болон usort гэх мэт массив функцүүдэд таарахгүй буцаан дуудлагуудыг дамжуулж байна.
- Бичгийн заавар дутуу байгаа эсэхийг шалгах.
- PHPDocs-д тохирох төрлийн мэдэгдлүүдийг хийж, алдааны мэдэгдлийн төрлүүдийг PHPDocs-д ашиглах боломжийг олгосон.
Эх сурвалж: opennet.ru