Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г.Автоматизация в Xсode. Практический аспект         Юрий Василевский     ...
План выступления•    Автоматизация в процессе разработки•    Code sense или Как писать код быстрее•    Services или Как фо...
Автоматизация в процессе разработки        Обязанности одного программистаНаписать код локальноСобрать готовое приложение2
Автоматизация в процессе разработки        Обязанности группы программистовНаписать код локальноПоделиться кодомСобрать го...
Автоматизация в процессе разработки          Реальный процесс разработкиНаписать код локальноПроверить сборку приложения л...
Автоматизация в процессе разработки          Реальный процесс разработкиНаписать код локальноПроверить сборку приложения л...
Автоматизация в процессе разработки          Реальный процесс разработкиНаписать код локальноПроверить сборку приложения л...
Автоматизация в процессе разработки          Реальный процесс разработкиНаписать код локальноПроверить сборку приложения л...
Автоматизация в процессе разработки          Реальный процесс разработкиНаписать код локальноПроверить сборку приложения л...
Автоматизация в процессе разработки           Общие системы автоматизации                                      Jira       ...
Автоматизация в процессе разработки         +/- Общие системы автоматизацииПреимущества:•  Автоматизация – это хорошоНедос...
Code sense или Как писать код быстрее           Code Sense и Code Completion11
Code sense или Как писать код быстрее           Code Sense и Code Completion12
Code sense или Как писать код быстрее                 User Code Snippets      инициализация объектаобъявление расширения  ...
Code sense или Как писать код быстрее                Custom Code Snippets     инициализация объектаобъявление расширения  ...
Code sense или Как писать код быстрее                  Custom Code Snippets         ls ~/Library/Developer/XCode/UserData/...
Code sense или Как писать код быстрее                   +/- Code SenseПреимущества:•  Легко создавать, использовать, распр...
Services или Как форматировать код                 Правила Code StyleApple Code style•  https://developer.apple.com/librar...
Services или Как форматировать код                    Services & uncrustify18 https://github.com/tonyarnold/Xcode-4-Uncrus...
Services или Как форматировать код             +/- Services & uncrustifyПреимущества:•  Доступны в любых редакторах (AppCo...
Services или Как форматировать код      pre-commit контроль: git, svn, perforce                                       perf...
Services или Как форматировать код                 Xcode & git21
Services или Как форматировать код             +/- pre-commit контроляПреимущества:•  Обучает писать красивый код•  Полная...
Warnings или Как править код нагляднее             Xcode warnings23
Warnings или Как править код нагляднее            Code style warnings24
Warnings или Как править код нагляднее             Code style build25
Warnings или Как править код нагляднее              +/- code style warningsПреимущества:•  Простая интеграция в билд проце...
Warnings или Как править код нагляднее         CPD & copy-past warnings27     http://pmd.sourceforge.net/cpd.html
Warnings или Как править код нагляднее               CPD проблемы28     http://pmd.sourceforge.net/cpd.html
Warnings или Как править код нагляднее                   CPD build29     http://pmd.sourceforge.net/cpd.html
Warnings или Как править код нагляднее                  +/- CPD warningsПреимущества:•  Наглядность замечаний•  Устранение...
Targets или Как собирать приложение                 Проблемы сборок•  Как к таргету добавить редко исполняемый шаг?•  Как ...
Targets или Как собирать приложение                Aggregate target32
Targets или Как собирать приложение              Верификация сборок33
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок34
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок35
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок36
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок37
Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок38
Targets или Как собирать приложение                      +/- сборокПреимущества:•  Все настройки задаются через UI•  Cобир...
Workspace или Как управлять библиотеками     Workspace или разделение проектов40
Workspace или Как управлять библиотеками                CocoaPods              $ pod install41
Workspace или Как управлять библиотеками                        CocoaPodsPodFile:platform :ios, :deployment_target => 4.0’...
Workspace или Как управлять библиотеками                   +/- CocoaPodsПреимущества:•  Отделение внешних библиотек от код...
Quick Help или Как использовать подсказки         Documentation & appledoc44
Quick Help или Как использовать подсказки           Quick Help & appledoc45
Quick Help или Как использовать подсказки                   +/- appledocПреимущества:•  Отличная интеграция с Xcode•  Подд...
Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г.Автоматизация в Xсode. Практический аспект         Юрий Василевский     ...
Upcoming SlideShare
Loading in …5
×

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

832 views

Published on

Yandex Mobile Camp в Санкт-Петербурге, 30 мая 2012

Юрий Василевский, ведущий разработчик EPAM Systems, Mobile Solutions

Тема: Автоматизация в XCode

Тезисы:

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
832
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
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

×