Sinovdan o'tgan Python omborlarining 3.6 foizida vergul xatosi yo'q edi

Python kodining koddagi vergullarni noto‘g‘ri ishlatish bilan bog‘liq xatolarga nisbatan zaifligi bo‘yicha o‘tkazilgan tadqiqot natijalari e’lon qilindi. Muammolar shundan kelib chiqadiki, raqamlashda Python ro'yxatdagi satrlarni vergul bilan ajratilmagan bo'lsa, avtomatik ravishda birlashtiradi, shuningdek, agar qiymatdan keyin vergul qo'yilgan bo'lsa, qiymatni kortej sifatida ko'radi. Python kodi bilan 666 ta GitHub omborining avtomatlashtirilgan tahlilini o‘tkazgandan so‘ng, tadqiqotchilar o‘rganilgan loyihalarning 5 foizida vergul bilan bog‘liq bo‘lishi mumkin bo‘lgan muammolarni aniqladilar.

Keyingi qo'lda tekshirish shuni ko'rsatdiki, faqat 24 ta omborda (3.6%) haqiqiy xatolar mavjud, qolgan 1.4% esa noto'g'ri musbatlar (masalan, ko'p qatorli fayl yo'llarini, uzun xeshlarni, HTMLni birlashtirish uchun satrlar orasiga vergul qo'yib yuborilishi mumkin) bloklar yoki SQL ifodalari). Shunisi e'tiborga loyiqki, haqiqiy xatolar bo'lgan 24 ta omborlar orasida Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield va django-helpdesk kabi yirik loyihalar bor edi. Biroq, vergul bilan bog'liq muammolar Python-ga xos emas va ko'pincha C/C++ loyihalarida paydo bo'ladi (so'nggi tuzatishlarga misollar LLVM, Mono, Tensorflow).

O'rganilgan xatolarning asosiy turlari:

  • Roʻyxatlar, kortejlar va toʻplamlarda tasodifan vergul qoʻyib yuborildi, bu esa satrlarni alohida qiymatlar sifatida talqin qilish oʻrniga birlashtirilishiga olib keladi. Misol uchun, Sentryda testlardan birida roʻyxatdagi “releases” va “discover” qatorlari orasidagi vergul oʻtkazib yuborilgan, buning natijasida “/releases” va “ tekshirish oʻrniga mavjud boʻlmagan “/releasesdiscover” ishlov beruvchisi sinovdan oʻtkazildi. /kashf qilish” alohida.
    Sinovdan o'tgan Python omborlarining 3.6 foizida vergul xatosi yo'q edi

    Yana bir misol, rapidpro-da etishmayotgan vergul 572-qatorda ikki xil qoidani birlashtirishga olib keldi:

    Sinovdan o'tgan Python omborlarining 3.6 foizida vergul xatosi yo'q edi

  • Bitta elementli kortej taʼrifi oxiridagi vergul yetishmayapti, bu topshiriqni kortejdan koʻra oddiy turni belgilashiga sabab boʻladi. Misol uchun, "qiymatlar = (1,)" iborasi bitta elementning o'zgaruvchisini belgilashga olib keladi, ammo "qiymatlar = (1)" butun son turini tayinlashga olib keladi. Ushbu topshiriqlardagi qavslar turni belgilashga ta'sir qilmaydi va ixtiyoriydir va kortejning mavjudligi tahlilchi tomonidan faqat vergul mavjudligiga qarab belgilanadi. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # ga kortej o'rniga satr tayinlanadi. ) }
  • Qarama-qarshi holat - topshiriq paytida qo'shimcha vergullar. Agar topshiriq oxirida tasodifan vergul qoldirilgan bo'lsa, odatiy tur o'rniga qiymat sifatida kortej belgilanadi (masalan, agar "qiymat = 1" o'rniga "qiymat = 1" ko'rsatilgan bo'lsa).

Manba: opennet.ru

a Izoh qo'shish