SlideShare a Scribd company logo
1 of 14
Download to read offline
Документирование функций
вашего пакета
Разработка документации с помощью roxygen2
Алексей Селезнёв
Мой telegram канал
Какие компонентыпакета отвечают за документацию
• Над функциями и другими объектами, которые вам надо задокументировать вы
прописываете специальные roxygen комментарии
• После генерации все файлы документации хранятся в каталоге man/.
Рабочий процесс
1. Добавляете roxygen2 комментарии над объектами, к которым хотите сгенерировать
документацию (Ctrl+Shift+Alt+R когда курсор находится внутри кода функции или кода
генерирующего объект)
2. Запускаете devtools::document() (Ctrl/Cmd + Shift + D), чтобы преобразовать комментарии
roxygen2 в .Rd файлы.
3. Запускаете предварительный просмотрт сгенерированной документации с помощью
?function_name.
4. Исправляете ошибки, повторяете процесс до тех пор, пока не получите нужный
результат.
Структура roxygen комментариев
• Комментарии roxygen2 начинаются с #’
• Все комментарии roxygen2, предшествующие функции называются блоком
• Блоки разбиваются на теги , которые выглядят как @tagName tagValue
• По умолчанию каждый блок генерирует один топик документации , т.е. один .Rd файл в
man/ каталоге.
Особенности разметки
• Используйте апострофы для выделения блока текста как кода: #' I like `thisfunction()`,
because it's great.
• Для добавление ссылки на документацию к другой функции вашего или стороннего пакета
используйте квадратные скобки:
#' It's obvious that `thisfunction()` is better than [otherpkg::otherfunction()]
#' or even our own [olderfunction()].
• Ссылайтесь на виньетки с помощью кода: vignette("rd-formatting", package = "roxygen2")
• Маркированные списки прописываются так же, как и в обычном markdown:
#' Best features of `thisfunction()`:
#' * Smells nice
#' * Has good vibes
Разделыдокументации
• Заголовок (@title) – Обычно задаётся позиционно в первой строке roxygen комментария
• Описание (@description) – Более подробное описание, что делает ваша функция, можно
задать позиционно, второй строкой roxygen комментария
• Детали (@details) – Тут описывают важные детали использования вашей функций, можно
задать позиционно третей строкой комментария
• Аргументы функции (@param) – Описание каждого аргумента функции
• Возвращаемое значение (@return) – Какой объект возвращает ваша функция
• Примеры (@examples) – Примеры использования вашей функции
Title, description и details
• Первые 3 тега roxygen можно использовать позиционно, без указания их названий:
• Title – заголовок должен быть написан в регистре заголовков, не заканчиваться точкой и после него
должна идти пустая строка.
• Description – более подробное описание того, что делает функция, как правило занимает один абзац.
Если ваше описание требует более чем один абзац вам придётся явно использовать тег @description.
• Details – описание деталей работы вашей функции, в осном этот блок не используется в
документации. Хорошей практикой является создание пользовательских разделов подробностей с
помощью тега @section.
Аргументы
• Для документирования аргументов функции используйте тег @param
• Если использование нескольких аргументов тесно связано между собой можете
объединить их через запятую, без указания пробела: #' @param x,y A pair of character
vectors.
• Тег @inheritParams позволяет наследовать описание аргументов из других функций вашего
или даже стороннего пакета. При этом будут унаследованы только те аргументы, которые
присутвуют в новой функции, и которые в ней отдельно не были задокументированы.
Возвращаемое значение
• За возвращаемое значение отвечает тег @returns
• Для возвращаемого значения вам необходимо описать класс, тип и размер возвращаемого
функцией значения.
Примеры
• Примеры описываются с использованием тега @examples
• Все прописанные примеры должны выполняться без ошибок, поскольку они регулярно
проверяются:
• В интерактивном режиме с помощью команды example()
• Во время работы R CMD check на вашем компьютере
• Во время проверки R CMD check на CRAN.
• Когда генерируется веб-сайт вашего пакета с помощью pkgdown
• При использовании нестабильных ресурсов в ваших примерах, например веб-сайтах
используйте тег @examplesIf, который позволяет пропускать такие примеры, так же можно
завернуть ваши примеры в dontrun{}, для избегания запуска примеров, которые заведомо
заканчиваются ошибками.
Повторное использование документации
• При необходимости объединить документацию нескольких функций в один файл
документации используйте тег @rdname, и передайте в него название функции, в которой
подробно описана документация всех функций.
• Теги отвечающие за наследование частей документации:
• @inherit source_function - унаследует все поддерживаемые компоненты от source_function().
• @inheritSection source_function Section title - унаследует один раздел с заголовком «Section title» от
source_function().
• @inheritDotParams - автоматически генерирует документацию по параметрам для ... общего случая,
когда вы переходите ... к другой функции.
Раздел справки по пакету
• Используйте функцию usethis::use_package_doc() для генерации файла R/{pkgname}-
package.R, который содердит документацию уровня пакета.
• Так же это хорошее место для хранения импорта, т.е. тегов @import и @importFrom.
СПАСИБО ЗА ВНИМАНИЕ

More Related Content

Similar to function_docs.pdf

C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.Igor Shkulipa
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
презентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работампрезентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работамstudent_kai
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, WambaOntico
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Fedor Malyshkin
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
C++ теория
C++ теорияC++ теория
C++ теорияtank1975
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.Igor Shkulipa
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3Technopark
 
Система документации phpDocumentor
Система документации phpDocumentorСистема документации phpDocumentor
Система документации phpDocumentorroadhump
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
 
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...MoscowJS
 

Similar to function_docs.pdf (20)

XML
XMLXML
XML
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
презентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работампрезентация кметодическим указаниям к лаб. работам
презентация кметодическим указаниям к лаб. работам
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
create_package_1.pdf
create_package_1.pdfcreate_package_1.pdf
create_package_1.pdf
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
10.release_on_cran.pdf
10.release_on_cran.pdf10.release_on_cran.pdf
10.release_on_cran.pdf
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
DESCRIPTION.pdf
DESCRIPTION.pdfDESCRIPTION.pdf
DESCRIPTION.pdf
 
C++ осень 2013 лекция 3
C++ осень 2013 лекция 3C++ осень 2013 лекция 3
C++ осень 2013 лекция 3
 
Система документации phpDocumentor
Система документации phpDocumentorСистема документации phpDocumentor
Система документации phpDocumentor
 
Ruby on Rails. Работа с моделями
Ruby on Rails. Работа  с моделямиRuby on Rails. Работа  с моделями
Ruby on Rails. Работа с моделями
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
 
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайnoBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
 
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
«Пуленепробиваемый фронтенд: разработка под React на TypeScript», Станислав П...
 

More from Алексей Селезнёв

Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...Алексей Селезнёв
 
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...Алексей Селезнёв
 
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...Алексей Селезнёв
 
Учим язык R на примере SQL запросов (Product Star Conference)
Учим язык R на примере SQL запросов (Product Star Conference)Учим язык R на примере SQL запросов (Product Star Conference)
Учим язык R на примере SQL запросов (Product Star Conference)Алексей Селезнёв
 
Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...
Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...
Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...Алексей Селезнёв
 

More from Алексей Селезнёв (20)

Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
Воркшоп: Анализ показателя качества ключевых слов в Google Ads API с помощью ...
 
14. мета пакет.pdf
14. мета пакет.pdf14. мета пакет.pdf
14. мета пакет.pdf
 
gargle.pdf
gargle.pdfgargle.pdf
gargle.pdf
 
12.wrapping-apis.pdf
12.wrapping-apis.pdf12.wrapping-apis.pdf
12.wrapping-apis.pdf
 
10.website.pdf
10.website.pdf10.website.pdf
10.website.pdf
 
9-vignetts.pdf
9-vignetts.pdf9-vignetts.pdf
9-vignetts.pdf
 
07-testing.pdf
07-testing.pdf07-testing.pdf
07-testing.pdf
 
Add data to r package
Add data to r packageAdd data to r package
Add data to r package
 
3-r-code.pdf
3-r-code.pdf3-r-code.pdf
3-r-code.pdf
 
integration_between_rstudio_and_github.pdf
integration_between_rstudio_and_github.pdfintegration_between_rstudio_and_github.pdf
integration_between_rstudio_and_github.pdf
 
Бекенды dplyr
Бекенды dplyrБекенды dplyr
Бекенды dplyr
 
Пакет future
Пакет futureПакет future
Пакет future
 
Многопоточность в R
Многопоточность в RМногопоточность в R
Многопоточность в R
 
Пакет purrr
Пакет purrrПакет purrr
Пакет purrr
 
Функции семейства apply
Функции семейства applyФункции семейства apply
Функции семейства apply
 
Циклы в R
Циклы в RЦиклы в R
Циклы в R
 
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
Зачем интернет маркетологу понимать что такое API. Разбираем устройство API G...
 
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
Как работать с API Google Analytics на языке R с помощью пакета googleAnalyti...
 
Учим язык R на примере SQL запросов (Product Star Conference)
Учим язык R на примере SQL запросов (Product Star Conference)Учим язык R на примере SQL запросов (Product Star Conference)
Учим язык R на примере SQL запросов (Product Star Conference)
 
Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...
Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...
Алексей Селезнёв - Как держать руку на пульсе с помощью информационных дайдже...
 

function_docs.pdf

  • 1. Документирование функций вашего пакета Разработка документации с помощью roxygen2 Алексей Селезнёв
  • 3. Какие компонентыпакета отвечают за документацию • Над функциями и другими объектами, которые вам надо задокументировать вы прописываете специальные roxygen комментарии • После генерации все файлы документации хранятся в каталоге man/.
  • 4. Рабочий процесс 1. Добавляете roxygen2 комментарии над объектами, к которым хотите сгенерировать документацию (Ctrl+Shift+Alt+R когда курсор находится внутри кода функции или кода генерирующего объект) 2. Запускаете devtools::document() (Ctrl/Cmd + Shift + D), чтобы преобразовать комментарии roxygen2 в .Rd файлы. 3. Запускаете предварительный просмотрт сгенерированной документации с помощью ?function_name. 4. Исправляете ошибки, повторяете процесс до тех пор, пока не получите нужный результат.
  • 5. Структура roxygen комментариев • Комментарии roxygen2 начинаются с #’ • Все комментарии roxygen2, предшествующие функции называются блоком • Блоки разбиваются на теги , которые выглядят как @tagName tagValue • По умолчанию каждый блок генерирует один топик документации , т.е. один .Rd файл в man/ каталоге.
  • 6. Особенности разметки • Используйте апострофы для выделения блока текста как кода: #' I like `thisfunction()`, because it's great. • Для добавление ссылки на документацию к другой функции вашего или стороннего пакета используйте квадратные скобки: #' It's obvious that `thisfunction()` is better than [otherpkg::otherfunction()] #' or even our own [olderfunction()]. • Ссылайтесь на виньетки с помощью кода: vignette("rd-formatting", package = "roxygen2") • Маркированные списки прописываются так же, как и в обычном markdown: #' Best features of `thisfunction()`: #' * Smells nice #' * Has good vibes
  • 7. Разделыдокументации • Заголовок (@title) – Обычно задаётся позиционно в первой строке roxygen комментария • Описание (@description) – Более подробное описание, что делает ваша функция, можно задать позиционно, второй строкой roxygen комментария • Детали (@details) – Тут описывают важные детали использования вашей функций, можно задать позиционно третей строкой комментария • Аргументы функции (@param) – Описание каждого аргумента функции • Возвращаемое значение (@return) – Какой объект возвращает ваша функция • Примеры (@examples) – Примеры использования вашей функции
  • 8. Title, description и details • Первые 3 тега roxygen можно использовать позиционно, без указания их названий: • Title – заголовок должен быть написан в регистре заголовков, не заканчиваться точкой и после него должна идти пустая строка. • Description – более подробное описание того, что делает функция, как правило занимает один абзац. Если ваше описание требует более чем один абзац вам придётся явно использовать тег @description. • Details – описание деталей работы вашей функции, в осном этот блок не используется в документации. Хорошей практикой является создание пользовательских разделов подробностей с помощью тега @section.
  • 9. Аргументы • Для документирования аргументов функции используйте тег @param • Если использование нескольких аргументов тесно связано между собой можете объединить их через запятую, без указания пробела: #' @param x,y A pair of character vectors. • Тег @inheritParams позволяет наследовать описание аргументов из других функций вашего или даже стороннего пакета. При этом будут унаследованы только те аргументы, которые присутвуют в новой функции, и которые в ней отдельно не были задокументированы.
  • 10. Возвращаемое значение • За возвращаемое значение отвечает тег @returns • Для возвращаемого значения вам необходимо описать класс, тип и размер возвращаемого функцией значения.
  • 11. Примеры • Примеры описываются с использованием тега @examples • Все прописанные примеры должны выполняться без ошибок, поскольку они регулярно проверяются: • В интерактивном режиме с помощью команды example() • Во время работы R CMD check на вашем компьютере • Во время проверки R CMD check на CRAN. • Когда генерируется веб-сайт вашего пакета с помощью pkgdown • При использовании нестабильных ресурсов в ваших примерах, например веб-сайтах используйте тег @examplesIf, который позволяет пропускать такие примеры, так же можно завернуть ваши примеры в dontrun{}, для избегания запуска примеров, которые заведомо заканчиваются ошибками.
  • 12. Повторное использование документации • При необходимости объединить документацию нескольких функций в один файл документации используйте тег @rdname, и передайте в него название функции, в которой подробно описана документация всех функций. • Теги отвечающие за наследование частей документации: • @inherit source_function - унаследует все поддерживаемые компоненты от source_function(). • @inheritSection source_function Section title - унаследует один раздел с заголовком «Section title» от source_function(). • @inheritDotParams - автоматически генерирует документацию по параметрам для ... общего случая, когда вы переходите ... к другой функции.
  • 13. Раздел справки по пакету • Используйте функцию usethis::use_package_doc() для генерации файла R/{pkgname}- package.R, который содердит документацию уровня пакета. • Так же это хорошее место для хранения импорта, т.е. тегов @import и @importFrom.