ከተሞከሩት የፓይዘን ማከማቻዎች ውስጥ 3.6% የሚሆኑት የነጠላ ሰረዝ ስህተት ጠፍተዋል።

የፓይዘን ኮድን በኮዱ ውስጥ ካለው የተሳሳተ የኮማ አጠቃቀም ጋር በተያያዙ ስህተቶች ተጋላጭነት ላይ የተደረገ ጥናት ውጤት ታትሟል። ችግሮቹ የሚከሰቱት ፓይዘን ሲዘረዝር በዝርዝሩ ውስጥ ያሉትን ሕብረቁምፊዎች በነጠላ ሰረዞች ካልተለዩ በራስ ሰር በማዋሃድ እና እሴቱ በነጠላ ሰረዝ ከተከተለ እሴቱን እንደ ቱፕል በመመልከቱ ነው። ተመራማሪዎቹ የ666 GitHub ማከማቻዎችን በፓይዘን ኮድ አውቶማቲክ ትንታኔ ካደረጉ በኋላ፣ ከተጠኑት ፕሮጀክቶች ውስጥ 5% የሚሆኑትን የኮማ ጉዳዮችን ለይተው አውቀዋል።

ተጨማሪ የእጅ ፍተሻ እንደሚያሳየው እውነተኛ ስህተቶች በ 24 ማከማቻዎች (3.6%) ብቻ የሚገኙ ሲሆን የተቀሩት 1.4% ደግሞ የውሸት አወንታዊ ነበሩ (ለምሳሌ ነጠላ ሰረዝ ሆን ተብሎ በመስመሮች መካከል ባለ ብዙ መስመር የፋይል ዱካዎችን ፣ ረጅም ሃሾችን ፣ ኤችቲኤምኤልን ለማጣመር በመስመሮች መካከል ሊኖር ይችላል ። ብሎኮች ወይም SQL መግለጫዎች)። ትክክለኛ ስህተት ካላቸው 24 ማከማቻዎች መካከል እንደ Tensorflow፣ Google V8፣ Sentry፣ Pydata xarray፣ rapidpro፣ django-colorfield እና django-helpdesk የመሳሰሉ ትልልቅ ፕሮጀክቶች መኖራቸው ትኩረት የሚስብ ነው። ነገር ግን፣ በነጠላ ሰረዝ ላይ ያሉ ችግሮች ለፓይዘን የተለዩ አይደሉም እና ብዙ ጊዜ በC/C++ ፕሮጀክቶች ውስጥ ይበቅላሉ (የቅርብ ጊዜ ጥገናዎች ምሳሌዎች LLVM፣ Mono፣ Tensorflow ናቸው።)

ዋናዎቹ የጥናት ዓይነቶች ስህተቶች-

  • በአጋጣሚ በዝርዝሮች፣ ቱፕልስ እና ስብስቦች ውስጥ ነጠላ ሰረዝ ጠፋ፣ ይህም ሕብረቁምፊዎች እንደ የተለየ እሴት ከመተረጎም ይልቅ እንዲጣመሩ አድርጓል። ለምሳሌ፣ በሴንትሪ ውስጥ፣ ከፈተናዎቹ አንዱ በዝርዝሩ ውስጥ ባሉት ሕብረቁምፊዎች "የሚለቀቅ" እና "ግኝት" መካከል ያለ ነጠላ ሰረዝ አምልጦታል፣ ይህም "/ የተለቀቁትን" እና " ከመፈተሽ ይልቅ የሌለውን "/የተለቀቀ" ተቆጣጣሪ መፈተሽ አስከትሏል። /ግኝት" በተናጠል።
    ከተሞከሩት የፓይዘን ማከማቻዎች ውስጥ 3.6% የሚሆኑት የነጠላ ሰረዝ ስህተት ጠፍተዋል።

    ሌላው ምሳሌ በፈጣን ፕሮ ውስጥ የጠፋ ኮማ በመስመር 572 ላይ ሁለት የተለያዩ ህጎች እንዲዋሃዱ አድርጓል።

    ከተሞከሩት የፓይዘን ማከማቻዎች ውስጥ 3.6% የሚሆኑት የነጠላ ሰረዝ ስህተት ጠፍተዋል።

  • ነጠላ-ኤለመንት tuple ፍቺ መጨረሻ ላይ የጠፋ ኮማ፣ ይህም ምደባው ከ tuple ይልቅ መደበኛ ዓይነት እንዲመደብ ያደርጋል። ለምሳሌ "እሴቶች = (1,)" የሚለው አገላለጽ የአንድ ኤለመንቱን ተለዋዋጭ ክፍል ያመጣል, ነገር ግን "እሴቶች = (1)" የአንድ ኢንቲጀር ዓይነት ምደባን ያመጣል. በእነዚህ ምደባዎች ውስጥ ያሉት ቅንፎች በአይነት ፍቺው ላይ ተጽዕኖ አያሳርፉም እና አማራጭ ናቸው፣ እና የ tuple መገኘት የሚወሰነው በነጠላ ሰረዞች መኖር ላይ በመመስረት ብቻ ነው። REST_FRAMEWORK = {'DEFAULT_PERMISSION_CLASSES'፡ ( 'rest_framework.permissions.IsAuthenticated' # ከ tuple ይልቅ ሕብረቁምፊ ይመደብለታል። )}
  • ተቃራኒው ሁኔታ በምደባ ጊዜ ተጨማሪ ነጠላ ሰረዝ ነው። በአንድ ምድብ መጨረሻ ላይ ነጠላ ነጠላ ሰረዝ በድንገት ከተተወ፣ ከተለመደው ዓይነት ይልቅ ቱፕል እንደ ዋጋ ይመደብለታል (ለምሳሌ “እሴት = 1” በ “እሴት = 1” ምትክ ከተገለጸ)።

ምንጭ: opennet.ru

አስተያየት ያክሉ