Я рефакторинг пакета, который импортирует полные пространства имен многих других пакетов. Я считаю, что многие из этих зависимостей используются для вызовов отдельных функций, которые лучше обрабатывать с помощью importFrom, или являются потерянными зависимостями, которые больше не используются.
В пакете достаточно кода, поэтому было бы утомительно вручную проверять каждую строку в поисках незнакомых вызовов функций.
Как определить, где и сколько раз объекты из импортированных пространств имен используются в пакете? Обратите внимание, что этот пакет не включает модульные тесты.
Вот воспроизводимый пример:
DESCRIPTION
файл:
Package: my_package
Title: title
Version: 0.0.1
Authors@R: person(
given = "A",
family = "Person",
role = c("aut", "cre"),
email = "[email protected]"
)
Description: Something
License: Some license
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.1.1
Imports:
dplyr,
purrr,
stringr
NAMESPACE
файл:
import(dplyr)
import(purrr)
import(stringr)
my_package.R
файл:
#' my_package
#' @docType package
#' @name my_package
NULL
#' @import dplyr
#' @import purrr
#' @import stringr
NULL
functions.R
файл
#' add 1 to "banana" column and call it "apple"
#' @description demonstrate a variety of dplyr functions
#' @param x a data.frame object
#' @return a data.frame object with columns "apple" and "banana"
#' @examples
#' my_fruit <- data.frame(banana = c(1,2,3), pear = c(4,5,6))
#' my_function(my_fruit)
#' @export
my_function <- function(x) {
x %>%
mutate(apple = banana + 1) %>%
select(apple, banana)
}
Я ищу решение, которое идентифицирует, что %>%
, mutate
и select
являются экспортом из dplyr
, %>%
является экспортом из purrr
, и нет используемых экспортов из прикрепленного пространства имен stringr
. В случае таких функций, как %>%
, экспортируемых из нескольких пространств имен, для меня не так важно различать, из какого пространства имен происходит экспорт (в примере оба %>%
являются реэкспортами из зависимости magrittr
), поскольку там, где происходит фактическое маскирование, генерируется предупреждение, когда пакет загружается.
awk/perl/sed
для просмотра каждого файла и проверки вызовов определенных функций из других пакетов. - person Onyambu   schedule 11.05.2021