3.6% ya hazina za Python zilizojaribiwa zilikuwa na makosa ya koma

Matokeo ya utafiti kuhusu kuathiriwa kwa msimbo wa Python kwa makosa yanayohusiana na matumizi yasiyo sahihi ya koma kwenye msimbo yamechapishwa. Shida husababishwa na ukweli kwamba wakati wa kuorodhesha, Python huunganisha kiotomatiki kamba kwenye orodha ikiwa hazijatenganishwa na koma, na pia huchukulia thamani kama nakala ikiwa thamani inafuatwa na koma. Baada ya kufanya uchanganuzi wa kiotomatiki wa hazina 666 za GitHub zilizo na nambari ya Python, watafiti waligundua maswala yanayowezekana katika 5% ya miradi iliyosomwa.

Ukaguzi zaidi wa mwongozo ulionyesha kuwa makosa halisi yalikuwepo katika hazina 24 pekee (3.6%), na 1.4% iliyobaki ilikuwa chanya za uwongo (kwa mfano, koma inaweza kuachwa kimakusudi kati ya mistari ili kuunganisha njia za faili za mistari mingi, heshi ndefu, HTML. vitalu au misemo ya SQL). Ni muhimu kukumbuka kuwa kati ya hazina 24 zilizo na makosa halisi kulikuwa na miradi mikubwa kama Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield na django-helpdesk. Walakini, shida na koma sio mahususi kwa Python na mara nyingi hujitokeza katika miradi ya C/C++ (mifano ya marekebisho ya hivi majuzi ni LLVM, Mono, Tensorflow).

Aina kuu za makosa yaliyosomwa:

  • Kwa bahati mbaya kukosa koma katika orodha, nakala, na seti, na kusababisha mifuatano kuunganishwa badala ya kufasiriwa kama thamani tofauti. Kwa mfano, katika Sentry, moja ya majaribio yalikosa koma kati ya mifuatano "matoleo" na "gundua" kwenye orodha, ambayo ilisababisha kuangalia kidhibiti kisichokuwepo "/releasesdiscover", badala ya kuangalia "/releases" na " /gundua" kando.
    3.6% ya hazina za Python zilizojaribiwa zilikuwa na makosa ya koma

    Mfano mwingine ni kwamba koma iliyokosekana katika rapidpro ilisababisha sheria mbili tofauti kuunganishwa kwenye mstari wa 572:

    3.6% ya hazina za Python zilizojaribiwa zilikuwa na makosa ya koma

  • Koma inayokosekana mwishoni mwa ufafanuzi wa kipengee kimoja, na kusababisha mgawo kugawa aina ya kawaida badala ya nakala. Kwa mfano, usemi "maadili = (1,)" utasababisha kugawanyika kwa nakala ya kipengele kimoja, lakini "values ​​= (1)" itasababisha ugawaji wa aina kamili. Mabano katika kazi hizi hayaathiri ufafanuzi wa aina na ni ya hiari, na uwepo wa tuple hubainishwa na kichanganuzi kulingana na uwepo wa koma. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # itagawiwa kamba badala ya nakala. ) }
  • Hali kinyume ni koma za ziada wakati wa kazi. Ikiwa koma itaachwa kimakosa mwishoni mwa kazi, nakala itawekwa kama thamani badala ya aina ya kawaida (kwa mfano, ikiwa "thamani = 1," imebainishwa badala ya "thamani = 1").

Chanzo: opennet.ru

Kuongeza maoni