சோதனை செய்யப்பட்ட பைதான் களஞ்சியங்களில் 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

கருத்தைச் சேர்