big-code-analysis-cli 2.0.0__py3-none-manylinux_2_28_aarch64.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.
- big_code_analysis_cli-2.0.0.data/scripts/bca +0 -0
- big_code_analysis_cli-2.0.0.dist-info/METADATA +195 -0
- big_code_analysis_cli-2.0.0.dist-info/RECORD +26 -0
- big_code_analysis_cli-2.0.0.dist-info/WHEEL +4 -0
- big_code_analysis_cli-2.0.0.dist-info/licenses/LICENSE +355 -0
- big_code_analysis_cli-2.0.0.dist-info/licenses/THIRD-PARTY-LICENSES-bca.md +5463 -0
- big_code_analysis_cli-2.0.0.dist-info/sboms/big-code-analysis-cli.cyclonedx.json +8288 -0
- man/bca-check.1 +208 -0
- man/bca-count.1 +73 -0
- man/bca-diff-baseline.1 +55 -0
- man/bca-diff.1 +104 -0
- man/bca-dump.1 +92 -0
- man/bca-exemptions.1 +109 -0
- man/bca-find.1 +95 -0
- man/bca-functions.1 +86 -0
- man/bca-init.1 +76 -0
- man/bca-list-metrics.1 +26 -0
- man/bca-metrics.1 +125 -0
- man/bca-ops.1 +116 -0
- man/bca-preproc.1 +69 -0
- man/bca-report.1 +105 -0
- man/bca-strip-comments.1 +76 -0
- man/bca-vcs-commit.1 +45 -0
- man/bca-vcs-trend.1 +43 -0
- man/bca-vcs.1 +173 -0
- man/bca.1 +93 -0
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
|