Есть ли способ проверить каждую функцию в пакете R на соответствие только импортам в своем собственном блоке комментариев roxygen2? - PullRequest
0 голосов
/ 26 апреля 2018

Я делаю пакет R и использую roxygen2 для автоматической генерации моего файла NAMESPACE, что означает, что я объявляю свой импорт в комментариях roxygen2 над каждой функцией в моем пакете, что-то вроде этого:

#' @importFrom somePackage someFunc someOtherFunc
f1 <- function() {
    someFunc()
    someOtherFunc()
}

#' @importFrom somePackage aThirdFunc
f2 <- function() {
    someFunc()
    aThirdFunc()
}

Однако, несмотря на то, что они помещаются рядом с объявлениями отдельных функций, объявления @importFrom являются глобальными для всего пространства имен пакета.Это означает, что импорт someFunc выше f1 в моем примере также работает для f2, хотя я забыл включить someFunc в импорт для f2.Это означает, что легко позволить этим объявлениям не синхронизироваться со связанными функциями, что в результате приведет к неожиданному поведению в дальнейшем.Например, если я решу удалить f1 из своего пакета в будущем или переопределить его, чтобы он больше не использовал somePackage, и я удалил соответствующий оператор импорта, f2 внезапно будет прерван.

Итак, чтобы избежать этого, можно ли как-нибудь проверить каждую функцию только по ее собственным объявлениям импорта, чтобы убедиться, что они всегда синхронизированы и не зависят неявно от импорта, объявленного для других функций?Или я должен просто полностью отказаться от этого и вернуться к ручному ведению файла NAMESPACE?

...