Blast radius analysis
Description
Find all callers of a function across projects. Find callers of a function across projects
Given a function name and project, finds all internal callers within that project and all callers in downstream projects (projects whose DESCRIPTION lists this one in Depends, Imports, or LinkingTo).
Usage
blast_radius(fn, project = NULL, scan_dir = path.expand("~"),
cache_dir = file.path(tools::R_user_dir("saber", "cache"), "symbols"),
exclude = default_exclude())
Arguments
fn: Character. Function name to search for.project: Character. Project name (or path to project directory).scan_dir: Directory to scan for downstream projects.cache_dir: Directory for symbol cache files.exclude: Character vector of directory basenames to skip when scanning for downstream projects.
Value
A data.frame with columns: caller, project, file, line.
Examples
# Create a minimal project
d <- file.path(tempdir(), "blastpkg")
dir.create(file.path(d, "R"), recursive = TRUE, showWarnings = FALSE)
writeLines("helper <- function(x) x + 1", file.path(d, "R", "helper.R"))
writeLines("main <- function(x) helper(x * 2)", file.path(d, "R", "main.R"))
# Find all callers of helper()
blast_radius("helper", project = d, scan_dir = tempdir(),
cache_dir = tempdir())