Fehlend Komma fonnt an 3.6% vun getestene Python Repositories

D'Resultater vun enger Studie iwwer d'Schwachheet vum Python-Code fir Feeler am Zesummenhang mat der falscher Notzung vu Kommaen am Code goufen publizéiert. D'Problemer ginn duerch d'Tatsaach verursaacht datt beim Opzielen Python automatesch d'Strings an der Lëscht zesummekënnt, wa se net vun engem Komma getrennt sinn, an och de Wäert als Tupel behandelt wann de Wäert vun engem Komma gefollegt ass. Nodeems Dir eng automatiséiert Analyse vu 666 GitHub Repositories mat Python Code gemaach huet, hunn d'Fuerscher méiglech Kommaprobleemer an 5% vun de studéierte Projeten identifizéiert.

Weider manuell Inspektioun huet gewisen datt richteg Feeler an nëmmen 24 Repositories (3.6%) präsent waren, an déi reschtlech 1.4% ware falsch Positiver (zum Beispill, e Komma kéint bewosst tëscht Zeilen ewechgelooss ginn fir Multi-Line Dateiweeër, laang Hashen, HTML ze verbannen. Blocks oder SQL Ausdrock). Et ass bemierkenswäert datt ënner de 24 Repositories mat echte Feeler sou grouss Projete waren wéi Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield an django-Helpdesk. Wéi och ëmmer, Probleemer mat Komma sinn net spezifesch fir Python an erschéngen dacks an C / C ++ Projeten (Beispiller vu rezente Fixer sinn LLVM, Mono, Tensorflow).

D'Haaptrei Zorte vu Feeler studéiert:

  • Zoufälleg e Komma an Lëschten, Tuples a Sets vermësst, wouduerch d'Strings verlinkt ginn anstatt als separat Wäerter interpretéiert ze ginn. Zum Beispill, am Sentry, huet ee vun den Tester e Komma tëscht de Strings "Releases" an "Discover" an der Lëscht verpasst, wat zu enger Iwwerpréiwung vun engem net existente "/releasesdiscover" Handler gefouert huet, anstatt "/releases" an " /entdecken" getrennt.
    Fehlend Komma fonnt an 3.6% vun getestene Python Repositories

    En anert Beispill ass datt e fehlend Komma am rapidpro verursaacht huet datt zwee verschidde Regelen op der Linn 572 fusionéiert goufen:

    Fehlend Komma fonnt an 3.6% vun getestene Python Repositories

  • E fehlend Komma um Enn vun enger Een-Element Tuple Definitioun, verursaacht datt d'Aufgab e reguläre Typ zouginn anstatt en Tuple. Zum Beispill, den Ausdrock "Wäerter = (1,)" wäert zu enger Uerderung vun enger Variabel vun engem Tupel vun engem Element resultéieren, awer "Wäerter = (1)" wäert zu enger Uerderung vun engem ganzen Typ resultéieren. D'Klammern an dësen Uerderungen beaflossen net d'Typdefinitioun a si fakultativ, an d'Präsenz vun engem Tupel gëtt vum Parser bestëmmt op Basis vun der Präsenz vu Kommaen. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # gëtt eng String amplaz vun engem Tupel zougewisen.) }
  • De Géigendeel Situatioun ass extra Comma während Aufgab. Wann e Komma zoufälleg um Enn vun enger Aufgab hannerlooss gëtt, gëtt en Tupel als Wäert anstatt den üblechen Typ zougewisen (zum Beispill, wann "Wäert = 1," gëtt uginn anstatt "Wäert = 1").

Source: opennet.ru

Setzt e Commentaire