Rulebearing Playground Coverage Schemas GitHub

dependency-cruiser 18.2.0 coverage

A row reads as the tab claims only when every piece of its evidence passed: an upstream spec or ported case in conformance gate 1 or gate 2, or a named Rulebearing test. Any other row reads unproven, whatever the tab says (ADR-0009, ADR-0075). Written from nightly run 38190518342. Evidence marked upstream is the pinned suite's own; the rest is Rulebearing's tests.

121 of 121 rows proven; 0 unproven.

Rules

AttributeApplies toRulebearingWaveEvidence
forbidden[] (regular) with name, comment, severity, scope, from, toallParity+1
forbidden[] reachability variant (to.reachable)allParity+1
forbidden[] dependents variant (module.numberOfDependentsLessThan / MoreThan)allParity+1
allowed[], allowedSeverityallParity+1
required[] with module and to.reachableallParity+1
scope: module / scope: folder (folder-level circular, moreUnstable)allParity+1
extends (string or array; file, npm package, bundled presets recommended, recommended-strict, recommended-warn-only)allParity1
$0 to $9 group matchingallParity+1
severity: error, warn, info, ignoreallParity1
from.path, from.pathNot, from.orphanallParity+1
to.path, to.pathNotallParity+1
to.circular, to.via, to.viaOnly, to.viaNot, to.viaSomeNotallParity+1
to.dependencyTypes, to.dependencyTypesNotall (per-language vocabulary)Parity+1
to.dynamicallParity+ (.NET: literal Assembly.Load / Type.GetType / Activator.CreateInstance; Python: literal importlib.import_module)1
to.exoticallyRequired, to.exoticRequire, to.exoticRequireNotTS/JSKept1
to.license, to.licenseNotTS/JS (package.json); .NET (NuGet .nuspec licence); Python (installed METADATA)Parity+2
to.moreThanOneDependencyTypeTS/JSKept1
to.moreUnstableallParity+2
to.preCompilationOnlyTSKept1
to.couldNotResolveallParity+1
to.ancestorallParity+1
to.reachable (reachability forbidden and required)allParity+1
module.path, module.pathNotallParity+1

Options

OptionRulebearingWaveEvidence
affected (git revision)Parity+; for .NET, changed .cs files map through the PDB to affected types3
babelConfig.fileNameParity for what it affects: syntax needs no Babel (oxc parses it); babel-plugin-module-resolver aliases are read from the config1
baseDirParity1
builtInModules (add, override)Parity; per Node version list bundled1
cache (folder, strategy: metadata / content, compress)Parity; .NET keys on assembly and PDB hashes3
collapse (digit or regex)Parity+2
combinedDependenciesParity (monorepo package.json walk-up)1
detectJSDocImportsParity, implemented on the comment table rather than by switching parser1
detectProcessBuiltinModuleCallsParity1
doNotFollow.path, doNotFollow.dependencyTypesParity+1
enhancedResolveOptions: exportsFields, conditionNames, extensions, mainFields, mainFiles, aliasFields, cachedInputFileSystem.cacheDuration, other enhanced-resolve keysParity through oxc_resolver, which is the Rust port of enhanced-resolve; cacheDuration accepted and ignored (the resolver caches per run)1
exclude.path, exclude.dynamicParity+1
exoticRequireStringsKept1
experimentalStatsParity (experimentalStats on modules and dependencies)2
externalModuleResolutionStrategy: node_modules / yarn-pnpParity (oxc_resolver supports PnP)1
extraExtensionsToScanParity1
focus.path, focus.depthParity+1
forceDeriveDependentsParity1
highlight.pathParity+2
includeOnly.pathParity+1
knownViolations[]Parity+, plus optional expires, owner, reason per entry2
maxDepthParity+1
metricsParity+ (module, folder, and for .NET project instability)2
moduleSystems: cjs, es6, amd, tsdParity1
parser: acorn / swc / tscAccepted; one parser (oxc) satisfies all three, and the value is recorded in optionsUsed for the report1
prefix, suffixParity1
preserveSymlinksParity1
progress: none, cli-feedback, performance-log, ndjsonParity1
reaches.pathParity+1
reporterOptions.anon.wordlistParity3
reporterOptions.archi / dot / ddot / flat: collapsePattern, filters (exclude, focus, includeOnly, reaches), showMetrics, theme (graph, node, edge, modules[], dependencies[], replace)Parity+2
reporterOptions.err / err-long / err-html: showAliasedModulesUnresolved, showExternalModulesUnresolvedParity1
reporterOptions.markdown (18 keys: title, showTitle, showSummary, showSummaryHeader, summaryHeader, showStatsSummary, showRulesSummary, includeIgnoredInSummary, showDetails, showDetailsHeader, detailsHeader, includeIgnoredInDetails, collapseDetails, collapsedMessage, noViolationsMessage, showFooter, showAliasedModulesUnresolved, showExternalModulesUnresolved)Parity3
reporterOptions.mermaid.minifyParity2
reporterOptions.metrics: hideFolders, hideModules, orderByParity2
reporterOptions.text.highlightFocusedParity1
skipAnalysisNotInRulesParity1
tsConfig.fileName (extends, paths, baseUrl, project references)Parity through oxc_resolver's tsconfig support1
tsPreCompilationDeps: true / false / "specify"Parity; specify records both the pre- and post-compilation dependency sets and marks pre-compilation-only1
webpackConfig.fileName, env, argumentsParity; the config is evaluated in the embedded JavaScript engine and its resolve block read; --webpack-config-json for a pre-evaluated copy2

Command line

Flag or commandRulebearingWaveEvidence
positional files, directories and globsParity+1
--config / --validate, --no-configParity; also --config-format, --config - (stdin), --config-via-node1
--init (oneshot presets)Parity, with presets per language2
--info (supported transpilers and extensions)Parity, per extractor1
--output-type, --output-toParity+1
--include-only, --focus, --focus-depth, --reaches, --highlight, --collapse, --exclude, --do-not-follow, --max-depth, --module-systems, --prefixParity+1 to 2
--affected [revision]Parity+3
--ts-pre-compilation-deps, --ts-config, --webpack-config, --preserve-symlinksParity1 to 2
--metrics, --no-metricsParity+2
--ignore-known [file], --no-ignore-knownParity+2
--cache [folder], --cache-strategy, --no-cacheParity+3
--progress [type], --no-progressParity1
--version, --helpParity1
exit code = number of error-severity violationsParity, plus 2 for an untrustworthy run and 3 for an invalid config1
depcruise-fmt (-f, -T, -I, -F, -x, -S, -e, -p, --highlight)rulebearing fmt, same flags1
depcruise-baseline (--baseline-mode: full / shrink-only / format)rulebearing baseline, same modes2
depcruise-wrap-stream-in-htmlrulebearing wrap-html3

Output types

TypeRulebearingWaveEvidence
err, err-longParity+1
err-htmlParity2
jsonParity+; additive fields only, validates against the 18.2.0 cruise-result schema when extensions are stripped with --strict-schema1
text, csvParity+1
teamcity, azure-devopsParity+1
dot, ddot, cdot / archi, fdot / flatParity+2
x-dot-webpageParity3
mermaid, d2Parity+2
html (matrix)Parity3
markdownParity3
anonParity3
baselineParity+2
metricsParity+2
nullParity1
plugin:<path> (custom JavaScript reporter)Parity through the embedded engine, receiving the cruise result object3
New: sarif, github-annotations, junit, trx, agent, plantumlAdditions1 to 3

Result document (cruise-result schema)

FieldRulebearingEvidence
modules[]: source, dependencies[], dependents[], orphan, valid, rules[], reachable[], reaches[], instability, couldNotResolve, coreModule, followable, matchesDoNotFollow, matchesFocus, matchesReaches, matchesHighlight, consolidated, checksum, license, dependencyTypes, experimentalStatsParity+; added language, project, namespaces, attribution
modules[].dependencies[]: module, resolved, moduleSystem, dependencyTypes, dynamic, exoticallyRequired, exoticRequire, followable, coreModule, couldNotResolve, matchesDoNotFollow, circular, cycle[], valid, rules[], preCompilationOnly, typeOnly, protocol, mimeType, license, instabilityParity+; added line, column, dependencyKind, member
folders[]: name, moduleCount, dependencies[], dependents[], afferentCouplings, efferentCouplings, instability, experimentalStatsParity+
summary: violations[] (from, to, rule, type, cycle, via, metrics, unresolvedTo, comment), error, warn, info, ignore, totalCruised, totalDependenciesCruised, optionsUsed, ruleSetUsed, environmentParity+; added inspected (files, assemblies, modules per language) and vacuousRules[]
revisionData (SHA1, changes[])Parity
New code section: types[], members[], attributes[], calls[]Addition; the layer element, slice and diagram rules read

Dependency types and module systems

GroupValuesRulebearingEvidence
Aliasesaliased, aliased-subpath-import, aliased-tsconfig, aliased-tsconfig-base-url, aliased-tsconfig-paths, aliased-webpack, aliased-workspaceParity (oxc_resolver reports which alias table resolved the specifier)
Module formsimport, export, require, import-equals, dynamic-import, amd-define, amd-require, amd-exotic-require, exotic-require, jsdoc, jsdoc-bracket-import, jsdoc-import-tag, triple-slash-amd-dependency, triple-slash-directive, triple-slash-file-reference, triple-slash-type-reference, process-get-builtin-moduleParity
Type-leveltype-only, type-import, pre-compilation-onlyParity (TS); type-only reused for Python TYPE_CHECKING
npmnpm, npm-dev, npm-peer, npm-optional, npm-bundled, npm-no-pkg, npm-unknown, deprecatedParity
Othercore, local, localmodule, undetermined, unknownParity
Module systemscjs, es6, amd, tsdParity; .NET reports clr, Python py

Extraction and resolution

CapabilityRulebearingWaveEvidence
JavaScript (.js, .mjs, .cjs, .jsx), TypeScript (.ts, .tsx, .mts, .cts, .d.ts), decorators, stage-3 syntaxoxc_parser1
Vue single-file components (.vue), Svelte (.svelte)script-block splitter, then oxc2
CoffeeScript, LiveScript (.coffee, .litcoffee, .ls, .cjsx, .csx)Sidecar: --sidecar node spawns dependency-cruiser for those files and merges the edges3
Babel-transformed syntax, .babel filesoxc parses the syntax; module-resolver aliases read from the Babel config1
Markdown code fences (.md, via extraExtensionsToScan)Parity2
Resolution: node resolution, exports and imports fields, conditionNames, mainFields, aliasFields, tsconfig paths / baseUrl / extends / references, webpack resolve.alias and modules, workspaces, symlinks, Yarn PnPoxc_resolver1 to 2
npm classification from the nearest package.json, licence and deprecated from the installed packageParity1 to 2
Core module detection per Node version, node: protocol, process.getBuiltinModuleParity1
Unsupported-transpiler failure mode: dependency-cruiser cruises zero modules and exits 0Exit code 2 with a named reason; the separate toolchain-version guard a heavy user has to bolt on becomes unnecessary1

Programmatic API

dependency-cruiserRulebearingEvidence
cruise(files, options, resolveOptions, transpileOptions)Rust rulebearing::cruise; Node rulebearing exports cruise() with the same signature through napi-rs
format(result, options)lb::format; Node format()
extractDepcruiseConfig, extractTSConfig, extractWebpackResolveConfig, extractBabelConfigsame names in the Node binding
getAvailableTranspilers, allExtensionssame names, per extractor