పరీక్షించిన 3.6% పైథాన్ రిపోజిటరీలలో కామా లోపాలు లేవు

కోడ్‌లో కామాలను తప్పుగా ఉపయోగించడం వల్ల కలిగే లోపాలపై పైథాన్ కోడ్ యొక్క దుర్బలత్వంపై అధ్యయనం యొక్క ఫలితాలు ప్రచురించబడ్డాయి. గణించేటప్పుడు, కామాతో వేరు చేయనట్లయితే, పైథాన్ స్వయంచాలకంగా జాబితాలోని స్ట్రింగ్‌లను సంగ్రహిస్తుంది మరియు విలువను కామాతో అనుసరించినట్లయితే విలువను టుపుల్‌గా పరిగణించడం వల్ల సమస్యలు ఏర్పడతాయి. పైథాన్ కోడ్‌తో 666 గిట్‌హబ్ రిపోజిటరీల స్వయంచాలక విశ్లేషణను నిర్వహించిన తర్వాత, పరిశోధకులు అధ్యయనం చేసిన 5% ప్రాజెక్ట్‌లలో కామా సమస్యలను గుర్తించారు.

తదుపరి మాన్యువల్ తనిఖీలో కేవలం 24 రిపోజిటరీలలో (3.6%) నిజమైన ఎర్రర్‌లు ఉన్నాయని మరియు మిగిలిన 1.4% తప్పుడు పాజిటివ్‌లు అని చూపించింది (ఉదాహరణకు, బహుళ-లైన్ ఫైల్ పాత్‌లు, లాంగ్ హ్యాష్‌లు, HTMLలను కలపడానికి లైన్‌ల మధ్య కామా ఉద్దేశపూర్వకంగా విస్మరించబడుతుంది. బ్లాక్‌లు లేదా SQL వ్యక్తీకరణలు). నిజమైన ఎర్రర్‌లు ఉన్న 24 రిపోజిటరీలలో Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield మరియు django-helpdesk వంటి పెద్ద ప్రాజెక్ట్‌లు ఉండటం గమనార్హం. అయినప్పటికీ, కామాలతో సమస్యలు పైథాన్‌కి ప్రత్యేకమైనవి కావు మరియు తరచుగా C/C++ ప్రాజెక్ట్‌లలో క్రాప్ అప్ అవుతాయి (ఇటీవలి పరిష్కారాలకు ఉదాహరణలు LLVM, Mono, Tensorflow).

లోపాల యొక్క ప్రధాన రకాలు అధ్యయనం చేయబడ్డాయి:

  • జాబితాలు, టుపుల్‌లు మరియు సెట్‌లలో అనుకోకుండా కామా మిస్ అయింది, దీని వలన స్ట్రింగ్‌లు వేరు వేరు విలువలుగా అన్వయించబడకుండా సంగ్రహించబడతాయి. ఉదాహరణకు, సెంట్రీలో, జాబితాలోని "విడుదలలు" మరియు "డిస్కవర్" స్ట్రింగ్‌ల మధ్య ఒక పరీక్షలో కామా తప్పింది, దీని ఫలితంగా "/విడుదలలు" మరియు "ని తనిఖీ చేయడానికి బదులుగా ఉనికిలో లేని "/విడుదల డిస్కవర్" హ్యాండ్లర్‌ని తనిఖీ చేయడం జరిగింది. /కనుగొనండి" విడిగా.
    పరీక్షించిన 3.6% పైథాన్ రిపోజిటరీలలో కామా లోపాలు లేవు

    మరొక ఉదాహరణ ఏమిటంటే, రాపిడ్‌ప్రోలో తప్పిపోయిన కామా రెండు వేర్వేరు నియమాలను లైన్ 572లో విలీనం చేయడానికి కారణమైంది:

    పరీక్షించిన 3.6% పైథాన్ రిపోజిటరీలలో కామా లోపాలు లేవు

  • సింగిల్-ఎలిమెంట్ టుపుల్ డెఫినిషన్ చివరిలో తప్పిపోయిన కామా, అసైన్‌మెంట్ టుపుల్ కాకుండా సాధారణ రకాన్ని కేటాయించేలా చేస్తుంది. ఉదాహరణకు, "విలువలు = (1,)" అనే వ్యక్తీకరణ ఒక మూలకం యొక్క టుపుల్ యొక్క వేరియబుల్‌కు అసైన్‌మెంట్‌కు దారి తీస్తుంది, అయితే "విలువలు = (1)" పూర్ణాంకం రకం యొక్క అసైన్‌మెంట్‌కు దారి తీస్తుంది. ఈ అసైన్‌మెంట్‌లలోని కుండలీకరణాలు టైప్ డెఫినిషన్‌ను ప్రభావితం చేయవు మరియు ఐచ్ఛికం, మరియు టుపుల్ ఉనికిని కామాల ఉనికి ఆధారంగా మాత్రమే పార్సర్ నిర్ణయిస్తుంది. REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated' #కి టుపుల్‌కి బదులుగా స్ట్రింగ్ కేటాయించబడుతుంది. ) }
  • అసైన్‌మెంట్ సమయంలో వ్యతిరేక పరిస్థితి అదనపు కామాలు. అసైన్‌మెంట్ చివరిలో అనుకోకుండా కామా మిగిలి ఉంటే, సాధారణ రకానికి బదులుగా టుపుల్ విలువగా కేటాయించబడుతుంది (ఉదాహరణకు, “విలువ = 1”కి బదులుగా “విలువ = 1” పేర్కొనబడితే).

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి