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

Post on 04-Jun-2015

5.915 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

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

EPAM Systems, Mobile Solutions

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

y.vasileuski yvasileuski y.vasileuski

yury_vasileuski@epam.com

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

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

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

1

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

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

2

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

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

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

3

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

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

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

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

4

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

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

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

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

5

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

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

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

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

6

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

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

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

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

7

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

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

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

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

8

Apache

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

Trac

BugZilla

Jira

Maven

Ant Jankings

Hudson

TeamCity svn

Git

Perforce

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

Gerrit

9

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

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

10

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

11

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

12

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

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

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

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

13

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

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

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

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

14

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

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

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

15

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

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

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

16

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

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

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

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

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

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

19

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

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

21

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

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

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

22

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

23

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

24

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

25

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

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

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

26

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

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

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

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

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

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

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

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

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

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

30

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

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

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

31

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

32

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обирать можно как c UI, так и с консоли (xcodebuild) •  Легко проверить кросс-влияние сборок •  Легко автоматизировать изменение настроек приложения

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

39

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

40

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

$ pod install

41

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

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

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

43

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

44

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

45

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

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

46

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

EPAM Systems, Mobile Solutions

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

y.vasileuski yvasileuski y.vasileuski

yury_vasileuski@epam.com

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

top related