စမ်းသပ်ထားသော Python repositories ၏ 3.6% တွင် ကော်မာအမှားများ ပျောက်ဆုံးနေပါသည်။

ကုဒ်ရှိ ကော်မာများ မှားယွင်းစွာအသုံးပြုမှုနှင့် ဆက်စပ်သော အမှားများအတွက် Python ကုဒ်၏ အားနည်းချက်အပေါ် လေ့လာမှုတစ်ခု၏ ရလဒ်များကို ထုတ်ပြန်လိုက်ပါသည်။ စာရင်းကောက်သည့်အခါတွင် Python သည် ကော်မာဖြင့်မခြားပါက ၎င်းတို့ကို အလိုအလျောက်ပေါင်းစပ်ကာ တန်ဖိုးကို ကော်မာနောက်တွင် tuple အဖြစ် သတ်မှတ်ပေးသောကြောင့် ပြဿနာများဖြစ်ပေါ်လာခြင်းဖြစ်သည်။ Python ကုဒ်ဖြင့် 666 GitHub repositories ကို အလိုအလျောက်ခွဲခြမ်းစိတ်ဖြာပြီးနောက် သုတေသီများသည် လေ့လာခဲ့သည့် ပရောဂျက်များ၏ 5% တွင် ဖြစ်နိုင်ချေရှိသော ကော်မာပြဿနာများကို ဖော်ထုတ်ခဲ့သည်။

နောက်ထပ်လက်စွဲစစ်ဆေးခြင်းတွင် သိုလှောင်မှု 24 ခု (3.6%) သာ အမှားအယွင်းများ ရှိနေကြောင်း ပြသခဲ့ပြီး ကျန် 1.4% သည် မှားယွင်းသော အပြုသဘောများဖြစ်သည် (ဥပမာ၊ လိုင်းပေါင်းစုံ ဖိုင်လမ်းကြောင်းများကို ပေါင်းစည်းရန် မျဉ်းကြောင်းများကြားတွင် ကော်မာကို တမင်ချန်လှပ်ထားနိုင်သည်၊ ရှည်လျားသော hashes၊ HTML ပိတ်ဆို့ခြင်း သို့မဟုတ် SQL အသုံးအနှုန်းများ)။ စစ်မှန်သောအမှားအယွင်းများရှိသည့် သိုလှောင်ရုံ 24 ခုတွင် Tensorflow၊ Google V8၊ Sentry၊ Pydata xarray၊ rapidpro၊ django-colorfield နှင့် django-helpdesk ကဲ့သို့သော ကြီးမားသောပရောဂျက်များဖြစ်သည်ကို မှတ်သားဖွယ်တွေ့ရှိရသည်။ သို့သော်လည်း၊ ကော်မာပါသော ပြဿနာများသည် Python အတွက် သီးသန့်မဟုတ်သည့်အပြင် မကြာခဏဆိုသလို C/C++ ပရောဂျက်များတွင် တက်လာသည် (လတ်တလောပြင်ဆင်မှုများ၏ ဥပမာများမှာ LLVM၊ Mono၊ Tensorflow)။

လေ့လာခဲ့သော အဓိကအမှားအမျိုးအစားများ

  • စာရင်းများ၊ tuples နှင့် sets များတွင် ကော်မာတစ်ခု မတော်တဆပျောက်ဆုံးသွားသဖြင့် သီးခြားတန်ဖိုးများအဖြစ် အဓိပ္ပာယ်ဖွင့်ဆိုရမည့်အစား စာကြောင်းများကို ပေါင်းစပ်သွားစေသည်။ ဥပမာအားဖြင့်၊ Sentry တွင်၊ စစ်ဆေးမှုများထဲမှ တစ်ခုသည် စာရင်းရှိ "ဖြန့်ချိမှုများ" နှင့် "discover" ကြားရှိ ကော်မာတစ်ခု လွတ်သွားသည်၊ ၎င်းသည် "/releases" နှင့် "" ကိုစစ်ဆေးမည့်အစား တည်ရှိခြင်းမရှိသော "/releasesdiscover" ကိုင်တွယ်သူကို စမ်းသပ်ခြင်းဖြစ်စေသည်။ /discover" သီးခြားစီ။
    စမ်းသပ်ထားသော Python repositories ၏ 3.6% တွင် ကော်မာအမှားများ ပျောက်ဆုံးနေပါသည်။

    နောက်ဥပမာတစ်ခုကတော့ rapidpro မှာ ပျောက်ဆုံးနေတဲ့ ကော်မာတစ်ခုက မတူညီတဲ့ စည်းမျဉ်းနှစ်ခုကို စာကြောင်း 572 မှာ ပေါင်းစည်းလိုက်တာကြောင့် ဖြစ်ပါတယ်။

    စမ်းသပ်ထားသော Python repositories ၏ 3.6% တွင် ကော်မာအမှားများ ပျောက်ဆုံးနေပါသည်။

  • တစ်ခုတည်းသောဒြပ်စင် tuple အဓိပ္ပါယ်ဖွင့်ဆိုချက်၏အဆုံးတွင် ကော်မာပျောက်နေသောကြောင့် တာဝန်ကို tuple မဟုတ်ဘဲ ပုံမှန်အမျိုးအစားကို သတ်မှတ်ပေးစေသည်။ ဥပမာအားဖြင့်၊ "values ​​= (1,)" ဆိုသည့် စကားရပ်သည် ဒြပ်စင်တစ်ခု၏ tuple တစ်ခု၏ variable တစ်ခုသို့ assignment တစ်ခု ဖြစ်ပေါ်လာလိမ့်မည်၊ သို့သော် "values ​​= (1)" သည် integer type တစ်ခု၏ assignment ကို ဖြစ်ပေါ်စေလိမ့်မည်။ ဤတာဝန်များတွင် ကွင်းစဥ်များသည် အမျိုးအစား အဓိပ္ပါယ်ဖွင့်ဆိုချက်အပေါ် မထိခိုက်စေဘဲ ချန်လှပ်ထားနိုင်ပြီး၊ tuple တစ်ခု၏ပါဝင်မှုကို ကော်မာများပါဝင်မှုအပေါ်အခြေခံ၍သာ parser မှ ဆုံးဖြတ်သည်။ REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # ကို tuple အစား စာကြောင်းတစ်ခု သတ်မှတ်ပေးပါမည်။ ) }
  • ဆန့်ကျင်ဘက်အခြေအနေမှာ တာဝန်ချိန်အတွင်း အပိုကော်မာများဖြစ်သည်။ တာဝန်တစ်ခု၏အဆုံးတွင် ကော်မာကို မတော်တဆချန်ထားခဲ့ပါက၊ ပုံမှန်အမျိုးအစားအစား tuple တစ်ခုအား တန်ဖိုးအဖြစ် သတ်မှတ်ပေးမည် (ဥပမာ၊ အကယ်၍ “တန်ဖိုး = 1” ကို “တန်ဖိုး = 1” အစား “တန်ဖိုး = XNUMX” ဟု သတ်မှတ်ထားပါက)။

source: opennet.ru

မှတ်ချက် Add