Экспортировать все предупреждения в файл в XCode

Я написал script, который показывает предупреждения Xcode. например, TODO предупреждения. Этот script будет запускаться на каждой сборке XCode. (Я написал script в опции "Run Phase" ).

Теперь я хочу собирать и экспортировать все эти предупреждения в текстовые файлы. Есть ли способ экспортировать все предупреждения или создавать ошибки в текстовый файл?

Ответ 1

(первый бит этого - это то, что вы уже сделали, или что-то в этом роде)

Вывод TODO и т.д. в качестве предупреждений.

Выберите проект, откройте вкладку "Сборка фаз" и выберите "Добавить этап сборки" > "Добавить запуск" Script "Фаза сборки" в меню "Редактор".

В поле Script используйте Script что-то вроде этого:

KEYWORDS="TODO:|FIXME:|\?\?\?:|\!\!\!:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/"

(любезно предоставлено: http://deallocatedobjects.com/posts/show-todos-and-fixmes-as-warnings-in-xcode-4)

Регулярное выражение KEYWORDS соответствует TODO:, FIXME:, ???: и !!!:, но может быть скорректировано для поиска нужных индикаторов.

Выполнение этого вывода в файл.

Script в настоящее время выводит на stdout, который подбирается XCode и анализируется. Чтобы сделать это также для входа в файл, используйте tee как часть Script (см. Конец строки 2 для изменения):

KEYWORDS="TODO:|FIXME:|\?\?\?:|\!\!\!:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/" | tee "${SRCROOT}/NOTICES.txt"

Этот подход может быть как можно более сложным, как вам нравится, а также tee в файл, мы можем увеличить Script, чтобы делать все, что мы выбираем:

KEYWORDS="TODO:|FIXME:|\?\?\?:|\!\!\!:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/" | tee ${SRCROOT}/NOTICES.txt
mail -s NOTICES [email protected] < ${SRCROOT}/NOTICES.txt

Это письмо мне.

Я подтвердил, что это работает с XCode 5.0.2, включая отправку по электронной почте.


Обратите внимание, что это не экспортирует все предупреждения из сборки в файл, что строго то, что вы просили. Я не могу найти способ автоматизировать это в XCode 5.0.2, хотя вы можете сделать это с помощью xcodebuild. Похоже, что в пользовательском интерфейсе единственный вариант - скопировать текст журнала из навигатора журнала в буфер обмена.