В 3.6% протестированных Python-репозиториев выявлены ошибки, связанные с пропущенными запятыми
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликованы результаты исследования подверженности кода на языке 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".
Другой пример - пропущенная запятая в rapidpro приводила к объединению двух разных правил в строке 572:
- Пропущенная запятая в конце определения кортежа из одного элемента, приводящая к тому, что в ходе присвоения будет присвоен не кортеж, а обычный тип. Например, выражение "values = (1,)" приведёт к присвоению переменной кортежа из одного элемента, но "values = (1)" приведёт к присвоению целого типа. Скобки в указанных присвоениях не влияют на определение типа и являются необязательными, а наличие кортежа определяется парсером только на основе наличия запятых.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated' # вместо кортежа будет присвоена строка.
)
}
- Обратная ситуация - лишние запятые при присвоении. Если в конце присвоения случайно оставлена запятая, то в качестве значения вместо обычного типа будет присвоен кортеж (например, если вместо "value = 1" указано "value = 1,").
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://news.ycombinator.com/i...)
- OpenNews: Ценой перевода Mercurial на Python 3 может стать шлейф непредвиденных ошибок
- OpenNews: Стратегия параллельного поддержания веток Python 2 и Python 3 оказалась ошибочной
- OpenNews: В каталоге PyPI выявлены вредоносные библиотеки, использующие CDN PyPI для скрытия канала связи
- OpenNews: Уязвимость в Python, проявляющаяся при обработке непроверенных дробных чисел в ctypes
- OpenNews: Применение тайпсквоттинга для распространения вредоносных модулей NPM, PyPI и Gems
Похожие новости:
- Выпуск Python-библиотеки для научных вычислений NumPy 1.22.0
- В основной ветке Python появилась возможность сборки для работы в браузере
- Выпуск Nuitka 0.6.17, компилятора для языка Python
- Intel открыл код системы машинного обучения ControlFlag для выявления ошибок в коде
- Python вырвался на первое место в рейтинге языков программирования TIOBE
- Выпуск Brython 3.10, реализации языка Python для web-браузеров
- Выпуск языка программирования Python 3.10
- Выпуск отладчика GDB 11
- Выпуск Snek 1.6, Python-подобного языка программирования для встраиваемых систем
- В сентябре состоится конференция PyCon Russia
Теги для поиска: #_python, #_bug
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:57
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликованы результаты исследования подверженности кода на языке 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). Основные виды изученных ошибок:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:57
Часовой пояс: UTC + 5