RSS Telegram YouTube Apple Яндекс Spotify Google Amazon Почта

27. Open, Close в Go

26.11.2023

Скачать

К списку выпусков

nilaway от Uber

Возможны ложные срабатывания! Подавление линтера через комментарий: //nolint:nilaway

На моем самом крупном проекте nilaway вявил более 30 проблемных мест.

"Uber активно использует язык программирования Go для разработки серверных приложений. Однако работа с указателями в Go может привести к 'nil-паникам' — ошибкам выполнения, возникающим при обращении к nil-указателю. Эти ошибки распространены и могут серьёзно сказаться на работе приложений, вплоть до их отказа и уязвимостей в безопасности.

Для решения этой проблемы Uber разработал NilAway. В отличие от аналогичного инструмента NullAway для Java, который использует аннотации кода, NilAway адаптирован под особенности Go и не требует дополнительной разметки кода. Он автоматически обнаруживает потенциальные nil-паники с помощью сложного статического анализа и методов вывода, минимизируя влияние на время сборки и соответствуя идиомам Go.

Интегрированный в процесс разработки Uber, NilAway предлагает два режима сообщения об ошибках: полный и упрощённый, фокусирующийся на новом коде. Это позволяет разработчикам выбирать подходящий уровень строгости и постепенно устранять ошибки, не замедляя процесс разработки.

В одном из случаев использования в Uber NilAway выявил сервис, регистрирующий более 3,000 nil-паник в день, и помог быстро устранить проблему.

Функции Open() и Close()

В этом выпуске мы обсуждаем ключевые аспекты работы с файлами в программировании, уделяя особое внимание процессам открытия и закрытия файлов. Мы рассматриваем, как функции open и close используются в различных языках программирования, их важность в контексте управления ресурсами и файловыми дескрипторами. Особое внимание уделяется оптимизации процесса чтения и записи файлов, а также управлению памятью и обработке ошибок при работе с файлами. Подробно обсуждаются механизмы и стратегии управления файловыми дескрипторами, включая важность их своевременного закрытия для предотвращения утечек ресурсов.

К списку выпусков