Юрий Василевский «Автоматизация в xcode»
DESCRIPTION
Юрий Василевский «Автоматизация в XCode» Yandex Mobile Camp в Санкт-Петербурге 2012 http://events.yandex.ru/events/yamobcamp/spb-may-2012/ Xcode — основной инструментарий разработки приложений под Mac OS X и Apple iOS. Он обладает широкими возможностями как для редактирования кода, так и для автоматизации задач. Мы обсудим некоторые из аспектов автоматизации (Code Sense, Targets, Services, Help), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.TRANSCRIPT
![Page 1: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/1.jpg)
Автоматизация в Xсode. Практический аспект
EPAM Systems, Mobile Solutions
Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г.
y.vasileuski yvasileuski y.vasileuski
Юрий Василевский ведущий разработчик
![Page 2: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/2.jpg)
• Автоматизация в процессе разработки • Code sense или Как писать код быстрее • Services или Как форматировать код • Warnings или Как править код нагляднее • Targets или Как собирать приложение • Workspace или Как управлять библиотеками • Quick Help или Как использовать подсказки
План выступления
1
![Page 3: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/3.jpg)
Написать код локально Собрать готовое приложение
Обязанности одного программиста Автоматизация в процессе разработки
2
![Page 4: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/4.jpg)
Написать код локально
Собрать готовое приложение Поделиться кодом
Автоматизация в процессе разработки Обязанности группы программистов
3
![Page 5: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/5.jpg)
Написать код локально
Собрать готовое приложение
Проверить сборку приложения локально Поделиться кодом
Реальный процесс разработки Автоматизация в процессе разработки
4
![Page 6: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/6.jpg)
Написать код локально
Собрать готовое приложение
Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Поделиться кодом
Реальный процесс разработки Автоматизация в процессе разработки
5
![Page 7: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/7.jpg)
Написать код локально
Собрать готовое приложение
Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Поделиться кодом
Реальный процесс разработки Автоматизация в процессе разработки
6
![Page 8: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/8.jpg)
Написать код локально
Собрать готовое приложение
Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Проверить стиль кода Поделиться кодом
Реальный процесс разработки Автоматизация в процессе разработки
7
![Page 9: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/9.jpg)
Написать код локально
Собрать готовое приложение
Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Проверить стиль кода Пройти код ревью Поделиться кодом
Реальный процесс разработки Автоматизация в процессе разработки
8
![Page 10: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/10.jpg)
Apache
Общие системы автоматизации
Trac
BugZilla
Jira
Maven
Ant Jankings
Hudson
TeamCity svn
Git
Perforce
Автоматизация в процессе разработки
Gerrit
9
![Page 11: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/11.jpg)
+/- Общие системы автоматизации Автоматизация в процессе разработки
Преимущества: • Автоматизация – это хорошо Недостатки: • Нет универсального решения • Команда поддержки • Быстрое развитие IT и смена технологий • Собственная инфраструктура заказчика
10
![Page 12: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/12.jpg)
Code sense или Как писать код быстрее Code Sense и Code Completion
11
![Page 13: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/13.jpg)
Code sense или Как писать код быстрее Code Sense и Code Completion
12
![Page 14: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/14.jpg)
Code sense или Как писать код быстрее User Code Snippets
инициализация объекта
объявление расширения
инициализация свойства
13
![Page 15: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/15.jpg)
Code sense или Как писать код быстрее Custom Code Snippets
инициализация объекта
объявление расширения
инициализация свойства
14
![Page 16: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/16.jpg)
Code sense или Как писать код быстрее Custom Code Snippets
ls ~/Library/Developer/XCode/UserData/CodeSnippets/
Содержимое сниппета pragma mark (XML файл)
15
![Page 17: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/17.jpg)
Code sense или Как писать код быстрее +/- Code Sense
Преимущества: • Легко создавать, использовать, распространять • Формат кода сниппетов одинаков у всех разработчиков
Недостатки: • Вчера Text Macros, сегодня Code Snippet, а завтра? • Трудно использовать много сниппетов • Разработчик имеет свои предпочтения и свой набор сниппетов
16
![Page 18: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/18.jpg)
Services или Как форматировать код Правила Code Style
Apple Code style • https://developer.apple.com/library/mac/#documentation/
Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html
Google code style: • http://google-styleguide.googlecode.com/svn/trunk/
objcguide.xml
17
![Page 19: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/19.jpg)
Services или Как форматировать код Services & uncrustify
https://github.com/tonyarnold/Xcode-4-Uncrustify-Automator-Services 18
![Page 20: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/20.jpg)
Services или Как форматировать код +/- Services & uncrustify
Преимущества: • Доступны в любых редакторах (AppCode, Emacs) • Очень легко использовать • Можно запускать по собственному усмотрению Недостатки: • Надо знать Automator, AppleScript • Очень трудно настроить правила форматирования
(167 правил) и адаптировать их под заказчика • Полностью переписывает содержимое файла • Программист не учится форматированию кода • Надо вызывать команду вручную
19
![Page 21: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/21.jpg)
Services или Как форматировать код pre-commit контроль: git, svn, perforce
.git/hooks/pre-commit: #!/bin/sh j=$(exec git diff --name-only $HEAD) epmlint lint $j retval=$? exit $retval
perforce.sh: #!/bin/sh j=$(p4 diff -se) epmlint lint $j
svn: • svn lint • epmlint lint
20
![Page 22: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/22.jpg)
Services или Как форматировать код Xcode & git
21
![Page 23: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/23.jpg)
Services или Как форматировать код +/- pre-commit контроля
Преимущества: • Обучает писать красивый код • Полная интеграция Xcode c git • Обязательное следование стилю • Работает на всех системах контроля версий • Легко расширить новыми правилами, например длина метода < 50 или длина файла < 1000
Недостатки: • Необходимо разработать свою систему проверки кода • Разные способы интеграции для git, perforce, svn • Приходится вручную исправлять неверный код
22
![Page 24: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/24.jpg)
Warnings или Как править код нагляднее Xcode warnings
23
![Page 25: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/25.jpg)
Warnings или Как править код нагляднее Code style warnings
24
![Page 26: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/26.jpg)
Warnings или Как править код нагляднее Code style build
25
![Page 27: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/27.jpg)
Warnings или Как править код нагляднее +/- code style warnings
Преимущества: • Простая интеграция в билд процесс • Наглядность и точность замечаний по сравнению с консольным выводом
Недостатки: • Проверка внешних библиотек (игнор лист .epmlint) • Дополнительный этап сборки проекта • Продолжительный анализ всех файлов (modified only)
26
![Page 28: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/28.jpg)
Warnings или Как править код нагляднее CPD & copy-past warnings
http://pmd.sourceforge.net/cpd.html 27
![Page 29: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/29.jpg)
Warnings или Как править код нагляднее CPD проблемы
http://pmd.sourceforge.net/cpd.html 28
![Page 30: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/30.jpg)
Warnings или Как править код нагляднее CPD build
http://pmd.sourceforge.net/cpd.html 29
![Page 31: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/31.jpg)
Warnings или Как править код нагляднее +/- CPD warnings
Преимущества: • Наглядность замечаний • Устранение копи-паста (да, CPD работает :-) • Относительно легкая интеграция в билд процесс Недостатки: • Проверка внешних библиотек (группировка по папкам)
• Тяжело обучить - не все замечания верны / могут быть найдены (флаг minimum-tokens)
• Дополнительный этап сборки проекта
30
![Page 32: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/32.jpg)
Targets или Как собирать приложение Проблемы сборок
• Как к таргету добавить редко исполняемый шаг? • Как проверить сборку приложения и убедиться, что изменения в коде одной сборки не сломали другие?
• Как автоматически менять номер сборки приложения?
31
![Page 33: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/33.jpg)
Targets или Как собирать приложение Aggregate target
32
![Page 34: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/34.jpg)
Targets или Как собирать приложение Верификация сборок
33
![Page 35: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/35.jpg)
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок
34
![Page 36: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/36.jpg)
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок
35
![Page 37: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/37.jpg)
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок
36
![Page 38: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/38.jpg)
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок
37
![Page 39: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/39.jpg)
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок
38
![Page 40: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/40.jpg)
Targets или Как собирать приложение +/- сборок
Преимущества: • Все настройки задаются через UI • Cобирать можно как c UI, так и с консоли (xcodebuild) • Легко проверить кросс-влияние сборок • Легко автоматизировать изменение настроек приложения
Недостатки: • Сложно настраивать взаимодействие сборок • Сложно “размножать” однотипные этапы сборок между проектами (project.pbxproj, workspace)
39
![Page 41: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/41.jpg)
Workspace или Как управлять библиотеками Workspace или разделение проектов
40
![Page 42: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/42.jpg)
Workspace или Как управлять библиотеками CocoaPods
$ pod install
41
![Page 43: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/43.jpg)
Workspace или Как управлять библиотеками CocoaPods
PodFile: platform :ios, :deployment_target => '4.0’ dependency 'JSONKit' dependency 'SDURLCache’ dependency 'SMXMLDocument’ target :’CTC-iPad' do dependency 'JSONKit’ dependency 'SVProgressHUD’ dependency 'YandexMapKit', :podspec => 'https://<…>/ YandexMapKit.podspec' end
42
![Page 44: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/44.jpg)
Workspace или Как управлять библиотеками +/- CocoaPods
Преимущества: • Отделение внешних библиотек от кода • Авто настройка workspace и проекта • Простое управление библиотеками • Авто генерация документации с appledoc Недостатки: • Не все библиотеки имеют podspec спецификации • Не всегда легко подружить с Xcode
43
![Page 45: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/45.jpg)
Quick Help или Как использовать подсказки Documentation & appledoc
44
![Page 46: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/46.jpg)
Quick Help или Как использовать подсказки Quick Help & appledoc
45
![Page 47: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/47.jpg)
Преимущества: • Отличная интеграция с Xcode • Поддержка синтаксиса Doxygen • Быстрый доступ к документации Недостатки: • Надо генерировать на локальной машине • Надо самому писать документацию
Quick Help или Как использовать подсказки +/- appledoc
46
![Page 48: Юрий Василевский «Автоматизация в XCode»](https://reader033.vdocuments.mx/reader033/viewer/2022050801/556fdaf5d8b42af8088b4cec/html5/thumbnails/48.jpg)
Автоматизация в Xсode. Практический аспект
EPAM Systems, Mobile Solutions
Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г.
y.vasileuski yvasileuski y.vasileuski
Юрий Василевский ведущий разработчик