Xcode позволяет (не) проверять настройки для определенных предупреждений компилятора, которые могут предупредить вас о некоторых типах неиспользуемого кода. (Выберите проект в списке источников и выберите «Файл»> «Информация», затем выберите вкладку «Сборка».) Вот некоторые из них (которые отображаются для Clang и GCC 4.2 для меня), которые могут представлять интерес:
- Неиспользуемые функции
- Неиспользуемые параметры
- Неиспользуемые значения
Я не вижу каких-либо опций для обнаружения неиспользуемых импортов, но это немного проще - низкотехнологичный подход состоит в том, чтобы просто закомментировать операторы импорта, пока вы не получите сообщение об ошибке / предупреждении компиляции.
Неиспользуемые методы Objective C гораздо сложнее обнаружить, чем неиспользуемые функции C, поскольку сообщения отправляются динамически. Предупреждение или ошибка могут сказать вам, что у вас есть потенциальная проблема, но ее отсутствие не гарантирует, что у вас не возникнет ошибок времени выполнения.
Редактировать: Еще один хороший способ обнаружить (потенциально) неиспользуемые методы - это изучить покрытие кода фактическими выполнениями. Обычно это делается в тандеме с автоматическим модульным тестированием, но не обязательно.
Эта запись в блоге - это хорошее введение в модульное тестирование и покрытие кода с использованием Xcode. В разделе gcov
(который, кстати, работает только с кодом, сгенерированным GCC) объясняется, как заставить XCode создавать инструментированный код, который может записывать, как часто он выполнялся. Если вы возьмете инструментальную сборку своего приложения для вращения в симуляторе, а затем запустите на нем gcov, вы можете увидеть, какой код был выполнен, используя инструмент, такой как CoverStory (довольно упрощенный графический интерфейс) или lcov
(Perl-скрипты для создания отчетов HTML).
Я использую gcov
и lcov
для CHDataStructures.framework и автоматически генерирую отчеты о покрытии после каждой фиксации SVN. Опять же, помните, что неразумно рассматривать выполненное покрытие как окончательную меру того, какой код «мертв», но это, безусловно, может помочь определить методы, которые вы можете исследовать дальше.
Наконец, поскольку вы пытаетесь удалить мертвый код, я думаю, вам также будет интересен этот ТАК вопрос: