Π’ 3.6% протСстированных Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² выявлСны ошибки, связанныС с ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ запятыми

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ исслСдования подвСрТСнности ΠΊΠΎΠ΄Π° Π½Π° языкС Python ошибкам, связанным с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ использованиСм запятых Π² ΠΊΠΎΠ΄Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ пСрСчислСниях Python автоматичСски ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ строки Π² спискС, Ссли ΠΎΠ½ΠΈ Π½Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ запятой, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Ссли послС значСния слСдуСт запятая. ΠŸΡ€ΠΎΠ²Π΅Π΄Ρ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· 666 GitHub-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° языкС Python, исслСдоватСли выявили Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с запятыми Π² 5% ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ ручная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² 24 рСпозиториях (3.6%), Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ 1.4% ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠΆΠ½Ρ‹ΠΌΠΈ срабатываниями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, запятая ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΌΠ΅ΠΆΠ΄Ρƒ строками для объСдинСния Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹Ρ… Π½Π° нСсколько строк Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ, Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ…ΡΡˆΠ΅ΠΉ, HTML-Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ SQL-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ). ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² числС 24 Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ошибками оказались Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield ΠΈ django-helpdesk. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с запятыми Π½Π΅ спСцифичны для Python ΠΈ часто Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° C/C++ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ Π½Π΅Π΄Π°Π²Π½ΠΈΡ… исправлСний — LLVM, Mono, Tensorflow).

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ошибок:

  • Π‘Π»ΡƒΡ‡Π°ΠΉΠ½ΠΎ пропущСнная запятая Π² списках, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ… ΠΈ мноТСствах, приводящая ΠΊ объСдинСнию строк вмСсто ΠΈΡ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр, Π² Sentry Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· тСстов Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° запятая ΠΌΠ΅ΠΆΠ΄Ρƒ строками «releases» ΠΈ «discover» Π² спискС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° «/releasesdiscover», вмСсто Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ «/releases» ΠΈ «/discover».
    Π’ 3.6% протСстированных Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² выявлСны ошибки, связанныС с ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ запятыми

    Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ — пропущСнная запятая Π² rapidpro ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ объСдинСнию Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» Π² строкС 572:

    Π’ 3.6% протСстированных Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² выявлСны ошибки, связанныС с ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ запятыми

  • ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Π°Ρ запятая Π² ΠΊΠΎΠ½Ρ†Π΅ опрСдСлСния ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, приводящая ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² Ρ…ΠΎΠ΄Π΅ присвоСния Π±ΡƒΠ΄Π΅Ρ‚ присвоСн Π½Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ «values = (1,)» ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΏΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта, Π½ΠΎ «values = (1)» ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ΠΏΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡŽ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π‘ΠΊΠΎΠ±ΠΊΠΈ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… присвоСниях Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° опрСдСляСтся парсСром Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° основС наличия запятых. REST_FRAMEWORK = { ‘DEFAULT_PERMISSION_CLASSES’: ( ‘rest_framework.permissions.IsAuthenticated’ # вмСсто ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π±ΡƒΠ΄Π΅Ρ‚ присвоСна строка. ) }
  • ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ситуация — лишниС запятыС ΠΏΡ€ΠΈ присвоСнии. Если Π² ΠΊΠΎΠ½Ρ†Π΅ присвоСния случайно оставлСна запятая, Ρ‚ΠΎ Π² качСствС значСния вмСсто ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π±ΡƒΠ΄Π΅Ρ‚ присвоСн ΠΊΠΎΡ€Ρ‚Π΅ΠΆ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли вмСсто «value = 1» ΡƒΠΊΠ°Π·Π°Π½ΠΎ «value = 1,»).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ