Юрий Василевский «Автоматизация в XCode»

6,033 views

Published on

Юрий Василевский «Автоматизация в 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), связанные с нумерацией сборок билдов, форматированием и контролем стиля кода, анализом дублированных участков кода, управлением внешними библиотеками.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
6,033
On SlideShare
0
From Embeds
0
Number of Embeds
5,072
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Юрий Василевский «Автоматизация в XCode»

  1. 1. Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г.Автоматизация в Xсode. Практический аспект Юрий Василевский ведущий разработчик yury_vasileuski@epam.comy.vasileuski yvasileuski y.vasileuski EPAM Systems, Mobile Solutions
  2. 2. План выступления•  Автоматизация в процессе разработки•  Code sense или Как писать код быстрее•  Services или Как форматировать код•  Warnings или Как править код нагляднее•  Targets или Как собирать приложение•  Workspace или Как управлять библиотеками•  Quick Help или Как использовать подсказки 1
  3. 3. Автоматизация в процессе разработки Обязанности одного программистаНаписать код локальноСобрать готовое приложение2
  4. 4. Автоматизация в процессе разработки Обязанности группы программистовНаписать код локальноПоделиться кодомСобрать готовое приложение3
  5. 5. Автоматизация в процессе разработки Реальный процесс разработкиНаписать код локальноПроверить сборку приложения локальноПоделиться кодомСобрать готовое приложение4
  6. 6. Автоматизация в процессе разработки Реальный процесс разработкиНаписать код локальноПроверить сборку приложения локальноПроверить сборку приложения в реальномокруженииПоделиться кодомСобрать готовое приложение5
  7. 7. Автоматизация в процессе разработки Реальный процесс разработкиНаписать код локальноПроверить сборку приложения локальноПроверить сборку приложения в реальномокруженииПроверить юнит-тестыПоделиться кодомСобрать готовое приложение6
  8. 8. Автоматизация в процессе разработки Реальный процесс разработкиНаписать код локальноПроверить сборку приложения локальноПроверить сборку приложения в реальномокруженииПроверить юнит-тестыПроверить стиль кодаПоделиться кодомСобрать готовое приложение7
  9. 9. Автоматизация в процессе разработки Реальный процесс разработкиНаписать код локальноПроверить сборку приложения локальноПроверить сборку приложения в реальномокруженииПроверить юнит-тестыПроверить стиль кодаПройти код ревьюПоделиться кодомСобрать готовое приложение8
  10. 10. Автоматизация в процессе разработки Общие системы автоматизации Jira Apache Gerrit BugZilla Maven Hudson Ant Trac Perforce Jankings svn TeamCity Git9
  11. 11. Автоматизация в процессе разработки +/- Общие системы автоматизацииПреимущества:•  Автоматизация – это хорошоНедостатки:•  Нет универсального решения•  Команда поддержки•  Быстрое развитие IT и смена технологий•  Собственная инфраструктура заказчика10
  12. 12. Code sense или Как писать код быстрее Code Sense и Code Completion11
  13. 13. Code sense или Как писать код быстрее Code Sense и Code Completion12
  14. 14. Code sense или Как писать код быстрее User Code Snippets инициализация объектаобъявление расширения инициализация свойства13
  15. 15. Code sense или Как писать код быстрее Custom Code Snippets инициализация объектаобъявление расширения инициализация свойства14
  16. 16. Code sense или Как писать код быстрее Custom Code Snippets ls ~/Library/Developer/XCode/UserData/CodeSnippets/ Содержимое сниппета pragma mark (XML файл)15
  17. 17. Code sense или Как писать код быстрее +/- Code SenseПреимущества:•  Легко создавать, использовать, распространять•  Формат кода сниппетов одинаков у всех разработчиковНедостатки:•  Вчера Text Macros, сегодня Code Snippet, а завтра?•  Трудно использовать много сниппетов•  Разработчик имеет свои предпочтения и свой набор сниппетов16
  18. 18. Services или Как форматировать код Правила Code StyleApple Code style•  https://developer.apple.com/library/mac/#documentation/ Cocoa/Conceptual/CodingGuidelines/ CodingGuidelines.htmlGoogle code style:•  http://google-styleguide.googlecode.com/svn/trunk/ objcguide.xml17
  19. 19. Services или Как форматировать код Services & uncrustify18 https://github.com/tonyarnold/Xcode-4-Uncrustify-Automator-Services
  20. 20. Services или Как форматировать код +/- Services & uncrustifyПреимущества:•  Доступны в любых редакторах (AppCode, Emacs)•  Очень легко использовать•  Можно запускать по собственному усмотрениюНедостатки:•  Надо знать Automator, AppleScript•  Очень трудно настроить правила форматирования (167 правил) и адаптировать их под заказчика•  Полностью переписывает содержимое файла•  Программист не учится форматированию кода•  Надо вызывать команду вручную19
  21. 21. Services или Как форматировать код pre-commit контроль: git, svn, perforce perforce.sh: #!/bin/sh j=$(p4 diff -se).git/hooks/pre-commit: epmlint lint $j#!/bin/shj=$(exec git diff --name-only $HEAD)epmlint lint $jretval=$?exit $retval svn: •  svn lint •  epmlint lint20
  22. 22. Services или Как форматировать код Xcode & git21
  23. 23. Services или Как форматировать код +/- pre-commit контроляПреимущества:•  Обучает писать красивый код•  Полная интеграция Xcode c git•  Обязательное следование стилю•  Работает на всех системах контроля версий•  Легко расширить новыми правилами, например длина метода < 50 или длина файла < 1000Недостатки:•  Необходимо разработать свою систему проверки кода•  Разные способы интеграции для git, perforce, svn•  Приходится вручную исправлять неверный код22
  24. 24. Warnings или Как править код нагляднее Xcode warnings23
  25. 25. Warnings или Как править код нагляднее Code style warnings24
  26. 26. Warnings или Как править код нагляднее Code style build25
  27. 27. Warnings или Как править код нагляднее +/- code style warningsПреимущества:•  Простая интеграция в билд процесс•  Наглядность и точность замечаний по сравнению с консольным выводомНедостатки:•  Проверка внешних библиотек (игнор лист .epmlint)•  Дополнительный этап сборки проекта•  Продолжительный анализ всех файлов (modified only)26
  28. 28. Warnings или Как править код нагляднее CPD & copy-past warnings27 http://pmd.sourceforge.net/cpd.html
  29. 29. Warnings или Как править код нагляднее CPD проблемы28 http://pmd.sourceforge.net/cpd.html
  30. 30. Warnings или Как править код нагляднее CPD build29 http://pmd.sourceforge.net/cpd.html
  31. 31. Warnings или Как править код нагляднее +/- CPD warningsПреимущества:•  Наглядность замечаний•  Устранение копи-паста (да, CPD работает :-)•  Относительно легкая интеграция в билд процессНедостатки:•  Проверка внешних библиотек (группировка по папкам)•  Тяжело обучить - не все замечания верны / могут быть найдены (флаг minimum-tokens)•  Дополнительный этап сборки проекта30
  32. 32. Targets или Как собирать приложение Проблемы сборок•  Как к таргету добавить редко исполняемый шаг?•  Как проверить сборку приложения и убедиться, что изменения в коде одной сборки не сломали другие?•  Как автоматически менять номер сборки приложения?31
  33. 33. Targets или Как собирать приложение Aggregate target32
  34. 34. Targets или Как собирать приложение Верификация сборок33
  35. 35. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок34
  36. 36. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок35
  37. 37. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок36
  38. 38. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок37
  39. 39. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок38
  40. 40. Targets или Как собирать приложение +/- сборокПреимущества:•  Все настройки задаются через UI•  Cобирать можно как c UI, так и с консоли (xcodebuild)•  Легко проверить кросс-влияние сборок•  Легко автоматизировать изменение настроек приложенияНедостатки:•  Сложно настраивать взаимодействие сборок•  Сложно “размножать” однотипные этапы сборок между проектами (project.pbxproj, workspace)39
  41. 41. Workspace или Как управлять библиотеками Workspace или разделение проектов40
  42. 42. Workspace или Как управлять библиотеками CocoaPods $ pod install41
  43. 43. Workspace или Как управлять библиотеками CocoaPodsPodFile: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.podspecend42
  44. 44. Workspace или Как управлять библиотеками +/- CocoaPodsПреимущества:•  Отделение внешних библиотек от кода•  Авто настройка workspace и проекта•  Простое управление библиотеками•  Авто генерация документации с appledocНедостатки:•  Не все библиотеки имеют podspec спецификации•  Не всегда легко подружить с Xcode43
  45. 45. Quick Help или Как использовать подсказки Documentation & appledoc44
  46. 46. Quick Help или Как использовать подсказки Quick Help & appledoc45
  47. 47. Quick Help или Как использовать подсказки +/- appledocПреимущества:•  Отличная интеграция с Xcode•  Поддержка синтаксиса Doxygen•  Быстрый доступ к документацииНедостатки:•  Надо генерировать на локальной машине•  Надо самому писать документацию46
  48. 48. Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г.Автоматизация в Xсode. Практический аспект Юрий Василевский ведущий разработчик yury_vasileuski@epam.comy.vasileuski yvasileuski y.vasileuski EPAM Systems, Mobile Solutions

×