7 октября 2019 года Apple выпустила новую версию своей операционной системы Mac — macOS Catalina. Версия 10.15 содержит множество изменений и улучшений. Одним из важных является полный отказ от 32-битных приложений. Как разработчик таких приложений для macOS, что вы можете сделать? Правильно, портируйте приложение на 64-битную платформу. Будет ли приложение работать корректно с первой попытки? Возможно, это возможно. Зависит от сложности и количества кода. Но, скорее всего, разработчики столкнутся с массой неочевидных ошибок, которые можно обнаружить заранее с помощью PVS-Studio.

Введение

Хотя технически возможно запускать 32-битные приложения в 64-битной среде, Apple решила не идти по этому пути и завершить процесс перехода на 64-битную платформу, который начался 10 лет назад. Для пользователя это означает, что если разработчик любимого приложения пользователя вовремя не озаботился портированием его на 64-битную платформу, приложение просто перестанет работать в обновленной macOS Catalina.

Не то чтобы решение Apple было неожиданным: в 2018 году на Всемирной конференции разработчиков компания заявила, что macOS Mojave станет последней версией macOS с поддержкой 32-битного программного обеспечения. Вероятно, большинство разработчиков популярных приложений уже успешно обновились до 64-битной версии macOS Catalina или завершают переход.

Следует отметить, что при всей кажущейся простоте перенос приложения на 64-битную платформу имеет массу подводных камней. Если какая-то часть приложения написана на языке C++, от разработчика может потребоваться глубокое понимание работы с памятью и указателями, а также учет многих неочевидных нюансов. В этом случае использование инструмента контроля корректности кода при переносе с 32-х на 64-битную платформу будет крайне полезным. PVS-Studio — один из примеров таких инструментов.

64-битная диагностика

Для такого случая в анализаторе PVS-Studio есть специальная группа диагностик. Изначально PVS-Studio предназначался для анализа кода C/C++ и поиска ошибок, возникающих непосредственно в результате переноса на 64-битную версию. Только после этого PVS-Studio превратился в анализатор общего назначения: стала доступна поддержка языков C# и Java, поиск потенциальных уязвимостей, поддержка стандартов безопасного кодирования (например, MISRA) и многие другие возможности.

С тех пор мы накопили большой опыт переноса на 64-битную платформу. Наша команда написала много статей на эту тему. Одна из статей на эту тему: «Сборник примеров 64-битных ошибок в реальных программах». Статья достаточно старая, но описанные в ней проблемы актуальны и сегодня. Я рекомендую ее прочитать, особенно если вы планируете или уже работаете над обновлением своих приложений до 64-разрядной версии (будь то приложения на C++ для macOS или любой другой ОС).

Вы можете включить 64-битные предупреждения следующим образом:

Windows/Visual Studio

В окне просмотра предупреждений есть кнопка для включения всей группы 64-битных диагностик:

Linux/macOS

При запуске анализатора из консоли необходимо включить 64-битную диагностику как в анализаторе, так и в генераторе отчетов:

pvs-studio-analyzer analyze ... -a 5 ...
plog-converter ... -a "64:1,2,3"

Вывод

И, конечно же, ничто не мешает вам скачать и попробовать анализатор PVS-Studio на своем коде. Удачи в борьбе с 64-битными и прочими ошибками!