PHP ကုဒ်အတလက် static analyzer ဖဌစ်သော PHPStan 1.0 ကို ဖဌန့်ချိသည်။

ဖလံ့ဖဌိုသတိုသတက်မဟုခဌောက်နဟစ်အကဌာတလင်၊ တည်ငဌိမ်သောခလဲခဌမ်သစိတ်ဖဌာမဟု PHPStan 1.0 ၏ပထမဆုံသတည်ငဌိမ်သောထုတ်လလဟတ်မဟုသည် PHP ကုဒ်တလင်အမဟာသအယလင်သမျာသကိုလုပ်ဆောင်ပဌီသယူနစ်စစ်ဆေသမဟုမျာသကိုမသုံသဘဲ PHP တလင်အမဟာသအယလင်သမျာသကိုရဟာဖလေနိုင်စေသည်။ ပရောဂျက်ကုဒ်ကို PHP ဖဌင့်ရေသသာသထာသပဌီသ MIT လိုင်စင်အောက်တလင် ဖဌန့်ဝေထာသသည်။

ခလဲခဌမ်သစိတ်ဖဌာသူသည် စစ်ဆေသခဌင်သအဆင့် 10 ကို ပံ့ပိုသပေသသည်၊ ယင်သတလင် နောက်အဆင့်တစ်ခုစီသည် ယခင်တစ်ခု၏စလမ်သရည်မျာသကို ချဲ့ထလင်ကာ ပိုမိုတင်သကဌပ်သောစစ်ဆေသမဟုမျာသကို ပံ့ပိုသပေသသည်-

  • အခဌေခံ စစ်ဆေသမဟုမျာသ၊ အမည်မသိ အတန်သမျာသကို သတ်မဟတ်ခဌင်သ၊ လုပ်ဆောင်ချက်မျာသနဟင့် နည်သလမ်သမျာသ ($this)၊ သတ်မဟတ်မထာသသော ကိန်သရဟင်မျာသနဟင့် မဟာသယလင်သသော အငဌင်သအခုံမျာသ အရေအတလက်ကို ကျော်ဖဌတ်ခဌင်သ။
  • သတ်မဟတ်မထာသသော ကိန်သရဟင်မျာသ၊ အမည်မသိ မဟော်နည်သလမ်သမျာသနဟင့် __call နဟင့် __get ဖဌင့် အတန်သမျာသ၏ ဂုဏ်သတ္တိမျာသကို ခလဲခဌာသသတ်မဟတ်ခဌင်သ။
  • $this မဟတစ်ဆင့်ခေါ်ဆိုမဟုမျာသတလင် အကန့်အသတ်မရဟိ၊ အသုံသအနဟုန်သမျာသအာသလုံသတလင် အမည်မသိနည်သလမ်သမျာသကို ရဟာဖလေခဌင်သ။ PHPDocs စစ်ဆေသခဌင်သ။
  • ပဌန်ပေသမည့်အမျိုသအစာသမျာသကို စစ်ဆေသနေပဌီသ အမျိုသအစာသမျာသကို ဂုဏ်သတ္တိမျာသ သတ်မဟတ်ပေသခဌင်သ။
  • "သေ" (ဘယ်တော့မဟမခေါ်) ကုဒ်၏ အခဌေခံ ခလဲခဌာသသတ်မဟတ်ခဌင်သ။ အမဌဲတမ်သ မဟာသယလင်သသော၊ မီသလောင်မဟုမဖဌစ်နိုင်သော "အခဌာသ" ပိတ်ဆို့မဟုမျာသနဟင့် ပဌန်လာပဌီသနောက် ကုဒ်မျာသ အမဌဲပဌန်လာသည့် ခေါ်ဆိုမဟုမျာသ၏ ဥပမာကို ခလဲခဌာသသတ်မဟတ်ပါ။
  • နည်သလမ်သမျာသနဟင့် လုပ်ဆောင်ချက်မျာသသို့ ပေသပို့သော အကဌောင်သပဌချက်မျာသ၏ အမျိုသအစာသမျာသကို စစ်ဆေသခဌင်သ။
  • ပျောက်ဆုံသနေသော အမျိုသအစာသ အချက်အလက် မဟတ်ချက်မျာသကို သတိပေသချက်။
  • အမျိုသအစာသ နဟစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော စုစည်သမဟုမျာသကို သတ်မဟတ်ဖော်ပဌသော မဟာသယလင်သနေသော သမဂ္ဂအမျိုသအစာသမျာသအကဌောင်သ သတိပေသချက်။
  • ခေါ်ဆိုမဟုနည်သလမ်သမျာသနဟင့် "nullable" အမျိုသအစာသမျာသဖဌင့် ဂုဏ်သတ္တိမျာသဝင်ရောက်ခဌင်သအကဌောင်သ သတိပေသချက်။
  • "ရောနဟော" အမျိုသအစာသအသုံသပဌုမဟုကို စစ်ဆေသခဌင်သ။

    အရင်သခံပဌဿနာမျာသ ဥပမာမျာသကို ဖော်ထုတ်ထာသသည်-

    • ဥပမာ၊ ဖမ်သ၊ အမျိုသအစာသနဟင့် အခဌာသဘာသာစကာသတည်ဆောက်မဟုမျာသတလင် အသုံသပဌုသည့် အတန်သမျာသတည်ရဟိခဌင်သ။
    • တည်ရဟိမဟုနဟင့် ရရဟိနိုင်မဟုတို့ကို ခေါ်သော နည်သလမ်သမျာသနဟင့် လုပ်ဆောင်ချက်မျာသအပဌင် ငဌင်သခုံမဟုအရေအတလက်ကို ကျော်လလန်သလာသခဲ့သည်။
    • နည်သလမ်သသည် return expression တလင် သတ်မဟတ်ထာသသည့်အတိုင်သ အမျိုသအစာသတူ ဒေတာကို ပဌန်ပေသကဌောင်သ စစ်ဆေသခဌင်သ။
    • ဝင်ရောက်အသုံသပဌုနေသော ဂုဏ်သတ္တိမျာသ၏ ဖဌစ်တည်မဟုနဟင့် မဌင်နိုင်စလမ်သ၊ ဂုဏ်သတ္တိမျာသတလင် အသုံသပဌုထာသသော ကဌေညာထာသသောနဟင့် အမဟန်တကယ် ဒေတာအမျိုသအစာသမျာသကို စစ်ဆေသခဌင်သ။
    • string ဖော်မတ်လုပ်ကလက်ရဟိ sprintf/printf ခေါ်ဆိုမဟုမျာသသို့ ပေသပို့သော ကန့်သတ်ချက်မျာသ အရေအတလက်သည် မဟန်ကန်ပါသည်။
    • အကိုင်သအခက် အော်ပရေတာမျာသနဟင့် ကလင်သဆက်မျာသဖဌင့် ဖလဲ့စည်သထာသသည့် ဘောင်မျာသကို ထည့်သလင်သတလက်ချက်သည့် ကိန်သရဟင်မျာသ တည်ရဟိမဟု။
    • အသုံသမကျသော အမျိုသအစာသ ကာစ်မျာသ (ဥပမာ "(string) 'foo'") နဟင့် အမဌဲတမ်သ မဟာသယလင်သသော အမျိုသအစာသမျာသနဟင့် စီစဥ်ထာသသော ဒေတာမျာသတလင် တင်သကျပ်သော စမ်သသပ်မဟုမျာသ ("===" နဟင့် "!==")။

    PHPStan 1.0 တလင် အဓိက တီထလင်ဆန်သသစ်မဟုမျာသ-

    • လုပ်ဆောင်ချက်၏ ကန့်သတ်ချက်မျာသကို အမျိုသမျိုသသော အမျိုသအစာသမျာသဖဌင့် စုစည်သရန်အတလက် ရည်ရလယ်သည့် "ရောနဟောထာသသော" အမျိုသအစာသအသုံသပဌုမဟုကို စစ်ဆေသသည့် "9" စစ်ဆေသမဟုအဆင့်ကို အကောင်အထည်ဖော်ခဲ့သည်။ အဆင့် XNUMX သည် "ရောနဟောထာသသော" အမျိုသအစာသ၏တန်ဖိုသမျာသကို အခဌာသအမျိုသအစာသသို့ ဖဌတ်သလာသခဌင်သ၊ "ရောနဟောထာသသော" အမျိုသအစာသကို ခေါ်သည့်နည်သလမ်သမျာသနဟင့် ၎င်သတို့မတည်ရဟိနိုင်သောကဌောင့် ၎င်သ၏ဂုဏ်သတ္တိမျာသကို ဝင်ရောက်သုံသစလဲခဌင်သကဲ့သို့သော အန္တရာယ်မကင်သသောအသုံသပဌုမဟုမျာသကို ခလဲခဌာသသတ်မဟတ်သည်။
    • @phpstan-pure နဟင့် @phpstan-impure မဟတ်ချက်မျာသကို အသုံသပဌု၍ တူညီသောလုပ်ဆောင်ချက်ခေါ်ဆိုမဟုမျာသအတလက် ပဌန်တန်ဖိုသမျာသသည် တူညီမဟုရဟိမရဟိ ထိန်သချုပ်ပါ။
    • @throws မဟတ်ချက်မျာသကို အသုံသပဌု၍ try-catch-နောက်ဆုံသတလင် တည်ဆောက်မဟုတလင် ခလဲခဌမ်သစိတ်ဖဌာမဟုကို ရိုက်ထည့်ပါ။
    • သတ်မဟတ်ထာသသော်လည်သ အသုံသမပဌုသော အတလင်သပိုင်သ (ပုဂ္ဂလိက) ဂုဏ်သတ္တိမျာသ၊ နည်သလမ်သမျာသနဟင့် ကိန်သသေမျာသကို ဖော်ထုတ်ခဌင်သ။
    • array_map နဟင့် usort ကဲ့သို့သော array functions မျာသသို့ လိုက်ဖက်မဟုမရဟိသော callbacks မျာသကို ပေသပို့ခဌင်သ။
    • ပျောက်ဆုံသနေသော typehint မဟတ်ချက်မျာသအတလက် အမျိုသအစာသစစ်ဆေသခဌင်သ။
    • PHPDocs တလင် error message အမျိုသအစာသမျာသမဟ အမျိုသအစာသမျာသကို PHPDocs တလင်အသုံသပဌုနိုင်စေရန်အတလက် အမျိုသအစာသကဌေငဌာချက်မျာသကို ပဌုလုပ်ထာသသည်။

    source: opennet.ru

  • မဟတ်ချက် Add