Есть ли у кого-нибудь однострочный поиск неиспользуемых изображений в проекте Xcode? (Предполагая, что все файлы упоминаются по имени в коде или файлах проекта - имена файлов не генерируются кодом.)
Эти файлы, как правило, накапливаются в течение жизни проекта, и может быть трудно определить, безопасно ли удалить любой конкретный png.
Ответы:
Для файлов, которые не включены в проект, а просто находятся в папке, вы можете нажать
cmd ⌘+ alt ⌥+A
и они не будут выделены серым цветом.
Для файлов, на которые нет ссылок ни в xib, ни в коде, может работать что-то вроде этого:
источник
Это более надежное решение - оно проверяет любые ссылку на базовое имя в любом текстовом файле. Обратите внимание на приведенные выше решения, которые не включали файлы раскадровки (вполне понятно, в то время их не существовало).
Ack делает это довольно быстро, но есть некоторые очевидные оптимизации, которые необходимо сделать, если этот сценарий запускается часто. Этот код проверяет каждое базовое имя дважды, например, если у вас есть ресурсы сетчатки / не сетчатки.
источник
brew install ack
.chmod a+x FindUnusedImages.sh
), а затем запустить его, как любую другую программу из bash./FindUnusedImages.sh
result=`ack --ignore-file=match:/.\.pbxproj/ -i "$file"`
этого требуется ack 2.0 и вышеПожалуйста, попробуйте LSUnusedResources .
На него сильно влияет Unused Джеффоднета , но, честно говоря, Unused работает очень медленно, и результаты не совсем правильные. Поэтому я сделал некоторую оптимизацию производительности, скорость поиска выше, чем у Unused.
источник
Я попробовал решение Романа и добавил несколько настроек для обработки изображений сетчатки. Он работает хорошо, но помните, что имена изображений могут быть сгенерированы программно в коде, и этот скрипт неправильно перечислит эти изображения как не имеющие ссылок. Например, у вас может быть
NSString *imageName = [NSString stringWithFormat:@"image_%d.png", 1];
Этот сценарий неправильно будет думать, что на
image_1.png
него нет ссылок.Вот модифицированный сценарий:
источник
Может быть, вы можете попробовать стройную , делает приличную работу.
Обновление: с идеей emcmanus я пошел дальше и создал небольшую утилиту без подтверждения, чтобы избежать дополнительной настройки на машине.
https://github.com/arun80/xcodeutils
источник
У меня работает только этот скрипт, который даже обрабатывает пространство в именах файлов:
редактировать
Обновлено для поддержки
swift
файлов и файловcocoapod
. По умолчанию он исключает каталог Pods и проверяет только файлы проекта. Чтобы запустить и проверить папку--pod
Pods , запустите с attrbiute:/.finunusedimages.sh --pod
Вот собственно сценарий:
источник
Я немного изменил отличный ответ @EdMcManus для обработки проектов, использующих каталоги активов.
На самом деле я не пишу сценарии bash, поэтому, если здесь нужно внести улучшения (вероятно), дайте мне знать в комментариях, и я обновлю его.
источник
Вы можете создать сценарий оболочки с
grep
исходным кодом и сравнить найденные изображения с папкой вашего проекта.Здесь мужчина (а) для
GREP
иLS
Вы можете легко зациклить весь исходный файл, сохранить изображения в массиве или что-то подобное и использовать
cat file.m | grep [-V] myImage.png
С помощью этой уловки вы можете искать все изображения в исходном коде вашего проекта !!
надеюсь это поможет!
источник
Я написал lua-скрипт, не уверен, что смогу им поделиться, потому что делал это на работе, но он работает хорошо. В основном это делается так:
Шаг первый - ссылки на статические изображения (легкий бит, покрытый другими ответами)
Шаг второй - динамические ссылки на изображения (забавный момент)
Затем удаляет все, что не было найдено ни в одном поиске.
Крайний случай состоит в том, что имена изображений, поступающие с сервера, не обрабатываются. Чтобы справиться с этим, мы включаем в этот поиск код сервера.
источник
Вы можете попробовать приложение FauxPas для Xcode . Это действительно хорошо для обнаружения недостающих изображений и множества других проблем / нарушений, связанных с проектом Xcode.
источник
Используя другие ответы, это хороший пример того, как игнорировать изображения в двух каталогах и не искать вхождения изображений в файлах pbxproj или xcassets (будьте осторожны со значком приложения и экранами-заставками). Измените * в --ignore-dir = *. Xcassets, чтобы он соответствовал вашему каталогу:
источник
Я использовал этот фреймворк: -
http://jeffhodnett.github.io/Unused/
Работает чертовски хорошо! Только 2 места, где я видел проблемы, - это когда имена изображений с сервера и когда имя ресурса изображения отличается от имени изображения внутри папки ресурсов ...
источник
Используйте http://jeffhodnett.github.io/Unused/, чтобы найти неиспользуемые изображения.
источник
Я создал сценарий python для идентификации неиспользуемых изображений: 'unused_assets.py' @ gist . Его можно использовать так:
Вот несколько правил использования скрипта:
Ограничения в первой версии:
Я постараюсь со временем улучшить его, основываясь на отзывах, однако первая версия должна подойти большинству.
Пожалуйста, найдите код ниже. Код должен быть понятным, поскольку я добавил соответствующие комментарии к каждому важному шагу .
источник