Skip to content
About / Glossary
Show

Glossary

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.

133
Definitions
20
Groups

Per-version code metrics

Measured every release and diffed on the version-compare page.

65 definitions across 12 groups

Structure

6

Exported functions

count

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

Internal functions

count

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

count

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

R lines

count

Raw line count of source files under the R/ directory, counting blank and comment lines too.

loc_r in cran_code_summary

Compiled (src) lines

count

Raw line count of compiled C, C++, and Fortran source and header files under the src/ directory.

loc_src in cran_code_summary

Test lines

higher
count

Raw line count of every file under the tests/ directory, excluding binary and other non-code files.

loc_tests in cran_code_summary

Languages

6

R functions

count

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

C++ functions

count

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

C functions

count

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

Fortran functions

count

Number of Fortran subroutines and functions the analyzer detected in the package's compiled sources under src/.

n_fns_fortran in cran_code_summary

Rust functions

count

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

Compiled share

percentage

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

Documentation

11

Doc lines

higher
count

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

Roxygen coverage

higher
percentage

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

References coverage

higher
percentage

Share of all Rd help pages that include a references section citing related literature or external sources.

references_coverage in cran_code_summary

Examples coverage

higher
percentage

Share of Rd help pages carrying an examples section that shows how to call the documented functions.

examples_coverage in cran_code_summary

Help pages with examples

higher
count

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

Undocumented params

lower
percentage

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

Value docs

higher
percentage

Share of exported-function help pages that document their return value with a value section.

value_doc_rate in cran_code_summary

pkgdown site

yes / no

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

README

yes / no

One when a README.md or README.Rmd file is present at the package root, otherwise zero.

has_readme in cran_code_summary

Vignettes

yes / no

One when the vignettes/ directory holds at least one .Rmd or .Rnw long-form tutorial source, otherwise zero.

has_vignettes in cran_code_summary

NEWS file

yes / no

One when a NEWS or NEWS.md changelog recording changes across releases is present, otherwise zero.

news_present in cran_code_summary

Testing

7

Test cases

higher
count

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

Test/code ratio

higher
ratio

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

Snapshot tests

count

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

Has tests

yes / no

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

testthat edition

count

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

Exported fn test linkage

higher
percentage

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

Stochastic seed discipline

higher
percentage

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

Complexity

4

Cyclomatic mean

lower
count

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

Cyclomatic max

lower
count

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

Cyclomatic median

lower
count

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

Lines per function (mean)

lower
count

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

Call graph

7

Functions (nodes)

count

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

Call edges

count

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

Max function degree

count

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

Mean function degree

ratio

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

Isolated functions

count

Count of package functions that neither call nor are called by any other package function (degree zero).

net_n_isolated in cran_code_summary

Connected components

count

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

Native call sites

count

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

Object system

7

S3 methods

count

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

S4 classes

count

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

S4 generics

count

Count of S4 generic functions the package declares in its R code, identified by setGeneric() calls.

n_s4_generics in cran_code_summary

S4 methods

count

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

R6 classes

count

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

S7 classes

count

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

RC classes

count

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

Dependencies

2

Direct dependencies

lower
count

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

Dependency drift

count

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

Quality & risk

5

Unsafe pattern score

lower
count

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

Secret pattern count

lower
count

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

Global-state write density

lower
ratio

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

Deprecated idiom density

lower
ratio

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

Triple-colon uses

lower
count

How often R/ code reaches into another package's private, unexported internals.

triple_colon_count in cran_code_summary

CI

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.

2

CI present

yes / no

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

CI matrix breadth

higher
count

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

Requirements

4

System requirements

count

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

SPDX valid

yes / no

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

OSI approved

yes / no

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

License file complete

yes / no

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

Beyond the metrics

Version-to-version differences the compare page shows that are not single numbers.

4

Namespace changes

Exported symbols (functions, classes, methods) added to or removed from NAMESPACE between two versions.

Dependencies

Packages required under Imports, Depends, Suggests, LinkingTo, and Enhances, compared per type where the pipeline records them per version.

Datasets

Bundled data objects, matched by name across versions, where a content-fingerprint change means the stored data itself changed.

Files changed

Per-file lines added and removed between two versions, summed across the releases in between, like a git diff stat.

Package & ecosystem signals

Current snapshots shown on the package and author pages.

68 definitions across 8 groups

Repository & community

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.

13

Repository host

category

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

Repository archived

yes / no

Whether the source repository has been marked archived, meaning it is no longer actively developed.

is_archived in vcs_signals_summary

Stars

count

How many people have starred the repository, a rough popularity signal rather than a measure of quality.

stars in vcs_signals_summary

Forks

count

How many people have made their own copy of the repository to build on or contribute back.

forks in vcs_signals_summary

Open issues

count

The number of bug reports or feature requests currently open and unresolved in the repository.

issues_open in vcs_signals_summary

Open pull requests

count

The number of proposed code changes currently awaiting review or merging in the repository.

prs_open in vcs_signals_summary

Releases published

count

How many tagged releases the maintainers have published over the life of the project.

releases_total in vcs_signals_summary

Commits

count

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

Contributors

count

How many different people have contributed code to the project.

contributors_total in vcs_signals_summary

Topics

category

The subject-area tags the maintainers attached to the repository to describe what it does.

topics in vcs_signals_summary

Repository license

category

The usage license declared on the source repository, telling you how the code may be used.

license in vcs_signals_summary

Last activity

date

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

Star change, 30 days

count

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

Development tooling

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.

10

AI-assisted tooling detected

yes / no

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

Earliest detected AI tool

category

The name of the first AI coding assistant that left a detectable trace in the repository.

ai_first_tool in vcs_ai_signals

Earliest AI marker date

date

The date when the first sign of AI-assisted tooling appeared in the repository.

ai_first_date in vcs_ai_signals

Detected AI tools

category

The list of AI coding assistants detected in the repository, shown as one chip per tool.

ai_tools in vcs_ai_signals

Most recent AI tool

category

The name of the most recently spotted AI coding assistant in the repository.

ai_latest_tool in vcs_ai_signals

Most recent AI marker date

date

The date of the most recent sign of AI-assisted tooling in the repository.

ai_latest_date in vcs_ai_signals

Evidence tool name

category

For each detected AI assistant, the specific tool named in the per-tool evidence list.

tool in vcs_ai_signals

Evidence first-seen date

date

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

Evidence tiers

category

Which kinds of clues (detection categories) triggered the AI-tool finding for that tool.

evidence_tiers in vcs_ai_signals

Sole bot-author seen

yes / no

Whether an automated bot appears as the only author behind some of the repository's changes for that tool.

authored in vcs_ai_signals

Downloads & installs

Current download and install counts across the mirrors the site tracks. These measure popularity and reach, not quality.

11

Downloads, last 30 days

count

How many times the package was downloaded from a given mirror over the past month.

download summaries

Downloads, last 90 days

count

How many times the package was downloaded over the past three months.

download summaries

Downloads, last year

count

How many times the package was downloaded over the past twelve months, the headline download figure.

download summaries

Downloads per day (typical)

count

Roughly how many downloads the package gets on an average day, derived from its yearly total.

download summaries

Bioconductor last-month downloads

count

How many distinct computers downloaded a Bioconductor package in the most recent month.

download summaries

Per-source downloads (30 days)

count

How many downloads a single mirror contributed for the package over the past month.

download summaries

Source share of downloads

percentage

What fraction of the package's tracked downloads comes from one particular mirror.

download summaries

Download rank

count

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

Download trend

percentage

Whether the package's downloads are rising or falling recently, shown as a signed percentage change.

download summaries

Fedora COPR all-time RPM downloads

count

The total number of RPM files ever downloaded from the Fedora COPR CRAN build, counted per Fedora version.

download summaries

Fedora COPR last-30-day downloads

count

How many RPM files were downloaded from the Fedora COPR CRAN build over the past month.

download summaries

Test coverage

How much of a package's code actually runs under its tests and examples, measured by the coverage pipeline. CRAN packages only.

8

Line coverage

higher
percentage

The share of the package's code lines that actually run when its automated tests are executed.

line_pct in coverage_summary

Expression coverage

higher
percentage

The share of individual code expressions that run during testing, a finer-grained view than lines.

expr_pct in coverage_summary

Test-driven coverage

higher
percentage

How much of the package's code is exercised specifically by its own test suite.

coverage_tests_pct in coverage_summary

Example-driven coverage

higher
percentage

How much of the package's code is exercised just by running the examples in its help pages.

coverage_examples_pct in coverage_summary

Vignette-driven coverage

higher
percentage

How much of the package's code is exercised by running its long-form tutorial documents.

coverage_vignettes_pct in coverage_summary

Coverage measurement status

category

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

Per-file coverage

higher
percentage

The test-coverage percentage for each individual source file, listed worst-covered first.

coverage_file_pct in coverage_summary

Per-function coverage

higher
percentage

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

CRAN checks

Outcomes of CRAN's automated R CMD check, as a current snapshot per test machine.

11

Check status OK

category

The package built, installed, and passed all of CRAN's automated tests cleanly on that test machine.

CRAN check results

Check status NOTE

category

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

Check status WARNING

category

CRAN found a real problem that should be fixed and, if left unaddressed, can eventually get the package removed.

CRAN check results

Check status ERROR

category

The package failed to build, install, or run its tests on that test machine, meaning it is currently broken there.

CRAN check results

Check status FAILURE

category

The check itself could not complete because the build or check process crashed outright, treated the same as a hard error.

CRAN check results

Removed from CRAN

yes / no

The package is no longer available on CRAN and only its past history is shown, rather than a live check result.

CRAN check results

Passing platforms

higher
ratio

How many of the test machines the package is checked on currently give a clean result, out of the total tested.

CRAN check results

Platforms checked

count

The number of operating-system and R-version combinations the package was tested on.

CRAN check results

Failing platforms

category

The specific test machines where the package is not fully clean, each labeled with its problem level and platform.

CRAN check results

Slowest check time

seconds

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

Check-status history

date

A dated timeline of the package's past check outcomes, showing how its worst status changed over time.

CRAN check results

Reach & dependencies

How far a package reaches into the rest of the ecosystem, and the licenses its install tree pulls in.

4

Direct reverse dependents

count

How many other packages list this one as something they need or can use, counting each dependent once.

reverse-dependency graph

Widest blast radius (indirect reverse dependents)

count

How many packages would ultimately be affected if this one broke, following every chain of required dependencies that reaches it.

reverse-dependency graph

Copyleft dependencies in install tree

count

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

Dependency license make-up

category

A breakdown of what kinds of licenses (permissive, weak-copyleft, copyleft) the packages in this one's install tree use.

reverse-dependency graph

Author & maintainer measures

People-scoped measures shown on the author pages, describing a person across all their packages rather than a single package.

6

Packages involved in

count

How many R packages a person has a hand in, whether as author, maintainer, or contributor.

author summaries

Packages maintained

count

How many packages a person is the official CRAN maintainer of.

author summaries

Downloads across their packages (last year)

count

Total downloads of all of a person's packages over the last year, a reach signal rather than a quality one.

author summaries

Packages that depend on their work

count

How many other R packages rely on at least one of a person's packages to function.

author summaries

Dependency h-index

count

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

CRAN activity span

date

The stretch of time from a person's first CRAN package to their most recent, showing how long they have been active.

author summaries

Datasets

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.

5

Content fingerprint

category

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

Schema fingerprint

category

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

Fingerprint confidence

category

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

Exported datasets

count

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

Bundled columns

count

The number of columns in a rectangular dataset, left blank for data that is not a table.

the dataset catalog