big-code-analysis-cli 2.0.0__py3-none-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
man/bca-exemptions.1 ADDED
@@ -0,0 +1,109 @@
1
+ .ie \n(.g .ds Aq \(aq
2
+ .el .ds Aq '
3
+ .TH BCA-EXEMPTIONS 1 "big-code-analysis 2.0.0" "big-code-analysis Manual"
4
+ .SH NAME
5
+ bca\-exemptions \- Audit everything the `bca check` gate skips in one view: in\-source suppression markers (`bca: suppress`, `#lizard forgives`, …), `[check.exclude]` globs, and `.bca\-baseline.toml` entries. Read\-only; always exits 0 on success
6
+ .SH SYNOPSIS
7
+ \fBbca\-exemptions\fR [\fB\-p\fR|\fB\-\-paths\fR] [\fB\-I\fR|\fB\-\-include\fR] [\fB\-X\fR|\fB\-\-exclude\fR] [\fB\-l\fR|\fB\-\-language\fR] [\fB\-\-no\-skip\-generated\fR] [\fB\-\-paths\-from\fR] [\fB\-\-exclude\-from\fR] [\fB\-\-no\-ignore\fR] [\fB\-\-no\-config\fR] [\fB\-j\fR|\fB\-\-jobs\fR] [\fB\-\-exclude\-tests\fR] [\fB\-\-cyclomatic\-count\-try\fR] [\fB\-\-preproc\-data\fR] [\fB\-O\fR|\fB\-\-format\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-strip\-prefix\fR] [\fB\-\-markers\-only\fR] [\fB\-\-excludes\-only\fR] [\fB\-\-baseline\-only\fR] [\fB\-\-baseline\fR] [\fB\-\-check\-exclude\fR] [\fB\-\-check\-exclude\-from\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIPATHS\fR]
8
+ .SH DESCRIPTION
9
+ Audit everything the `bca check` gate skips in one view: in\-source suppression markers (`bca: suppress`, `#lizard forgives`, …), `[check.exclude]` globs, and `.bca\-baseline.toml` entries. Read\-only; always exits 0 on success
10
+ .SH OPTIONS
11
+ .TP
12
+ \fB\-O\fR, \fB\-\-format\fR \fI<FORMAT>\fR [default: text]
13
+ Output style: `text` (default), `markdown`, or `json`. JSON nests all three sections under a single `suppressions` envelope
14
+ .br
15
+
16
+ .br
17
+ \fIPossible values:\fR
18
+ .RS 14
19
+ .IP \(bu 2
20
+ text
21
+ .IP \(bu 2
22
+ markdown
23
+ .IP \(bu 2
24
+ json
25
+ .RE
26
+ .TP
27
+ \fB\-o\fR, \fB\-\-output\fR \fI<OUTPUT>\fR
28
+ Output file. Stdout if omitted
29
+ .TP
30
+ \fB\-\-strip\-prefix\fR \fI<STRIP_PREFIX>\fR [default: ]
31
+ Path prefix to strip from displayed file paths
32
+ .TP
33
+ \fB\-\-markers\-only\fR
34
+ Report only the in\-source markers section. The old `\-\-only\-markers` spelling stays a hidden alias for one cycle
35
+ .TP
36
+ \fB\-\-excludes\-only\fR
37
+ Report only the `[check.exclude]` globs section. The old `\-\-only\-excludes` spelling stays a hidden alias for one cycle
38
+ .TP
39
+ \fB\-\-baseline\-only\fR
40
+ Report only the `.bca\-baseline.toml` entries section. The old `\-\-only\-baseline` spelling stays a hidden alias for one cycle
41
+ .TP
42
+ \fB\-\-baseline\fR \fI<BASELINE>\fR
43
+ Baseline file to audit. Defaults to `bca.toml`\*(Aqs `[check] baseline` key, then `.bca\-baseline.toml` in the working directory when present. A path given here must exist
44
+ .TP
45
+ \fB\-\-check\-exclude\fR \fI<GLOB>\fR
46
+ Glob exempting files from the check gate, mirroring `bca check \-\-check\-exclude`. Repeatable. CLI values are *added to* (merged with), not a replacement for, the `bca.toml` `[check] exclude` list, so a CLI `\-\-check\-exclude` never silently re\-gates a path the project config deliberately exempted
47
+ .TP
48
+ \fB\-\-check\-exclude\-from\fR \fI<CHECK_EXCLUDE_FROM>\fR
49
+ Read newline\-separated `\-\-check\-exclude` globs from a file (`.gitignore`\-style), mirroring `bca check \-\-check\-exclude\-from`. Use `\-` for stdin. Unioned with any `\-\-check\-exclude` values
50
+ .TP
51
+ \fB\-h\fR, \fB\-\-help\fR
52
+ Print help (see a summary with \*(Aq\-h\*(Aq)
53
+ .SH "INPUT SELECTION"
54
+ .TP
55
+ \fB\-p\fR, \fB\-\-paths\fR \fI<PATHS>\fR
56
+ Input files or directories to analyze. Unioned with any positional `[PATHS]`. Defaults to the current directory (`.`) when omitted and no manifest `paths` is set; an explicitly\-given path that does not exist is an error (exit 1)
57
+ .TP
58
+ \fB\-I\fR, \fB\-\-include\fR \fI<INCLUDE>\fR
59
+ Glob to include files. Repeat the flag to add multiple globs (`\-I \*(Aq*.rs\*(Aq \-I \*(Aq*.toml\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent
60
+ .TP
61
+ \fB\-X\fR, \fB\-\-exclude\fR \fI<EXCLUDE>\fR
62
+ Glob to exclude files. Repeat the flag to add multiple globs (`\-X \*(Aq*.tmp\*(Aq \-X \*(Aq*.bak\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent. CLI values are *merged with* (unioned, not a replacement for) any `bca.toml` `exclude` list and any `\-\-exclude\-from` patterns, so a CLI `\-\-exclude` never silently un\-excludes a directory the project config deliberately skipped. Pass `\-\-no\-config` to ignore the manifest entirely
63
+ .TP
64
+ \fB\-l\fR, \fB\-\-language\fR \fI<LANGUAGE>\fR
65
+ Force a language instead of inferring from extension. Accepts a canonical language name (`rust`, `python`, `cpp`, …) or a file extension (`rs`, `py`, …). An unrecognized value is a hard error
66
+ .TP
67
+ \fB\-\-no\-skip\-generated\fR
68
+ Disable auto\-skip of files marked as generated (e.g. `@generated`, `DO NOT EDIT`, `GENERATED CODE` near the top). By default the CLI skips such files so generated bindings do not skew metrics
69
+ .TP
70
+ \fB\-\-paths\-from\fR \fI<PATHS_FROM>\fR
71
+ Read newline\-separated input paths from a file. Use `\-` to read from stdin. Combined as a union with any `\-\-paths` values; globs still apply. Blank lines are skipped; `#` is treated as a path character (not a comment). To pass a file literally named `\-`, use `./\-`
72
+ .TP
73
+ \fB\-\-exclude\-from\fR \fI<EXCLUDE_FROM>\fR
74
+ Read additional `\-\-exclude` glob patterns from a file (one per line, `.gitignore`\-style). Blank lines and lines whose first non\-whitespace character is `#` are skipped. Use `\-` to read from stdin; to pass a file literally named `\-`, use `./\-`. Patterns are unioned with any `\-\-exclude` values into a single deny\-set; order does not matter. Convention is a `.bcaignore` at the repo root, mirroring `.gitignore` / `.dockerignore`
75
+ .TP
76
+ \fB\-\-no\-ignore\fR
77
+ Disable `.gitignore` / `.ignore` / global gitignore awareness when expanding input directories. Explicit file paths are always honored regardless of this flag
78
+ .TP
79
+ \fB\-\-no\-config\fR
80
+ Skip auto\-discovery of a `bca.toml` manifest. By default `bca` climbs from the working directory to the repo root looking for `bca.toml` and merges its keys *under* any explicit CLI flags. Pass this for raw, fully\-explicit invocations that must not pick up repo\-level config (e.g. a reproducible CI one\-liner). When no manifest is discovered this flag is a no\-op
81
+ .TP
82
+ [\fIPATHS\fR]
83
+ Input files or directories to analyze, given positionally (`bca metrics src/ tests/`). Unioned with any `\-\-paths`/`\-p` values
84
+ .SH "WALKER TUNING"
85
+ .TP
86
+ \fB\-j\fR, \fB\-\-jobs\fR \fI<N|auto>\fR [default: auto]
87
+ Number of jobs.
88
+
89
+ Defaults to the effective CPU count as reported by the OS (cgroup\-quota\- and cpuset\-aware on Linux). Pass an explicit integer or `auto` to override. `\-\-jobs 1` forces serial mode for debugging. `\-\-num\-jobs` is kept as a hidden alias for one release cycle and is slated for removal in the next major.
90
+ .TP
91
+ \fB\-\-exclude\-tests\fR
92
+ Exclude inline test code from metric computation. Currently applies to Rust only (skips `#[test]`, `#[cfg(test)]`, `#[tokio::test]`, `#[rstest]`, `#![cfg(test)]` items and their subtrees). Default is off — every node is counted, so numbers stay byte\-for\-byte stable. Languages without a test\-subtree skip rule ignore this flag
93
+ .TP
94
+ \fB\-\-cyclomatic\-count\-try\fR[=\fI<BOOL>\fR]
95
+ Whether Rust\*(Aqs `?` operator (the `try_expression` node) contributes to cyclomatic complexity (standard and modified). Defaults to `true` — `?` counts +1, matching upstream rust\-code\-analysis and every published metric value. Pass `\-\-cyclomatic\-count\-try=false` to treat `?` as linear error propagation — useful when cyclomatic is used as a maintainability gate that should not penalize fallible\-but\-linear code. Rust\-only: no other language emits the node, so the flag is inert elsewhere. Mirrors the `cyclomatic_count_try` manifest key; the CLI value overrides the manifest in either direction
96
+ .br
97
+
98
+ .br
99
+ \fIPossible values:\fR
100
+ .RS 14
101
+ .IP \(bu 2
102
+ true
103
+ .IP \(bu 2
104
+ false
105
+ .RE
106
+ .SH PREPROCESSOR
107
+ .TP
108
+ \fB\-\-preproc\-data\fR \fI<PREPROC_DATA>\fR
109
+ Existing preprocessor\-data JSON to consume during C/C++ analysis. Use `bca preproc` to produce one
man/bca-find.1 ADDED
@@ -0,0 +1,95 @@
1
+ .ie \n(.g .ds Aq \(aq
2
+ .el .ds Aq '
3
+ .TH BCA-FIND 1 "big-code-analysis 2.0.0" "big-code-analysis Manual"
4
+ .SH NAME
5
+ bca\-find \- Find nodes of one or more types
6
+ .SH SYNOPSIS
7
+ \fBbca\-find\fR <\fB\-t\fR|\fB\-\-type\fR> [\fB\-\-line\-start\fR] [\fB\-\-line\-end\fR] [\fB\-p\fR|\fB\-\-paths\fR] [\fB\-I\fR|\fB\-\-include\fR] [\fB\-X\fR|\fB\-\-exclude\fR] [\fB\-l\fR|\fB\-\-language\fR] [\fB\-\-no\-skip\-generated\fR] [\fB\-\-paths\-from\fR] [\fB\-\-exclude\-from\fR] [\fB\-\-no\-ignore\fR] [\fB\-\-no\-config\fR] [\fB\-j\fR|\fB\-\-jobs\fR] [\fB\-\-exclude\-tests\fR] [\fB\-\-cyclomatic\-count\-try\fR] [\fB\-\-preproc\-data\fR] [\fB\-\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIPATHS\fR]
8
+ .SH DESCRIPTION
9
+ Find nodes of one or more types
10
+ .SH OPTIONS
11
+ .TP
12
+ \fB\-t\fR, \fB\-\-type\fR \fI<NODE_TYPE>\fR
13
+ Node\-type name to match. Repeat the flag to match several (`\-t function_item \-t struct_item`). Required: pass at least one
14
+ .TP
15
+ \fB\-\-line\-start\fR \fI<LINE_START>\fR
16
+ First line of the range to analyze (1\-based, inclusive)
17
+ .TP
18
+ \fB\-\-line\-end\fR \fI<LINE_END>\fR
19
+ Last line of the range to analyze (1\-based, inclusive)
20
+ .TP
21
+ \fB\-h\fR, \fB\-\-help\fR
22
+ Print help (see a summary with \*(Aq\-h\*(Aq)
23
+ .SH "INPUT SELECTION"
24
+ .TP
25
+ \fB\-p\fR, \fB\-\-paths\fR \fI<PATHS>\fR
26
+ Input files or directories to analyze. Unioned with any positional `[PATHS]`. Defaults to the current directory (`.`) when omitted and no manifest `paths` is set; an explicitly\-given path that does not exist is an error (exit 1)
27
+ .TP
28
+ \fB\-I\fR, \fB\-\-include\fR \fI<INCLUDE>\fR
29
+ Glob to include files. Repeat the flag to add multiple globs (`\-I \*(Aq*.rs\*(Aq \-I \*(Aq*.toml\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent
30
+ .TP
31
+ \fB\-X\fR, \fB\-\-exclude\fR \fI<EXCLUDE>\fR
32
+ Glob to exclude files. Repeat the flag to add multiple globs (`\-X \*(Aq*.tmp\*(Aq \-X \*(Aq*.bak\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent. CLI values are *merged with* (unioned, not a replacement for) any `bca.toml` `exclude` list and any `\-\-exclude\-from` patterns, so a CLI `\-\-exclude` never silently un\-excludes a directory the project config deliberately skipped. Pass `\-\-no\-config` to ignore the manifest entirely
33
+ .TP
34
+ \fB\-l\fR, \fB\-\-language\fR \fI<LANGUAGE>\fR
35
+ Force a language instead of inferring from extension. Accepts a canonical language name (`rust`, `python`, `cpp`, …) or a file extension (`rs`, `py`, …). An unrecognized value is a hard error
36
+ .TP
37
+ \fB\-\-no\-skip\-generated\fR
38
+ Disable auto\-skip of files marked as generated (e.g. `@generated`, `DO NOT EDIT`, `GENERATED CODE` near the top). By default the CLI skips such files so generated bindings do not skew metrics
39
+ .TP
40
+ \fB\-\-paths\-from\fR \fI<PATHS_FROM>\fR
41
+ Read newline\-separated input paths from a file. Use `\-` to read from stdin. Combined as a union with any `\-\-paths` values; globs still apply. Blank lines are skipped; `#` is treated as a path character (not a comment). To pass a file literally named `\-`, use `./\-`
42
+ .TP
43
+ \fB\-\-exclude\-from\fR \fI<EXCLUDE_FROM>\fR
44
+ Read additional `\-\-exclude` glob patterns from a file (one per line, `.gitignore`\-style). Blank lines and lines whose first non\-whitespace character is `#` are skipped. Use `\-` to read from stdin; to pass a file literally named `\-`, use `./\-`. Patterns are unioned with any `\-\-exclude` values into a single deny\-set; order does not matter. Convention is a `.bcaignore` at the repo root, mirroring `.gitignore` / `.dockerignore`
45
+ .TP
46
+ \fB\-\-no\-ignore\fR
47
+ Disable `.gitignore` / `.ignore` / global gitignore awareness when expanding input directories. Explicit file paths are always honored regardless of this flag
48
+ .TP
49
+ \fB\-\-no\-config\fR
50
+ Skip auto\-discovery of a `bca.toml` manifest. By default `bca` climbs from the working directory to the repo root looking for `bca.toml` and merges its keys *under* any explicit CLI flags. Pass this for raw, fully\-explicit invocations that must not pick up repo\-level config (e.g. a reproducible CI one\-liner). When no manifest is discovered this flag is a no\-op
51
+ .TP
52
+ [\fIPATHS\fR]
53
+ Input files or directories to analyze, given positionally (`bca metrics src/ tests/`). Unioned with any `\-\-paths`/`\-p` values
54
+ .SH "WALKER TUNING"
55
+ .TP
56
+ \fB\-j\fR, \fB\-\-jobs\fR \fI<N|auto>\fR [default: auto]
57
+ Number of jobs.
58
+
59
+ Defaults to the effective CPU count as reported by the OS (cgroup\-quota\- and cpuset\-aware on Linux). Pass an explicit integer or `auto` to override. `\-\-jobs 1` forces serial mode for debugging. `\-\-num\-jobs` is kept as a hidden alias for one release cycle and is slated for removal in the next major.
60
+ .TP
61
+ \fB\-\-exclude\-tests\fR
62
+ Exclude inline test code from metric computation. Currently applies to Rust only (skips `#[test]`, `#[cfg(test)]`, `#[tokio::test]`, `#[rstest]`, `#![cfg(test)]` items and their subtrees). Default is off — every node is counted, so numbers stay byte\-for\-byte stable. Languages without a test\-subtree skip rule ignore this flag
63
+ .TP
64
+ \fB\-\-cyclomatic\-count\-try\fR[=\fI<BOOL>\fR]
65
+ Whether Rust\*(Aqs `?` operator (the `try_expression` node) contributes to cyclomatic complexity (standard and modified). Defaults to `true` — `?` counts +1, matching upstream rust\-code\-analysis and every published metric value. Pass `\-\-cyclomatic\-count\-try=false` to treat `?` as linear error propagation — useful when cyclomatic is used as a maintainability gate that should not penalize fallible\-but\-linear code. Rust\-only: no other language emits the node, so the flag is inert elsewhere. Mirrors the `cyclomatic_count_try` manifest key; the CLI value overrides the manifest in either direction
66
+ .br
67
+
68
+ .br
69
+ \fIPossible values:\fR
70
+ .RS 14
71
+ .IP \(bu 2
72
+ true
73
+ .IP \(bu 2
74
+ false
75
+ .RE
76
+ .SH PREPROCESSOR
77
+ .TP
78
+ \fB\-\-preproc\-data\fR \fI<PREPROC_DATA>\fR
79
+ Existing preprocessor\-data JSON to consume during C/C++ analysis. Use `bca preproc` to produce one
80
+ .SH OUTPUT
81
+ .TP
82
+ \fB\-\-color\fR \fI<WHEN>\fR [default: auto]
83
+ When to colorize the human\-readable `text` dumps (`metrics` / `ops` default tree, `dump`, `find`, `functions`): `auto` (default — color only when stdout is a terminal and `NO_COLOR` is unset), `always` (force escapes even when piped/redirected), or `never` (plain text). Structured formats (`json` / `yaml` / `toml` / `cbor` / `csv`) and file output are never colorized. Honors the `NO_COLOR` convention (<https://no\-color.org>) unless `\-\-color always` overrides it
84
+ .br
85
+
86
+ .br
87
+ \fIPossible values:\fR
88
+ .RS 14
89
+ .IP \(bu 2
90
+ auto: Color when stdout is a terminal and `NO_COLOR` is unset
91
+ .IP \(bu 2
92
+ always: Always emit color, even when piped or redirected
93
+ .IP \(bu 2
94
+ never: Never emit color
95
+ .RE
man/bca-functions.1 ADDED
@@ -0,0 +1,86 @@
1
+ .ie \n(.g .ds Aq \(aq
2
+ .el .ds Aq '
3
+ .TH BCA-FUNCTIONS 1 "big-code-analysis 2.0.0" "big-code-analysis Manual"
4
+ .SH NAME
5
+ bca\-functions \- List functions/methods and their spans
6
+ .SH SYNOPSIS
7
+ \fBbca\-functions\fR [\fB\-p\fR|\fB\-\-paths\fR] [\fB\-I\fR|\fB\-\-include\fR] [\fB\-X\fR|\fB\-\-exclude\fR] [\fB\-l\fR|\fB\-\-language\fR] [\fB\-\-no\-skip\-generated\fR] [\fB\-\-paths\-from\fR] [\fB\-\-exclude\-from\fR] [\fB\-\-no\-ignore\fR] [\fB\-\-no\-config\fR] [\fB\-j\fR|\fB\-\-jobs\fR] [\fB\-\-exclude\-tests\fR] [\fB\-\-cyclomatic\-count\-try\fR] [\fB\-\-preproc\-data\fR] [\fB\-\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIPATHS\fR]
8
+ .SH DESCRIPTION
9
+ List functions/methods and their spans
10
+ .SH OPTIONS
11
+ .TP
12
+ \fB\-h\fR, \fB\-\-help\fR
13
+ Print help (see a summary with \*(Aq\-h\*(Aq)
14
+ .SH "INPUT SELECTION"
15
+ .TP
16
+ \fB\-p\fR, \fB\-\-paths\fR \fI<PATHS>\fR
17
+ Input files or directories to analyze. Unioned with any positional `[PATHS]`. Defaults to the current directory (`.`) when omitted and no manifest `paths` is set; an explicitly\-given path that does not exist is an error (exit 1)
18
+ .TP
19
+ \fB\-I\fR, \fB\-\-include\fR \fI<INCLUDE>\fR
20
+ Glob to include files. Repeat the flag to add multiple globs (`\-I \*(Aq*.rs\*(Aq \-I \*(Aq*.toml\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent
21
+ .TP
22
+ \fB\-X\fR, \fB\-\-exclude\fR \fI<EXCLUDE>\fR
23
+ Glob to exclude files. Repeat the flag to add multiple globs (`\-X \*(Aq*.tmp\*(Aq \-X \*(Aq*.bak\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent. CLI values are *merged with* (unioned, not a replacement for) any `bca.toml` `exclude` list and any `\-\-exclude\-from` patterns, so a CLI `\-\-exclude` never silently un\-excludes a directory the project config deliberately skipped. Pass `\-\-no\-config` to ignore the manifest entirely
24
+ .TP
25
+ \fB\-l\fR, \fB\-\-language\fR \fI<LANGUAGE>\fR
26
+ Force a language instead of inferring from extension. Accepts a canonical language name (`rust`, `python`, `cpp`, …) or a file extension (`rs`, `py`, …). An unrecognized value is a hard error
27
+ .TP
28
+ \fB\-\-no\-skip\-generated\fR
29
+ Disable auto\-skip of files marked as generated (e.g. `@generated`, `DO NOT EDIT`, `GENERATED CODE` near the top). By default the CLI skips such files so generated bindings do not skew metrics
30
+ .TP
31
+ \fB\-\-paths\-from\fR \fI<PATHS_FROM>\fR
32
+ Read newline\-separated input paths from a file. Use `\-` to read from stdin. Combined as a union with any `\-\-paths` values; globs still apply. Blank lines are skipped; `#` is treated as a path character (not a comment). To pass a file literally named `\-`, use `./\-`
33
+ .TP
34
+ \fB\-\-exclude\-from\fR \fI<EXCLUDE_FROM>\fR
35
+ Read additional `\-\-exclude` glob patterns from a file (one per line, `.gitignore`\-style). Blank lines and lines whose first non\-whitespace character is `#` are skipped. Use `\-` to read from stdin; to pass a file literally named `\-`, use `./\-`. Patterns are unioned with any `\-\-exclude` values into a single deny\-set; order does not matter. Convention is a `.bcaignore` at the repo root, mirroring `.gitignore` / `.dockerignore`
36
+ .TP
37
+ \fB\-\-no\-ignore\fR
38
+ Disable `.gitignore` / `.ignore` / global gitignore awareness when expanding input directories. Explicit file paths are always honored regardless of this flag
39
+ .TP
40
+ \fB\-\-no\-config\fR
41
+ Skip auto\-discovery of a `bca.toml` manifest. By default `bca` climbs from the working directory to the repo root looking for `bca.toml` and merges its keys *under* any explicit CLI flags. Pass this for raw, fully\-explicit invocations that must not pick up repo\-level config (e.g. a reproducible CI one\-liner). When no manifest is discovered this flag is a no\-op
42
+ .TP
43
+ [\fIPATHS\fR]
44
+ Input files or directories to analyze, given positionally (`bca metrics src/ tests/`). Unioned with any `\-\-paths`/`\-p` values
45
+ .SH "WALKER TUNING"
46
+ .TP
47
+ \fB\-j\fR, \fB\-\-jobs\fR \fI<N|auto>\fR [default: auto]
48
+ Number of jobs.
49
+
50
+ Defaults to the effective CPU count as reported by the OS (cgroup\-quota\- and cpuset\-aware on Linux). Pass an explicit integer or `auto` to override. `\-\-jobs 1` forces serial mode for debugging. `\-\-num\-jobs` is kept as a hidden alias for one release cycle and is slated for removal in the next major.
51
+ .TP
52
+ \fB\-\-exclude\-tests\fR
53
+ Exclude inline test code from metric computation. Currently applies to Rust only (skips `#[test]`, `#[cfg(test)]`, `#[tokio::test]`, `#[rstest]`, `#![cfg(test)]` items and their subtrees). Default is off — every node is counted, so numbers stay byte\-for\-byte stable. Languages without a test\-subtree skip rule ignore this flag
54
+ .TP
55
+ \fB\-\-cyclomatic\-count\-try\fR[=\fI<BOOL>\fR]
56
+ Whether Rust\*(Aqs `?` operator (the `try_expression` node) contributes to cyclomatic complexity (standard and modified). Defaults to `true` — `?` counts +1, matching upstream rust\-code\-analysis and every published metric value. Pass `\-\-cyclomatic\-count\-try=false` to treat `?` as linear error propagation — useful when cyclomatic is used as a maintainability gate that should not penalize fallible\-but\-linear code. Rust\-only: no other language emits the node, so the flag is inert elsewhere. Mirrors the `cyclomatic_count_try` manifest key; the CLI value overrides the manifest in either direction
57
+ .br
58
+
59
+ .br
60
+ \fIPossible values:\fR
61
+ .RS 14
62
+ .IP \(bu 2
63
+ true
64
+ .IP \(bu 2
65
+ false
66
+ .RE
67
+ .SH PREPROCESSOR
68
+ .TP
69
+ \fB\-\-preproc\-data\fR \fI<PREPROC_DATA>\fR
70
+ Existing preprocessor\-data JSON to consume during C/C++ analysis. Use `bca preproc` to produce one
71
+ .SH OUTPUT
72
+ .TP
73
+ \fB\-\-color\fR \fI<WHEN>\fR [default: auto]
74
+ When to colorize the human\-readable `text` dumps (`metrics` / `ops` default tree, `dump`, `find`, `functions`): `auto` (default — color only when stdout is a terminal and `NO_COLOR` is unset), `always` (force escapes even when piped/redirected), or `never` (plain text). Structured formats (`json` / `yaml` / `toml` / `cbor` / `csv`) and file output are never colorized. Honors the `NO_COLOR` convention (<https://no\-color.org>) unless `\-\-color always` overrides it
75
+ .br
76
+
77
+ .br
78
+ \fIPossible values:\fR
79
+ .RS 14
80
+ .IP \(bu 2
81
+ auto: Color when stdout is a terminal and `NO_COLOR` is unset
82
+ .IP \(bu 2
83
+ always: Always emit color, even when piped or redirected
84
+ .IP \(bu 2
85
+ never: Never emit color
86
+ .RE
man/bca-init.1 ADDED
@@ -0,0 +1,76 @@
1
+ .ie \n(.g .ds Aq \(aq
2
+ .el .ds Aq '
3
+ .TH BCA-INIT 1 "big-code-analysis 2.0.0" "big-code-analysis Manual"
4
+ .SH NAME
5
+ bca\-init \- Scaffold the canonical adoption files (`bca.toml` manifest, `.bcaignore`, `.bca\-baseline.toml`) in the current directory. Replaces the six\-step copy\-paste flow from the book\*(Aqs adoption recipe. Refuses to overwrite existing files without `\-\-force`
6
+ .SH SYNOPSIS
7
+ \fBbca\-init\fR [\fB\-p\fR|\fB\-\-paths\fR] [\fB\-I\fR|\fB\-\-include\fR] [\fB\-X\fR|\fB\-\-exclude\fR] [\fB\-l\fR|\fB\-\-language\fR] [\fB\-\-no\-skip\-generated\fR] [\fB\-\-paths\-from\fR] [\fB\-\-exclude\-from\fR] [\fB\-\-no\-ignore\fR] [\fB\-\-no\-config\fR] [\fB\-j\fR|\fB\-\-jobs\fR] [\fB\-\-exclude\-tests\fR] [\fB\-\-cyclomatic\-count\-try\fR] [\fB\-\-preproc\-data\fR] [\fB\-\-dir\fR] [\fB\-\-force\fR] [\fB\-\-no\-baseline\fR] [\fB\-h\fR|\fB\-\-help\fR]
8
+ .SH DESCRIPTION
9
+ Scaffold the canonical adoption files (`bca.toml` manifest, `.bcaignore`, `.bca\-baseline.toml`) in the current directory. Replaces the six\-step copy\-paste flow from the book\*(Aqs adoption recipe. Refuses to overwrite existing files without `\-\-force`
10
+ .SH OPTIONS
11
+ .TP
12
+ \fB\-\-dir\fR \fI<DIR>\fR
13
+ Directory to scaffold into. Defaults to the current working directory. The directory must already exist; `init` will not create the project root itself
14
+ .TP
15
+ \fB\-\-force\fR
16
+ Overwrite any of the canonical files that already exist. Default: refuse to clobber, listing which files block
17
+ .TP
18
+ \fB\-\-no\-baseline\fR
19
+ Skip the baseline\-generation pass. The written `.bca\-baseline.toml` is then an empty placeholder; the user can populate it later with `bca check \-\-write\-baseline .bca\-baseline.toml`. Default: walk the target directory and pin today\*(Aqs offenders
20
+ .TP
21
+ \fB\-h\fR, \fB\-\-help\fR
22
+ Print help (see a summary with \*(Aq\-h\*(Aq)
23
+ .SH "INPUT SELECTION"
24
+ .TP
25
+ \fB\-p\fR, \fB\-\-paths\fR \fI<PATHS>\fR
26
+ Input files or directories to analyze. Unioned with any positional `[PATHS]`. Defaults to the current directory (`.`) when omitted and no manifest `paths` is set; an explicitly\-given path that does not exist is an error (exit 1)
27
+ .TP
28
+ \fB\-I\fR, \fB\-\-include\fR \fI<INCLUDE>\fR
29
+ Glob to include files. Repeat the flag to add multiple globs (`\-I \*(Aq*.rs\*(Aq \-I \*(Aq*.toml\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent
30
+ .TP
31
+ \fB\-X\fR, \fB\-\-exclude\fR \fI<EXCLUDE>\fR
32
+ Glob to exclude files. Repeat the flag to add multiple globs (`\-X \*(Aq*.tmp\*(Aq \-X \*(Aq*.bak\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent. CLI values are *merged with* (unioned, not a replacement for) any `bca.toml` `exclude` list and any `\-\-exclude\-from` patterns, so a CLI `\-\-exclude` never silently un\-excludes a directory the project config deliberately skipped. Pass `\-\-no\-config` to ignore the manifest entirely
33
+ .TP
34
+ \fB\-l\fR, \fB\-\-language\fR \fI<LANGUAGE>\fR
35
+ Force a language instead of inferring from extension. Accepts a canonical language name (`rust`, `python`, `cpp`, …) or a file extension (`rs`, `py`, …). An unrecognized value is a hard error
36
+ .TP
37
+ \fB\-\-no\-skip\-generated\fR
38
+ Disable auto\-skip of files marked as generated (e.g. `@generated`, `DO NOT EDIT`, `GENERATED CODE` near the top). By default the CLI skips such files so generated bindings do not skew metrics
39
+ .TP
40
+ \fB\-\-paths\-from\fR \fI<PATHS_FROM>\fR
41
+ Read newline\-separated input paths from a file. Use `\-` to read from stdin. Combined as a union with any `\-\-paths` values; globs still apply. Blank lines are skipped; `#` is treated as a path character (not a comment). To pass a file literally named `\-`, use `./\-`
42
+ .TP
43
+ \fB\-\-exclude\-from\fR \fI<EXCLUDE_FROM>\fR
44
+ Read additional `\-\-exclude` glob patterns from a file (one per line, `.gitignore`\-style). Blank lines and lines whose first non\-whitespace character is `#` are skipped. Use `\-` to read from stdin; to pass a file literally named `\-`, use `./\-`. Patterns are unioned with any `\-\-exclude` values into a single deny\-set; order does not matter. Convention is a `.bcaignore` at the repo root, mirroring `.gitignore` / `.dockerignore`
45
+ .TP
46
+ \fB\-\-no\-ignore\fR
47
+ Disable `.gitignore` / `.ignore` / global gitignore awareness when expanding input directories. Explicit file paths are always honored regardless of this flag
48
+ .TP
49
+ \fB\-\-no\-config\fR
50
+ Skip auto\-discovery of a `bca.toml` manifest. By default `bca` climbs from the working directory to the repo root looking for `bca.toml` and merges its keys *under* any explicit CLI flags. Pass this for raw, fully\-explicit invocations that must not pick up repo\-level config (e.g. a reproducible CI one\-liner). When no manifest is discovered this flag is a no\-op
51
+ .SH "WALKER TUNING"
52
+ .TP
53
+ \fB\-j\fR, \fB\-\-jobs\fR \fI<N|auto>\fR [default: auto]
54
+ Number of jobs.
55
+
56
+ Defaults to the effective CPU count as reported by the OS (cgroup\-quota\- and cpuset\-aware on Linux). Pass an explicit integer or `auto` to override. `\-\-jobs 1` forces serial mode for debugging. `\-\-num\-jobs` is kept as a hidden alias for one release cycle and is slated for removal in the next major.
57
+ .TP
58
+ \fB\-\-exclude\-tests\fR
59
+ Exclude inline test code from metric computation. Currently applies to Rust only (skips `#[test]`, `#[cfg(test)]`, `#[tokio::test]`, `#[rstest]`, `#![cfg(test)]` items and their subtrees). Default is off — every node is counted, so numbers stay byte\-for\-byte stable. Languages without a test\-subtree skip rule ignore this flag
60
+ .TP
61
+ \fB\-\-cyclomatic\-count\-try\fR[=\fI<BOOL>\fR]
62
+ Whether Rust\*(Aqs `?` operator (the `try_expression` node) contributes to cyclomatic complexity (standard and modified). Defaults to `true` — `?` counts +1, matching upstream rust\-code\-analysis and every published metric value. Pass `\-\-cyclomatic\-count\-try=false` to treat `?` as linear error propagation — useful when cyclomatic is used as a maintainability gate that should not penalize fallible\-but\-linear code. Rust\-only: no other language emits the node, so the flag is inert elsewhere. Mirrors the `cyclomatic_count_try` manifest key; the CLI value overrides the manifest in either direction
63
+ .br
64
+
65
+ .br
66
+ \fIPossible values:\fR
67
+ .RS 14
68
+ .IP \(bu 2
69
+ true
70
+ .IP \(bu 2
71
+ false
72
+ .RE
73
+ .SH PREPROCESSOR
74
+ .TP
75
+ \fB\-\-preproc\-data\fR \fI<PREPROC_DATA>\fR
76
+ Existing preprocessor\-data JSON to consume during C/C++ analysis. Use `bca preproc` to produce one
man/bca-list-metrics.1 ADDED
@@ -0,0 +1,26 @@
1
+ .ie \n(.g .ds Aq \(aq
2
+ .el .ds Aq '
3
+ .TH BCA-LIST-METRICS 1 "big-code-analysis 2.0.0" "big-code-analysis Manual"
4
+ .SH NAME
5
+ bca\-list\-metrics \- List the metrics this tool can compute and exit
6
+ .SH SYNOPSIS
7
+ \fBbca\-list\-metrics\fR [\fB\-h\fR|\fB\-\-help\fR] [\fIMODE\fR]
8
+ .SH DESCRIPTION
9
+ List the metrics this tool can compute and exit
10
+ .SH OPTIONS
11
+ .TP
12
+ \fB\-h\fR, \fB\-\-help\fR
13
+ Print help (see a summary with \*(Aq\-h\*(Aq)
14
+ .TP
15
+ [\fIMODE\fR] [default: names]
16
+ What to print: `names` (one per line) or `descriptions` (name + one\-line summary)
17
+ .br
18
+
19
+ .br
20
+ \fIPossible values:\fR
21
+ .RS 14
22
+ .IP \(bu 2
23
+ names: Print metric names, one per line
24
+ .IP \(bu 2
25
+ descriptions: Print metric names alongside short descriptions
26
+ .RE
man/bca-metrics.1 ADDED
@@ -0,0 +1,125 @@
1
+ .ie \n(.g .ds Aq \(aq
2
+ .el .ds Aq '
3
+ .TH BCA-METRICS 1 "big-code-analysis 2.0.0" "big-code-analysis Manual"
4
+ .SH NAME
5
+ bca\-metrics \- Compute per\-file metrics and emit them in a structured format
6
+ .SH SYNOPSIS
7
+ \fBbca\-metrics\fR [\fB\-p\fR|\fB\-\-paths\fR] [\fB\-I\fR|\fB\-\-include\fR] [\fB\-X\fR|\fB\-\-exclude\fR] [\fB\-l\fR|\fB\-\-language\fR] [\fB\-\-no\-skip\-generated\fR] [\fB\-\-paths\-from\fR] [\fB\-\-exclude\-from\fR] [\fB\-\-no\-ignore\fR] [\fB\-\-no\-config\fR] [\fB\-j\fR|\fB\-\-jobs\fR] [\fB\-\-exclude\-tests\fR] [\fB\-\-cyclomatic\-count\-try\fR] [\fB\-\-preproc\-data\fR] [\fB\-\-color\fR] [\fB\-O\fR|\fB\-\-format\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-output\-dir\fR] [\fB\-\-pretty\fR] [\fB\-\-metrics\fR] [\fB\-\-vcs\fR] [\fB\-\-vcs\-per\-function\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fIPATHS\fR]
8
+ .SH DESCRIPTION
9
+ Compute per\-file metrics and emit them in a structured format
10
+ .SH OPTIONS
11
+ .TP
12
+ \fB\-O\fR, \fB\-\-format\fR \fI<FORMAT>\fR
13
+ Output format. When omitted, the default `text` format prints a human\-readable colored tree to stdout (`metrics` shows the metric tree, `ops` the operator/operand tree); pass `\-\-format text` to request that default explicitly (e.g. to override a `bca.toml` that set a structured format). `json` / `yaml` / `toml` / `cbor` / `csv` emit structured per\-file data. `\-\-output\-format` is accepted as a deprecated alias; it is hidden from help and slated for removal in 2.0
14
+ .br
15
+
16
+ .br
17
+ \fIPossible values:\fR
18
+ .RS 14
19
+ .IP \(bu 2
20
+ text: Human\-readable colored tree printed to stdout (`metrics` shows the metric tree, `ops` the operator/operand tree) — the default when `\-\-format` is omitted. Selecting it explicitly produces byte\-identical output to omitting the flag, so it is the way to request the default in a script or to override a `bca.toml` that set a structured format. It only ever streams to stdout, so unlike the structured serializers it has no file destination: pairing it with `\-\-output`/`\-\-output\-dir` is a hard error, not a silent no\-op — pass a structured `\-\-format` to write files
21
+ .IP \(bu 2
22
+ cbor
23
+ .IP \(bu 2
24
+ csv
25
+ .IP \(bu 2
26
+ json
27
+ .IP \(bu 2
28
+ toml
29
+ .IP \(bu 2
30
+ yaml
31
+ .RE
32
+ .TP
33
+ \fB\-o\fR, \fB\-\-output\fR \fI<OUTPUT>\fR
34
+ Output file. Writes one aggregate document (a top\-level array of the per\-file results; TOML wraps it under a `files` key) for the whole run. Stdout if omitted (CBOR requires this flag). Use `\-\-output\-dir` for the per\-file directory tree; passing both is an error
35
+ .TP
36
+ \fB\-\-output\-dir\fR \fI<OUTPUT_DIR>\fR
37
+ Output directory. Writes one document per input file, named by the input path plus the format extension. Mutually exclusive with `\-\-output` (which writes a single aggregate file)
38
+ .TP
39
+ \fB\-\-pretty\fR
40
+ Pretty\-print JSON / TOML output
41
+ .TP
42
+ \fB\-\-metrics\fR \fI<NAME>\fR
43
+ Restrict computation to this comma\-separated and/or repeated set of metrics (`\-\-metrics cyclomatic,cognitive \-\-metrics loc`). Names are the canonical ids `bca list\-metrics` prints — the same vocabulary `bca check \-\-threshold` and `bca diff \-\-metric` use; dotted (`cyclomatic.modified`) and bare `loc` sub\-metric (`sloc`) spellings are accepted too. An unknown name errors (exit 1) with a "did you mean" hint. Derived metrics auto\-pull their dependencies (selecting `mi` also computes `loc` / `cyclomatic` / `halstead`). When omitted, every metric is computed
44
+ .TP
45
+ \fB\-\-vcs\fR
46
+ Also compute change\-history (VCS) metrics and attach a `vcs` block — plus a `hotspot_score` (cyclomatic × recent churn) — to each file\*(Aqs metrics. Uses default windows (12mo / 90d, weighted formula); for window / formula tuning use `bca vcs`. Outside a git working tree this opt\-in is skipped with a warning (the AST metrics still emit, without the `vcs` block)
47
+ .TP
48
+ \fB\-\-vcs\-per\-function\fR
49
+ Additionally attach a `vcs` block to every nested function / method / class space, via `git blame` of each file\*(Aqs surviving lines. Implies `\-\-vcs`. The per\-function numbers are a current\-blame snapshot — `churn` is surviving\-line count, not the file\-level added+deleted churn — so they rank functions within a file but are not directly comparable to the file block. Costs one blame per file; skipped (with a warning) outside a git working tree
50
+ .TP
51
+ \fB\-h\fR, \fB\-\-help\fR
52
+ Print help (see a summary with \*(Aq\-h\*(Aq)
53
+ .SH "INPUT SELECTION"
54
+ .TP
55
+ \fB\-p\fR, \fB\-\-paths\fR \fI<PATHS>\fR
56
+ Input files or directories to analyze. Unioned with any positional `[PATHS]`. Defaults to the current directory (`.`) when omitted and no manifest `paths` is set; an explicitly\-given path that does not exist is an error (exit 1)
57
+ .TP
58
+ \fB\-I\fR, \fB\-\-include\fR \fI<INCLUDE>\fR
59
+ Glob to include files. Repeat the flag to add multiple globs (`\-I \*(Aq*.rs\*(Aq \-I \*(Aq*.toml\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent
60
+ .TP
61
+ \fB\-X\fR, \fB\-\-exclude\fR \fI<EXCLUDE>\fR
62
+ Glob to exclude files. Repeat the flag to add multiple globs (`\-X \*(Aq*.tmp\*(Aq \-X \*(Aq*.bak\*(Aq`); each occurrence takes exactly one value, so a positional argument that follows is never swallowed. A leading `./` is optional: `dir/**` and `./dir/**` are equivalent. CLI values are *merged with* (unioned, not a replacement for) any `bca.toml` `exclude` list and any `\-\-exclude\-from` patterns, so a CLI `\-\-exclude` never silently un\-excludes a directory the project config deliberately skipped. Pass `\-\-no\-config` to ignore the manifest entirely
63
+ .TP
64
+ \fB\-l\fR, \fB\-\-language\fR \fI<LANGUAGE>\fR
65
+ Force a language instead of inferring from extension. Accepts a canonical language name (`rust`, `python`, `cpp`, …) or a file extension (`rs`, `py`, …). An unrecognized value is a hard error
66
+ .TP
67
+ \fB\-\-no\-skip\-generated\fR
68
+ Disable auto\-skip of files marked as generated (e.g. `@generated`, `DO NOT EDIT`, `GENERATED CODE` near the top). By default the CLI skips such files so generated bindings do not skew metrics
69
+ .TP
70
+ \fB\-\-paths\-from\fR \fI<PATHS_FROM>\fR
71
+ Read newline\-separated input paths from a file. Use `\-` to read from stdin. Combined as a union with any `\-\-paths` values; globs still apply. Blank lines are skipped; `#` is treated as a path character (not a comment). To pass a file literally named `\-`, use `./\-`
72
+ .TP
73
+ \fB\-\-exclude\-from\fR \fI<EXCLUDE_FROM>\fR
74
+ Read additional `\-\-exclude` glob patterns from a file (one per line, `.gitignore`\-style). Blank lines and lines whose first non\-whitespace character is `#` are skipped. Use `\-` to read from stdin; to pass a file literally named `\-`, use `./\-`. Patterns are unioned with any `\-\-exclude` values into a single deny\-set; order does not matter. Convention is a `.bcaignore` at the repo root, mirroring `.gitignore` / `.dockerignore`
75
+ .TP
76
+ \fB\-\-no\-ignore\fR
77
+ Disable `.gitignore` / `.ignore` / global gitignore awareness when expanding input directories. Explicit file paths are always honored regardless of this flag
78
+ .TP
79
+ \fB\-\-no\-config\fR
80
+ Skip auto\-discovery of a `bca.toml` manifest. By default `bca` climbs from the working directory to the repo root looking for `bca.toml` and merges its keys *under* any explicit CLI flags. Pass this for raw, fully\-explicit invocations that must not pick up repo\-level config (e.g. a reproducible CI one\-liner). When no manifest is discovered this flag is a no\-op
81
+ .TP
82
+ [\fIPATHS\fR]
83
+ Input files or directories to analyze, given positionally (`bca metrics src/ tests/`). Unioned with any `\-\-paths`/`\-p` values
84
+ .SH "WALKER TUNING"
85
+ .TP
86
+ \fB\-j\fR, \fB\-\-jobs\fR \fI<N|auto>\fR [default: auto]
87
+ Number of jobs.
88
+
89
+ Defaults to the effective CPU count as reported by the OS (cgroup\-quota\- and cpuset\-aware on Linux). Pass an explicit integer or `auto` to override. `\-\-jobs 1` forces serial mode for debugging. `\-\-num\-jobs` is kept as a hidden alias for one release cycle and is slated for removal in the next major.
90
+ .TP
91
+ \fB\-\-exclude\-tests\fR
92
+ Exclude inline test code from metric computation. Currently applies to Rust only (skips `#[test]`, `#[cfg(test)]`, `#[tokio::test]`, `#[rstest]`, `#![cfg(test)]` items and their subtrees). Default is off — every node is counted, so numbers stay byte\-for\-byte stable. Languages without a test\-subtree skip rule ignore this flag
93
+ .TP
94
+ \fB\-\-cyclomatic\-count\-try\fR[=\fI<BOOL>\fR]
95
+ Whether Rust\*(Aqs `?` operator (the `try_expression` node) contributes to cyclomatic complexity (standard and modified). Defaults to `true` — `?` counts +1, matching upstream rust\-code\-analysis and every published metric value. Pass `\-\-cyclomatic\-count\-try=false` to treat `?` as linear error propagation — useful when cyclomatic is used as a maintainability gate that should not penalize fallible\-but\-linear code. Rust\-only: no other language emits the node, so the flag is inert elsewhere. Mirrors the `cyclomatic_count_try` manifest key; the CLI value overrides the manifest in either direction
96
+ .br
97
+
98
+ .br
99
+ \fIPossible values:\fR
100
+ .RS 14
101
+ .IP \(bu 2
102
+ true
103
+ .IP \(bu 2
104
+ false
105
+ .RE
106
+ .SH PREPROCESSOR
107
+ .TP
108
+ \fB\-\-preproc\-data\fR \fI<PREPROC_DATA>\fR
109
+ Existing preprocessor\-data JSON to consume during C/C++ analysis. Use `bca preproc` to produce one
110
+ .SH OUTPUT
111
+ .TP
112
+ \fB\-\-color\fR \fI<WHEN>\fR [default: auto]
113
+ When to colorize the human\-readable `text` dumps (`metrics` / `ops` default tree, `dump`, `find`, `functions`): `auto` (default — color only when stdout is a terminal and `NO_COLOR` is unset), `always` (force escapes even when piped/redirected), or `never` (plain text). Structured formats (`json` / `yaml` / `toml` / `cbor` / `csv`) and file output are never colorized. Honors the `NO_COLOR` convention (<https://no\-color.org>) unless `\-\-color always` overrides it
114
+ .br
115
+
116
+ .br
117
+ \fIPossible values:\fR
118
+ .RS 14
119
+ .IP \(bu 2
120
+ auto: Color when stdout is a terminal and `NO_COLOR` is unset
121
+ .IP \(bu 2
122
+ always: Always emit color, even when piped or redirected
123
+ .IP \(bu 2
124
+ never: Never emit color
125
+ .RE