In 3,6 % der getesteten Python-Repositories wurden Fehler im Zusammenhang mit fehlenden Kommas festgestellt.

Die Ergebnisse einer Studie zur AnfĂ€lligkeit von Python-Code fĂŒr Fehler durch inkorrekte Verwendung von Kommas wurden veröffentlicht. Die Probleme entstehen dadurch, dass Python bei AufzĂ€hlungen automatisch Strings in einer Liste zusammenfĂŒhrt, wenn sie nicht durch Kommas getrennt sind, und auch den Wert als Tuple behandelt, wenn auf den Wert ein Komma folgt. Durch die automatisierte Analyse von 666 GitHub-Repositories mit Python-Code identifizierten die Forscher mögliche Komma-Probleme in 5 % der untersuchten Projekte.

Eine anschließende manuelle ÜberprĂŒfung ergab, dass tatsĂ€chliche Fehler nur in 24 Repositories (3,6 %) vorkommen, wĂ€hrend die restlichen 1,4 % Fehlalarme sind (zum Beispiel könnte ein Komma absichtlich zwischen Strings weggelassen worden sein, um gebrochene Datei-Pfade, lange Hashes, HTML-Blöcke oder SQL-AusdrĂŒcke zusammenzufĂŒhren). Interessanterweise gehören zu den 24 Repositories mit tatsĂ€chlichen Fehlern grĂ¶ĂŸere Projekte wie Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield und django-helpdesk. Dabei sind die Komma-Probleme nicht spezifisch fĂŒr Python und tauchen hĂ€ufig in C/C++-Projekten auf (beispielsweise kĂŒrzliche Korrekturen — LLVM, Mono, Tensorflow).

Hauptarten der untersuchten Fehler:

  • Ein versehentlich fehlendes Komma in Listen, Tuples und Mengen, das dazu fĂŒhrt, dass Strings zusammengefĂŒhrt werden, anstatt sie als separate Werte zu interpretieren. Zum Beispiel wurde in Sentry in einem der Tests ein Komma zwischen den Strings „releases“ und „discover“ in einer Liste ĂŒbersehen, was dazu fĂŒhrte, dass der nicht existierende Handler „/releasesdiscover“ ĂŒberprĂŒft wurde, anstatt getrennt „/releases“ und „/discover“ zu ĂŒberprĂŒfen.
    In 3,6 % der getesteten Python-Repositories wurden Fehler im Zusammenhang mit fehlenden Kommas festgestellt.

    Ein weiteres Beispiel — das fehlende Komma in rapidpro fĂŒhrte dazu, dass zwei verschiedene Regel in Zeile 572 zusammengefĂŒhrt wurden:

    In 3,6 % der getesteten Python-Repositories wurden Fehler im Zusammenhang mit fehlenden Kommas festgestellt.
  • Ein fehlendes Komma am Ende der Definition eines Ein-Elemente-Tupels, das dazu fĂŒhrt, dass bei der Zuweisung nicht ein Tuple, sondern ein gewöhnlicher Typ zugewiesen wird. Zum Beispiel fĂŒhrt der Ausdruck „values = (1,)“ zur Zuweisung einer Variable mit einem Ein-Elemente-Tuple, wĂ€hrend „values = (1)“ zur Zuweisung eines Ganzzahltyps fĂŒhrt. Die Klammern in den angegebenen Zuweisungen beeinflussen nicht die Typdefinition und sind optional, wĂ€hrend das Vorhandensein eines Tuples nur anhand der Kommas vom Parser erkannt wird. REST_FRAMEWORK = { ‘DEFAULT_PERMISSION_CLASSES’: ( ‘rest_framework.permissions.IsAuthenticated’ # anstelle eines Tuples wird ein String zugewiesen. ) }
  • Die gegenteilige Situation – ĂŒberflĂŒssige Kommas bei der Zuweisung. Wenn am Ende einer Zuweisung versehentlich ein Komma zurĂŒckgelassen wird, wird anstelle eines normalen Typs ein Tuple zugewiesen (zum Beispiel, wenn anstelle von „value = 1“ „value = 1,“ angegeben wird).

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster