48
Автоматизация в Xсode. Практический аспект EPAM Systems, Mobile Solutions Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г. y.vasileuski yvasileuski y.vasileuski [email protected] Юрий Василевский ведущий разработчик

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

  • Upload
    yandex

  • View
    5.915

  • Download
    0

Embed Size (px)

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

Citation preview

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

Автоматизация в Xсode. Практический аспект

EPAM Systems, Mobile Solutions

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

y.vasileuski yvasileuski y.vasileuski

[email protected]

Юрий Василевский ведущий разработчик

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

•  Автоматизация в процессе разработки •  Code sense или Как писать код быстрее •  Services или Как форматировать код •  Warnings или Как править код нагляднее •  Targets или Как собирать приложение •  Workspace или Как управлять библиотеками •  Quick Help или Как использовать подсказки

План выступления

1

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

Написать код локально Собрать готовое приложение

Обязанности одного программиста Автоматизация в процессе разработки

2

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

Написать код локально

Собрать готовое приложение Поделиться кодом

Автоматизация в процессе разработки Обязанности группы программистов

3

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

Написать код локально

Собрать готовое приложение

Проверить сборку приложения локально Поделиться кодом

Реальный процесс разработки Автоматизация в процессе разработки

4

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

Написать код локально

Собрать готовое приложение

Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Поделиться кодом

Реальный процесс разработки Автоматизация в процессе разработки

5

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

Написать код локально

Собрать готовое приложение

Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Поделиться кодом

Реальный процесс разработки Автоматизация в процессе разработки

6

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

Написать код локально

Собрать готовое приложение

Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Проверить стиль кода Поделиться кодом

Реальный процесс разработки Автоматизация в процессе разработки

7

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

Написать код локально

Собрать готовое приложение

Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Проверить стиль кода Пройти код ревью Поделиться кодом

Реальный процесс разработки Автоматизация в процессе разработки

8

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

Apache

Общие системы автоматизации

Trac

BugZilla

Jira

Maven

Ant Jankings

Hudson

TeamCity svn

Git

Perforce

Автоматизация в процессе разработки

Gerrit

9

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

+/- Общие системы автоматизации Автоматизация в процессе разработки

Преимущества: •  Автоматизация – это хорошо Недостатки: •  Нет универсального решения •  Команда поддержки •  Быстрое развитие IT и смена технологий •  Собственная инфраструктура заказчика

10

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

Code sense или Как писать код быстрее Code Sense и Code Completion

11

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

Code sense или Как писать код быстрее Code Sense и Code Completion

12

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

Code sense или Как писать код быстрее User Code Snippets

инициализация объекта

объявление расширения

инициализация свойства

13

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

Code sense или Как писать код быстрее Custom Code Snippets

инициализация объекта

объявление расширения

инициализация свойства

14

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

Code sense или Как писать код быстрее Custom Code Snippets

ls ~/Library/Developer/XCode/UserData/CodeSnippets/

Содержимое сниппета pragma mark (XML файл)

15

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

Code sense или Как писать код быстрее +/- Code Sense

Преимущества: •  Легко создавать, использовать, распространять •  Формат кода сниппетов одинаков у всех разработчиков

Недостатки: •  Вчера Text Macros, сегодня Code Snippet, а завтра? •  Трудно использовать много сниппетов •  Разработчик имеет свои предпочтения и свой набор сниппетов

16

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

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»

Services или Как форматировать код Services & uncrustify

https://github.com/tonyarnold/Xcode-4-Uncrustify-Automator-Services 18

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

Services или Как форматировать код +/- Services & uncrustify

Преимущества: •  Доступны в любых редакторах (AppCode, Emacs) •  Очень легко использовать •  Можно запускать по собственному усмотрению Недостатки: •  Надо знать Automator, AppleScript •  Очень трудно настроить правила форматирования

(167 правил) и адаптировать их под заказчика •  Полностью переписывает содержимое файла •  Программист не учится форматированию кода •  Надо вызывать команду вручную

19

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

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»

Services или Как форматировать код Xcode & git

21

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

Services или Как форматировать код +/- pre-commit контроля

Преимущества: •  Обучает писать красивый код •  Полная интеграция Xcode c git •  Обязательное следование стилю •  Работает на всех системах контроля версий •  Легко расширить новыми правилами, например длина метода < 50 или длина файла < 1000

Недостатки: •  Необходимо разработать свою систему проверки кода •  Разные способы интеграции для git, perforce, svn •  Приходится вручную исправлять неверный код

22

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

Warnings или Как править код нагляднее Xcode warnings

23

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

Warnings или Как править код нагляднее Code style warnings

24

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

Warnings или Как править код нагляднее Code style build

25

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

Warnings или Как править код нагляднее +/- code style warnings

Преимущества: •  Простая интеграция в билд процесс •  Наглядность и точность замечаний по сравнению с консольным выводом

Недостатки: •  Проверка внешних библиотек (игнор лист .epmlint) •  Дополнительный этап сборки проекта •  Продолжительный анализ всех файлов (modified only)

26

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

Warnings или Как править код нагляднее CPD & copy-past warnings

http://pmd.sourceforge.net/cpd.html 27

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

Warnings или Как править код нагляднее CPD проблемы

http://pmd.sourceforge.net/cpd.html 28

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

Warnings или Как править код нагляднее CPD build

http://pmd.sourceforge.net/cpd.html 29

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

Warnings или Как править код нагляднее +/- CPD warnings

Преимущества: •  Наглядность замечаний •  Устранение копи-паста (да, CPD работает :-) •  Относительно легкая интеграция в билд процесс Недостатки: •  Проверка внешних библиотек (группировка по папкам)

•  Тяжело обучить - не все замечания верны / могут быть найдены (флаг minimum-tokens)

•  Дополнительный этап сборки проекта

30

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

Targets или Как собирать приложение Проблемы сборок

•  Как к таргету добавить редко исполняемый шаг? •  Как проверить сборку приложения и убедиться, что изменения в коде одной сборки не сломали другие?

•  Как автоматически менять номер сборки приложения?

31

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

Targets или Как собирать приложение Aggregate target

32

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

Targets или Как собирать приложение Верификация сборок

33

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

Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок

34

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

Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок

35

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

Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок

36

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

Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок

37

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

Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок

38

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

Targets или Как собирать приложение +/- сборок

Преимущества: •  Все настройки задаются через UI •  Cобирать можно как c UI, так и с консоли (xcodebuild) •  Легко проверить кросс-влияние сборок •  Легко автоматизировать изменение настроек приложения

Недостатки: •  Сложно настраивать взаимодействие сборок •  Сложно “размножать” однотипные этапы сборок между проектами (project.pbxproj, workspace)

39

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

Workspace или Как управлять библиотеками Workspace или разделение проектов

40

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

Workspace или Как управлять библиотеками CocoaPods

$ pod install

41

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

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»

Workspace или Как управлять библиотеками +/- CocoaPods

Преимущества: •  Отделение внешних библиотек от кода •  Авто настройка workspace и проекта •  Простое управление библиотеками •  Авто генерация документации с appledoc Недостатки: •  Не все библиотеки имеют podspec спецификации •  Не всегда легко подружить с Xcode

43

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

Quick Help или Как использовать подсказки Documentation & appledoc

44

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

Quick Help или Как использовать подсказки Quick Help & appledoc

45

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

Преимущества: •  Отличная интеграция с Xcode •  Поддержка синтаксиса Doxygen •  Быстрый доступ к документации Недостатки: •  Надо генерировать на локальной машине •  Надо самому писать документацию

Quick Help или Как использовать подсказки +/- appledoc

46

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

Автоматизация в Xсode. Практический аспект

EPAM Systems, Mobile Solutions

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

y.vasileuski yvasileuski y.vasileuski

[email protected]

Юрий Василевский ведущий разработчик