PHP кодын статик анализатор болох PHPStan 1.0 хувилбар

Зургаан жилийн турш хөгжүүлсний дараа PHPStan 1.0 статик анализаторын анхны тогтвортой хувилбар гарсан бөгөөд энэ нь PHP кодын алдааг түүнийг ажиллуулахгүйгээр, нэгжийн тест ашиглахгүйгээр олох боломжийг олгодог. Төслийн код нь PHP дээр бичигдсэн бөгөөд MIT лицензийн дагуу түгээгддэг.

Анализатор нь 10 түвшний шалгалтыг өгдөг бөгөөд дараагийн түвшин бүр нь өмнөх түвшний чадавхийг өргөжүүлж, илүү хатуу шалгалтыг өгдөг.

  • Үндсэн шалгалт, үл мэдэгдэх анги, функц, аргыг тодорхойлох ($this), тодорхойгүй хувьсагч, буруу тооны аргумент дамжуулах.
  • Тодорхойгүй байж болох хувьсагч, үл мэдэгдэх ид шидийн аргууд, ангиудын шинж чанаруудыг __call болон __get-ээр тодорхойлох.
  • $this-ээр дамжуулан дуудлагаар хязгаарлагдахгүй бүх илэрхийлэлд үл мэдэгдэх аргуудыг илрүүлэх. PHPDocs шалгаж байна.
  • Буцаах төрлийг шалгаж, шинж чанаруудад төрлийг оноож байна.
  • "Үхсэн" (хэзээ ч дуудаагүй) кодын үндсэн тодорхойлолт. Үргэлж худал хариу өгдөг дуудлагын жишээг, хэзээ ч асдаггүй "else" блокуудыг, буцаж ирсний дараа кодыг тодорхойл.
  • Аргументууд болон функцүүдэд дамжуулагдсан аргументуудын төрлийг шалгах.
  • Мэдээллийн тэмдэглэгээ дутуу байгаа тухай анхааруулга.
  • Хоёр ба түүнээс дээш төрлийн цуглуулгыг тодорхойлсон буруу нэгдлийн төрлүүдийн талаар анхааруулга.
  • Дуудлага хийх аргууд болон "nullable" төрлийн шинж чанаруудад хандах тухай анхааруулга.
  • "Холимог" төрлийн хэрэглээг шалгаж байна.

    Тодорхойлсон үндсэн асуудлуудын жишээ:

    • 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

  • сэтгэгдэл нэмэх