Exported functions
Count of public functions declared by NAMESPACE export() directives, or R/ top-level definitions matching an exportPattern when only patterns are used.
n_exports in cran_code_summary
Plain-language definitions for every measure the observatory reports, from per-version code metrics to repository, download, coverage, and check signals, each with the direction that reads as healthier.
Measured every release and diffed on the version-compare page.
Count of public functions declared by NAMESPACE export() directives, or R/ top-level definitions matching an exportPattern when only patterns are used.
n_exports in cran_code_summary
Number of top-level function definitions in R/ files that are not exported, i.e. helpers kept private to the package.
n_internal in cran_code_summary
Total lines across code files in R/, src/, tests/, man/, and vignettes/, with images and other binary files excluded.
loc_total in cran_code_summary
Raw line count of source files under the R/ directory, counting blank and comment lines too.
loc_r in cran_code_summary
Raw line count of compiled C, C++, and Fortran source and header files under the src/ directory.
loc_src in cran_code_summary
Raw line count of every file under the tests/ directory, excluding binary and other non-code files.
loc_tests in cran_code_summary
Number of R function definitions the static analyzer detected across the package's R/ source, counted one per definition.
n_fns_r in cran_code_summary
Number of C++ functions the analyzer detected in the package's compiled sources under src/, one count per function.
n_fns_cpp in cran_code_summary
Number of C functions the analyzer detected in the package's compiled sources under src/, one count per function.
n_fns_c in cran_code_summary
Number of Fortran subroutines and functions the analyzer detected in the package's compiled sources under src/.
n_fns_fortran in cran_code_summary
Number of Rust functions the analyzer detected in the package's compiled sources under src/ (e.g. extendr/cargo crates).
n_fns_rust in cran_code_summary
Share (0 to 1) of all counted lines of code (R, src, tests, docs, vignettes) living in compiled src/ files.
compiled_share in cran_code_summary
Total lines of source across all non-binary files in the package's man/ directory, i.e. its Rd help pages.
loc_docs in cran_code_summary
Share of the package's exported symbols that appear as a name or alias in at least one Rd help file.
roxygen_doc_coverage in cran_code_summary
Share of all Rd help pages that include a references section citing related literature or external sources.
references_coverage in cran_code_summary
Share of Rd help pages carrying an examples section that shows how to call the documented functions.
examples_coverage in cran_code_summary
Number of Rd help pages that contain at least one examples section, counted rather than expressed as a rate.
help_pages_with_examples in cran_code_summary
Average share of a function's usage arguments lacking a matching entry in its Rd arguments section, over exported functions.
undocumented_params_rate in cran_code_summary
Share of exported-function help pages that document their return value with a value section.
value_doc_rate in cran_code_summary
One when the package ships a pkgdown config file at _pkgdown.yml or pkgdown/_pkgdown.yml for a docs website, else zero.
has_pkgdown in cran_code_summary
One when a README.md or README.Rmd file is present at the package root, otherwise zero.
has_readme in cran_code_summary
One when the vignettes/ directory holds at least one .Rmd or .Rnw long-form tutorial source, otherwise zero.
has_vignettes in cran_code_summary
One when a NEWS or NEWS.md changelog recording changes across releases is present, otherwise zero.
news_present in cran_code_summary
Approximate number of individual test blocks (such as test_that() calls) defined across the files in the package's tests/ directory.
n_test_cases in cran_code_summary
Total lines of code in the tests/ directory divided by the lines of code in R/, left blank when R/ has no lines.
test_to_code_ratio in cran_code_summary
Count of expect_snapshot() and expect_snapshot_file() calls in test R files, plus the number of stored snapshot files under tests/testthat/_snaps/.
snapshot_test_count in cran_code_summary
Flag set to one when any file at all exists under the package's tests/ directory, and zero otherwise.
has_tests in cran_code_summary
The Config/testthat/edition value declared in DESCRIPTION (typically 2 or 3), reported as an integer, and left blank when the field is absent.
testthat_edition in cran_code_summary
Share of NAMESPACE-exported functions whose name appears as a literal word token somewhere in the tests/ files, and left blank when nothing is exported.
exported_fn_test_linkage in cran_code_summary
Among test files that call RNG functions like sample/runif/rnorm/rbinom, the fraction that also call set.seed(), and left blank when none use randomness.
stochastic_seed_discipline in cran_code_summary
Average cyclomatic complexity of the package's R functions, where each function scores one plus its number of branching decision points.
cyclocomp_mean in cran_code_summary
Highest cyclomatic complexity among the package's R functions, flagging its single most branch-heavy and hardest-to-test routine.
cyclocomp_max in cran_code_summary
Median cyclomatic complexity across the package's R functions, the typical function's branch count, resistant to a few very complex outliers.
cyclocomp_median in cran_code_summary
Average length in lines of a function's body across the package, a rough gauge of how large typical functions are.
loc_per_fn_mean in cran_code_summary
Number of R functions defined in the package, each treated as one node in its syntactic call graph.
net_n_nodes in cran_code_summary
Count of distinct directed caller-to-callee links where one package function calls another package function, excluding self-calls and duplicates.
net_n_edges in cran_code_summary
Highest number of call connections (functions it calls plus functions that call it) attached to any single function.
net_node_degree_max in cran_code_summary
Average call connections per function across all nodes, counting both calls made and calls received, including unconnected functions.
net_node_degree_mean in cran_code_summary
Count of package functions that neither call nor are called by any other package function (degree zero).
net_n_isolated in cran_code_summary
Number of connected components formed by functions linked through calls, where functions with no call edges are not counted.
net_n_clusters in cran_code_summary
Total number of .Call, .C, .Fortran, and .External invocations in R code that reach into compiled C/C++/Fortran routines.
n_native_call_sites in cran_code_summary
Number of S3 methods the package registers, counted from the S3method(generic, class) directives declared in its NAMESPACE file.
n_s3_methods in cran_code_summary
Count of formal S4 class definitions in the package's R source, identified by setClass() calls from the methods system.
n_s4_classes in cran_code_summary
Count of S4 generic functions the package declares in its R code, identified by setGeneric() calls.
n_s4_generics in cran_code_summary
Count of S4 methods the package defines for generics on specific classes, identified by setMethod() calls in R source.
n_s4_methods in cran_code_summary
Count of R6 class definitions in the package's R source, found by calls to the R6Class constructor from the R6 package.
n_r6_classes in cran_code_summary
Count of classes built with the newer S7 object system, identified by new_class() calls in the package's R source.
n_s7_classes in cran_code_summary
Count of Reference Classes (R5) defined in the package's R source, identified by setRefClass() calls from the methods system.
n_rc_classes in cran_code_summary
Number of packages the DESCRIPTION lists under Imports plus Depends, with version constraints stripped off and base R itself excluded.
n_deps_direct in cran_code_summary
Cross-version measure, derived from the ordered release series, of how much the direct dependency set shifts as packages are added or dropped between releases.
dependency_drift in cran_code_summary
A weighted tally of risky constructs in R/ code such as eval(parse()), system(paste()), non-literal Sys.setenv, and network calls inside load hooks.
unsafe_pattern_score in cran_code_summary
Number of likely credential leaks across non-binary text files such as AWS keys, GitHub tokens, and api-key/secret/password assignments to long literal strings.
secret_pattern_count in cran_code_summary
Per 1000 lines of R code, count of global-state writes such as <<-, assign() to the global environment, options() setters, and Sys.setenv().
global_state_write_density in cran_code_summary
Per 1000 lines of R code, how often dated idioms appear, such as bare T and F, risky 1-to-n index ranges, in-function require() or library() calls, and .Internal() calls.
deprecated_idiom_density in cran_code_summary
How often R/ code reaches into another package's private, unexported internals.
triple_colon_count in cran_code_summary
Detected from the CRAN source tarball only. CI config files are often excluded through .Rbuildignore and stripped from the tarball, so a package that runs CI only from its source repository reads as no here. A positive value is reliable, but a zero means no CI config shipped in the tarball rather than no CI at all.
Whether the package ships any recognized continuous-integration config file such as a GitHub Actions workflow, Travis, AppVeyor, or CircleCI.
ci_present in cran_code_summary
Largest number of distinct operating-system and R-version build combinations declared in any single GitHub Actions workflow matrix, or zero when there are none.
ci_matrix_breadth in cran_code_summary
Number of distinct external OS-level dependencies listed in the DESCRIPTION SystemRequirements field, split on commas and "and" (case-insensitive).
system_requirements_count in cran_code_summary
1 when every token in the License field matches a known R-canonical or SPDX identifier from a fixed allowlist.
spdx_valid in cran_code_summary
1 when every license token is OSI-approved, excluding CC0, CC-BY, Unlimited, and bare file-reference licenses that cannot be verified.
osi_approved in cran_code_summary
When the license cites a LICENSE file, 1 if that file exists, is non-empty, and any MIT/BSD template placeholders are filled in.
license_file_completeness in cran_code_summary
Version-to-version differences the compare page shows that are not single numbers.
Exported symbols (functions, classes, methods) added to or removed from NAMESPACE between two versions.
Packages required under Imports, Depends, Suggests, LinkingTo, and Enhances, compared per type where the pipeline records them per version.
Bundled data objects, matched by name across versions, where a content-fingerprint change means the stored data itself changed.
Per-file lines added and removed between two versions, summed across the releases in between, like a git diff stat.
Current snapshots shown on the package and author pages.
A current snapshot of the package's source repository and its community, from the VCS-signals pipeline. Shown on package pages when repository data is available.
Which code-hosting site the package's source lives on, such as GitHub or GitLab, read from the repository id.
repo_id in vcs_signals_summary
Whether the source repository has been marked archived, meaning it is no longer actively developed.
is_archived in vcs_signals_summary
How many people have starred the repository, a rough popularity signal rather than a measure of quality.
stars in vcs_signals_summary
How many people have made their own copy of the repository to build on or contribute back.
forks in vcs_signals_summary
The number of bug reports or feature requests currently open and unresolved in the repository.
issues_open in vcs_signals_summary
The number of proposed code changes currently awaiting review or merging in the repository.
prs_open in vcs_signals_summary
How many tagged releases the maintainers have published over the life of the project.
releases_total in vcs_signals_summary
The total number of individual changes recorded in the project's development history, reflecting activity and age rather than quality.
commits_total in vcs_signals_summary
How many different people have contributed code to the project.
contributors_total in vcs_signals_summary
The subject-area tags the maintainers attached to the repository to describe what it does.
topics in vcs_signals_summary
The usage license declared on the source repository, telling you how the code may be used.
license in vcs_signals_summary
The date of the most recent change to the code, a sign of how recently the project has been maintained.
last_commit_date in vcs_signals_summary
The change in the repository's star count over the past 30 days, showing whether interest is rising or falling.
trend_30d in vcs_signals_summary
Presence-only signals of AI-assisted development tooling. Beta, and shown only when markers are detected, and an absent signal never means none were used.
Whether the repository shows any visible sign that AI coding assistants were used, such as declared config files or tool markers, and when absent it means no marker was found rather than that no AI was used.
ai_markers_detected in vcs_ai_signals
The name of the first AI coding assistant that left a detectable trace in the repository.
ai_first_tool in vcs_ai_signals
The date when the first sign of AI-assisted tooling appeared in the repository.
ai_first_date in vcs_ai_signals
The list of AI coding assistants detected in the repository, shown as one chip per tool.
ai_tools in vcs_ai_signals
The name of the most recently spotted AI coding assistant in the repository.
ai_latest_tool in vcs_ai_signals
The date of the most recent sign of AI-assisted tooling in the repository.
ai_latest_date in vcs_ai_signals
For each detected AI assistant, the specific tool named in the per-tool evidence list.
tool in vcs_ai_signals
When a specific AI tool was first detected, shown as an exact date or as an 'on or before' cutoff when the true start is uncertain.
first_seen_date in vcs_ai_signals
Which kinds of clues (detection categories) triggered the AI-tool finding for that tool.
evidence_tiers in vcs_ai_signals
Whether an automated bot appears as the only author behind some of the repository's changes for that tool.
authored in vcs_ai_signals
Current download and install counts across the mirrors the site tracks. These measure popularity and reach, not quality.
How many times the package was downloaded from a given mirror over the past month.
download summaries
How many times the package was downloaded over the past three months.
download summaries
How many times the package was downloaded over the past twelve months, the headline download figure.
download summaries
Roughly how many downloads the package gets on an average day, derived from its yearly total.
download summaries
How many distinct computers downloaded a Bioconductor package in the most recent month.
download summaries
How many downloads a single mirror contributed for the package over the past month.
download summaries
What fraction of the package's tracked downloads comes from one particular mirror.
download summaries
Where the package sits on the most-downloaded list, where number 1 is the most downloaded, a popularity position rather than a quality score.
download summaries
Whether the package's downloads are rising or falling recently, shown as a signed percentage change.
download summaries
The total number of RPM files ever downloaded from the Fedora COPR CRAN build, counted per Fedora version.
download summaries
How many RPM files were downloaded from the Fedora COPR CRAN build over the past month.
download summaries
How much of a package's code actually runs under its tests and examples, measured by the coverage pipeline. CRAN packages only.
The share of the package's code lines that actually run when its automated tests are executed.
line_pct in coverage_summary
The share of individual code expressions that run during testing, a finer-grained view than lines.
expr_pct in coverage_summary
How much of the package's code is exercised specifically by its own test suite.
coverage_tests_pct in coverage_summary
How much of the package's code is exercised just by running the examples in its help pages.
coverage_examples_pct in coverage_summary
How much of the package's code is exercised by running its long-form tutorial documents.
coverage_vignettes_pct in coverage_summary
A short label saying whether the coverage measurement ran cleanly or hit an error, so a low or missing number can be read in context.
covr_status in coverage_summary
The test-coverage percentage for each individual source file, listed worst-covered first.
coverage_file_pct in coverage_summary
The test-coverage percentage of a single function, used to rank least-tested functions and tint the call graph.
function_coverage_pct in coverage_summary
Outcomes of CRAN's automated R CMD check, as a current snapshot per test machine.
The package built, installed, and passed all of CRAN's automated tests cleanly on that test machine.
CRAN check results
The package passed but CRAN flagged a minor, usually cosmetic issue worth a look that does not by itself remove the package.
CRAN check results
CRAN found a real problem that should be fixed and, if left unaddressed, can eventually get the package removed.
CRAN check results
The package failed to build, install, or run its tests on that test machine, meaning it is currently broken there.
CRAN check results
The check itself could not complete because the build or check process crashed outright, treated the same as a hard error.
CRAN check results
The package is no longer available on CRAN and only its past history is shown, rather than a live check result.
CRAN check results
How many of the test machines the package is checked on currently give a clean result, out of the total tested.
CRAN check results
The number of operating-system and R-version combinations the package was tested on.
CRAN check results
The specific test machines where the package is not fully clean, each labeled with its problem level and platform.
CRAN check results
The longest time it took to install and check the package on any single test machine, a sense of how heavy it is to build.
CRAN check results
A dated timeline of the package's past check outcomes, showing how its worst status changed over time.
CRAN check results
How far a package reaches into the rest of the ecosystem, and the licenses its install tree pulls in.
How many other packages list this one as something they need or can use, counting each dependent once.
reverse-dependency graph
How many packages would ultimately be affected if this one broke, following every chain of required dependencies that reaches it.
reverse-dependency graph
How many packages installed alongside this one carry a share-alike license whose terms could carry over when you redistribute your work.
reverse-dependency graph
A breakdown of what kinds of licenses (permissive, weak-copyleft, copyleft) the packages in this one's install tree use.
reverse-dependency graph
People-scoped measures shown on the author pages, describing a person across all their packages rather than a single package.
How many R packages a person has a hand in, whether as author, maintainer, or contributor.
author summaries
How many packages a person is the official CRAN maintainer of.
author summaries
Total downloads of all of a person's packages over the last year, a reach signal rather than a quality one.
author summaries
How many other R packages rely on at least one of a person's packages to function.
author summaries
A single reach score where a value of h means the person has h packages each relied on by at least h other packages.
author summaries
The stretch of time from a person's first CRAN package to their most recent, showing how long they have been active.
author summaries
Data objects bundled with a package, profiled and fingerprinted by the code-metrics pipeline so identical data can be spotted across packages. Shown on package pages and in the datasets catalog. Only profileable objects are listed, so this is not a full listing of the data folder.
A fingerprint of the stored data itself so two datasets that share it hold identical values even when their names or packages differ.
the dataset catalog
A fingerprint of the shape and column types of a dataset so it groups datasets with the same structure even when the rows differ.
the dataset catalog
How completely the file could be read when it was fingerprinted, where exact means fully parsed and degraded means the fingerprint is approximate.
the dataset catalog
How many datasets a package makes available to load with the data function, as opposed to internal objects bundled for its own use.
the dataset catalog
The number of columns in a rectangular dataset, left blank for data that is not a table.
the dataset catalog