fallow 3.31.0 → 3.33.0
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.
- package/README.md +17 -10
- package/capabilities.json +420 -172
- package/issue-registry.json +190 -154
- package/package.json +12 -12
- package/schema.json +36 -1
- package/scripts/lazy-verify.js +14 -2
- package/scripts/lazy-verify.test.js +6 -4
- package/scripts/run-binary.js +7 -1
- package/scripts/run-binary.test.js +71 -12
- package/skills/fallow/SKILL.md +35 -11
- package/skills/fallow/references/cli-reference.md +155 -44
- package/skills/fallow/references/gotchas.md +22 -14
- package/skills/fallow/references/issue-types.md +3 -2
- package/skills/fallow/references/mcp.md +19 -6
- package/skills/fallow/references/node-bindings.md +9 -3
- package/skills/fallow/references/patterns.md +43 -15
- package/skills/fallow-setup/SKILL.md +50 -0
- package/skills/fallow-setup/agents/openai.yaml +4 -0
- package/skills/fallow-setup/references/ci-gate.md +61 -0
- package/skills/fallow-setup/references/configure-and-install.md +56 -0
- package/skills/fallow-setup/references/tooling-detection.md +44 -0
- package/types/output-contract.d.ts +1528 -211
package/capabilities.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.33.0",
|
|
4
4
|
"manifest_version": "1",
|
|
5
5
|
"description": "Codebase analyzer for TypeScript/JavaScript: unused code, circular dependencies, code duplication, complexity hotspots, and architecture boundary violations",
|
|
6
6
|
"global_flags": [
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
"name": "--baseline",
|
|
143
143
|
"type": "string",
|
|
144
144
|
"required": false,
|
|
145
|
-
"description": "Compare against a previously saved baseline file. Used by bare `fallow`, `dead-code`, `dupes` and `health`; other subcommands reject it"
|
|
145
|
+
"description": "Compare against a previously saved baseline file. Used by bare `fallow`, `dead-code`, `architecture`, `dupes` and `health`; other subcommands reject it"
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
148
|
"name": "--baseline-mode",
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
"name": "--save-baseline",
|
|
165
165
|
"type": "string",
|
|
166
166
|
"required": false,
|
|
167
|
-
"description": "Save the current results as a baseline file. Used by bare `fallow`, `dead-code`, `dupes` and `health`; other subcommands reject it. The path must resolve inside the project root, its Git work tree, the CI workspace or a temp directory"
|
|
167
|
+
"description": "Save the current results as a baseline file. Used by bare `fallow`, `dead-code`, `architecture`, `dupes` and `health`; other subcommands reject it. The path must resolve inside the project root, its Git work tree, the CI workspace or a temp directory"
|
|
168
168
|
},
|
|
169
169
|
{
|
|
170
170
|
"name": "--production",
|
|
@@ -241,6 +241,12 @@
|
|
|
241
241
|
"section"
|
|
242
242
|
]
|
|
243
243
|
},
|
|
244
|
+
{
|
|
245
|
+
"name": "--group",
|
|
246
|
+
"type": "string",
|
|
247
|
+
"required": false,
|
|
248
|
+
"description": "Keep only the matching groups of a `--group-by` health run. Accepts exact group keys, glob patterns, and `!`-prefixed negations. Values can be comma-separated or repeated. Project-level sections are not filtered. Supported by `fallow health` only"
|
|
249
|
+
},
|
|
244
250
|
{
|
|
245
251
|
"name": "--performance",
|
|
246
252
|
"type": "bool",
|
|
@@ -305,7 +311,7 @@
|
|
|
305
311
|
"name": "--sarif-file",
|
|
306
312
|
"type": "string",
|
|
307
313
|
"required": false,
|
|
308
|
-
"description": "Write SARIF output to a file (in addition to the primary --format output). Used by bare `fallow`, `dead-code` and `security`. The path must resolve inside the project root, its Git work tree, the CI workspace or a temp directory"
|
|
314
|
+
"description": "Write SARIF output to a file (in addition to the primary --format output). Used by bare `fallow`, `dead-code`, `architecture` and `security`. The path must resolve inside the project root, its Git work tree, the CI workspace or a temp directory"
|
|
309
315
|
},
|
|
310
316
|
{
|
|
311
317
|
"name": "--output-file",
|
|
@@ -393,7 +399,8 @@
|
|
|
393
399
|
"possible_values": [
|
|
394
400
|
"dead-code",
|
|
395
401
|
"dupes",
|
|
396
|
-
"health"
|
|
402
|
+
"health",
|
|
403
|
+
"architecture"
|
|
397
404
|
]
|
|
398
405
|
},
|
|
399
406
|
{
|
|
@@ -404,7 +411,8 @@
|
|
|
404
411
|
"possible_values": [
|
|
405
412
|
"dead-code",
|
|
406
413
|
"dupes",
|
|
407
|
-
"health"
|
|
414
|
+
"health",
|
|
415
|
+
"architecture"
|
|
408
416
|
]
|
|
409
417
|
},
|
|
410
418
|
{
|
|
@@ -493,6 +501,26 @@
|
|
|
493
501
|
"false"
|
|
494
502
|
]
|
|
495
503
|
},
|
|
504
|
+
{
|
|
505
|
+
"name": "--dupes-ignore-symlinks",
|
|
506
|
+
"type": "bool",
|
|
507
|
+
"required": false,
|
|
508
|
+
"description": "Omit clone instances whose path is a symlink, or lies under a symlinked directory, in combined mode",
|
|
509
|
+
"possible_values": [
|
|
510
|
+
"true",
|
|
511
|
+
"false"
|
|
512
|
+
]
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"name": "--dupes-no-ignore-symlinks",
|
|
516
|
+
"type": "bool",
|
|
517
|
+
"required": false,
|
|
518
|
+
"description": "Report symlinked clone instances in combined mode (opt out of a config `duplicates.ignoreSymlinks: true`)",
|
|
519
|
+
"possible_values": [
|
|
520
|
+
"true",
|
|
521
|
+
"false"
|
|
522
|
+
]
|
|
523
|
+
},
|
|
496
524
|
{
|
|
497
525
|
"name": "--score",
|
|
498
526
|
"type": "bool",
|
|
@@ -513,6 +541,12 @@
|
|
|
513
541
|
"false"
|
|
514
542
|
]
|
|
515
543
|
},
|
|
544
|
+
{
|
|
545
|
+
"name": "--trend-from",
|
|
546
|
+
"type": "string",
|
|
547
|
+
"required": false,
|
|
548
|
+
"description": "Compare current health metrics against this snapshot file in combined mode. Implies --trend and --score"
|
|
549
|
+
},
|
|
516
550
|
{
|
|
517
551
|
"name": "--save-snapshot",
|
|
518
552
|
"type": "string",
|
|
@@ -553,6 +587,16 @@
|
|
|
553
587
|
"false"
|
|
554
588
|
]
|
|
555
589
|
},
|
|
590
|
+
{
|
|
591
|
+
"name": "--show-cascade",
|
|
592
|
+
"type": "bool",
|
|
593
|
+
"required": false,
|
|
594
|
+
"description": "Also report the unused exports, types, class members and enum members of unused files. By default the report hides them, because deleting the file removes them, and counts them in `cascade_hidden`",
|
|
595
|
+
"possible_values": [
|
|
596
|
+
"true",
|
|
597
|
+
"false"
|
|
598
|
+
]
|
|
599
|
+
},
|
|
556
600
|
{
|
|
557
601
|
"name": "--type-aware",
|
|
558
602
|
"type": "bool",
|
|
@@ -593,7 +637,7 @@
|
|
|
593
637
|
"commands": [
|
|
594
638
|
{
|
|
595
639
|
"name": "dead-code",
|
|
596
|
-
"description": "Analyze project for unused code and
|
|
640
|
+
"description": "Analyze project for unused code and dependency hygiene",
|
|
597
641
|
"flags": [
|
|
598
642
|
{
|
|
599
643
|
"name": "--unused-files",
|
|
@@ -715,6 +759,16 @@
|
|
|
715
759
|
"false"
|
|
716
760
|
]
|
|
717
761
|
},
|
|
762
|
+
{
|
|
763
|
+
"name": "--absent-component-props",
|
|
764
|
+
"type": "bool",
|
|
765
|
+
"required": false,
|
|
766
|
+
"description": "Review optional props omitted by known reachable callers (enables this rule)",
|
|
767
|
+
"possible_values": [
|
|
768
|
+
"true",
|
|
769
|
+
"false"
|
|
770
|
+
]
|
|
771
|
+
},
|
|
718
772
|
{
|
|
719
773
|
"name": "--unused-component-emits",
|
|
720
774
|
"type": "bool",
|
|
@@ -809,7 +863,7 @@
|
|
|
809
863
|
"name": "--circular-deps",
|
|
810
864
|
"type": "bool",
|
|
811
865
|
"required": false,
|
|
812
|
-
"description": "Only report circular dependencies",
|
|
866
|
+
"description": "Only report circular dependencies. Deprecated alias: use `fallow architecture --cycles`",
|
|
813
867
|
"possible_values": [
|
|
814
868
|
"true",
|
|
815
869
|
"false"
|
|
@@ -819,7 +873,7 @@
|
|
|
819
873
|
"name": "--re-export-cycles",
|
|
820
874
|
"type": "bool",
|
|
821
875
|
"required": false,
|
|
822
|
-
"description": "Only report re-export cycles",
|
|
876
|
+
"description": "Only report re-export cycles. Deprecated alias: use `fallow architecture --cycles`",
|
|
823
877
|
"possible_values": [
|
|
824
878
|
"true",
|
|
825
879
|
"false"
|
|
@@ -829,7 +883,7 @@
|
|
|
829
883
|
"name": "--package-cycles",
|
|
830
884
|
"type": "bool",
|
|
831
885
|
"required": false,
|
|
832
|
-
"description": "Only report dependency cycles between workspace packages",
|
|
886
|
+
"description": "Only report dependency cycles between workspace packages. Deprecated alias: use `fallow architecture --cycles`",
|
|
833
887
|
"possible_values": [
|
|
834
888
|
"true",
|
|
835
889
|
"false"
|
|
@@ -839,7 +893,7 @@
|
|
|
839
893
|
"name": "--boundary-violations",
|
|
840
894
|
"type": "bool",
|
|
841
895
|
"required": false,
|
|
842
|
-
"description": "Only report boundary violations",
|
|
896
|
+
"description": "Only report boundary violations. Deprecated alias: use `fallow architecture --boundaries`",
|
|
843
897
|
"possible_values": [
|
|
844
898
|
"true",
|
|
845
899
|
"false"
|
|
@@ -849,7 +903,7 @@
|
|
|
849
903
|
"name": "--policy-violations",
|
|
850
904
|
"type": "bool",
|
|
851
905
|
"required": false,
|
|
852
|
-
"description": "Only report rule-pack policy violations",
|
|
906
|
+
"description": "Only report rule-pack policy violations. Deprecated alias: use `fallow architecture --policy`",
|
|
853
907
|
"possible_values": [
|
|
854
908
|
"true",
|
|
855
909
|
"false"
|
|
@@ -981,6 +1035,60 @@
|
|
|
981
1035
|
}
|
|
982
1036
|
]
|
|
983
1037
|
},
|
|
1038
|
+
{
|
|
1039
|
+
"name": "architecture",
|
|
1040
|
+
"description": "Check import cycles, boundaries and policy rules after editing",
|
|
1041
|
+
"flags": [
|
|
1042
|
+
{
|
|
1043
|
+
"name": "--cycles",
|
|
1044
|
+
"type": "bool",
|
|
1045
|
+
"required": false,
|
|
1046
|
+
"description": "Only report import cycles: circular dependencies, re-export cycles and package cycles",
|
|
1047
|
+
"possible_values": [
|
|
1048
|
+
"true",
|
|
1049
|
+
"false"
|
|
1050
|
+
]
|
|
1051
|
+
},
|
|
1052
|
+
{
|
|
1053
|
+
"name": "--boundaries",
|
|
1054
|
+
"type": "bool",
|
|
1055
|
+
"required": false,
|
|
1056
|
+
"description": "Only report boundary violations, boundary coverage and forbidden calls",
|
|
1057
|
+
"possible_values": [
|
|
1058
|
+
"true",
|
|
1059
|
+
"false"
|
|
1060
|
+
]
|
|
1061
|
+
},
|
|
1062
|
+
{
|
|
1063
|
+
"name": "--policy",
|
|
1064
|
+
"type": "bool",
|
|
1065
|
+
"required": false,
|
|
1066
|
+
"description": "Only report rule-pack policy violations",
|
|
1067
|
+
"possible_values": [
|
|
1068
|
+
"true",
|
|
1069
|
+
"false"
|
|
1070
|
+
]
|
|
1071
|
+
},
|
|
1072
|
+
{
|
|
1073
|
+
"name": "--file",
|
|
1074
|
+
"type": "string",
|
|
1075
|
+
"required": false,
|
|
1076
|
+
"description": "Only report issues in the specified file(s). Accepts multiple values. The full project graph is still built, but only issues in matching files are reported"
|
|
1077
|
+
},
|
|
1078
|
+
{
|
|
1079
|
+
"name": "--finding-id",
|
|
1080
|
+
"type": "string",
|
|
1081
|
+
"required": false,
|
|
1082
|
+
"description": "Only report the findings with these `finding_id` values. Repeat the flag or pass a comma-separated list"
|
|
1083
|
+
},
|
|
1084
|
+
{
|
|
1085
|
+
"name": "path",
|
|
1086
|
+
"type": "string",
|
|
1087
|
+
"required": false,
|
|
1088
|
+
"description": "Scope reported findings to this file or directory (default: whole project). The full project graph is still built; only reported items are narrowed"
|
|
1089
|
+
}
|
|
1090
|
+
]
|
|
1091
|
+
},
|
|
984
1092
|
{
|
|
985
1093
|
"name": "watch",
|
|
986
1094
|
"description": "Watch for changes and re-run analysis",
|
|
@@ -1089,7 +1197,41 @@
|
|
|
1089
1197
|
"name": "symbol",
|
|
1090
1198
|
"type": "string",
|
|
1091
1199
|
"required": false,
|
|
1092
|
-
"description": "Target symbol, formatted as FILE:SYMBOL (e.g. src/utils.ts:formatDate). Omitted when `--path` is used"
|
|
1200
|
+
"description": "Target symbol, formatted as FILE:SYMBOL (e.g. src/utils.ts:formatDate). Omitted when `--path` or `--dependency` is used"
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
"name": "--dependency",
|
|
1204
|
+
"type": "string",
|
|
1205
|
+
"required": false,
|
|
1206
|
+
"description": "How the code uses each imported name of a package: file and call counts, one hop through project wrappers, and a count of each use that the trace cannot resolve"
|
|
1207
|
+
},
|
|
1208
|
+
{
|
|
1209
|
+
"name": "--specifier",
|
|
1210
|
+
"type": "string",
|
|
1211
|
+
"required": false,
|
|
1212
|
+
"description": "With `--dependency`, report only these imported names (repeatable or comma-separated). Turns on the site page"
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
"name": "--sites",
|
|
1216
|
+
"type": "bool",
|
|
1217
|
+
"required": false,
|
|
1218
|
+
"description": "With `--dependency`, list the usage sites with file, line and column",
|
|
1219
|
+
"possible_values": [
|
|
1220
|
+
"true",
|
|
1221
|
+
"false"
|
|
1222
|
+
]
|
|
1223
|
+
},
|
|
1224
|
+
{
|
|
1225
|
+
"name": "--limit",
|
|
1226
|
+
"type": "string",
|
|
1227
|
+
"required": false,
|
|
1228
|
+
"description": "With `--dependency`, the largest number of sites on a page (1 to 500, default 50). Turns on the site page"
|
|
1229
|
+
},
|
|
1230
|
+
{
|
|
1231
|
+
"name": "--cursor",
|
|
1232
|
+
"type": "string",
|
|
1233
|
+
"required": false,
|
|
1234
|
+
"description": "With `--dependency`, the `next_cursor` of the previous page. Turns on the site page"
|
|
1093
1235
|
},
|
|
1094
1236
|
{
|
|
1095
1237
|
"name": "--path",
|
|
@@ -1481,6 +1623,26 @@
|
|
|
1481
1623
|
"false"
|
|
1482
1624
|
]
|
|
1483
1625
|
},
|
|
1626
|
+
{
|
|
1627
|
+
"name": "--ignore-symlinks",
|
|
1628
|
+
"type": "bool",
|
|
1629
|
+
"required": false,
|
|
1630
|
+
"description": "Omit clone instances whose path is a symlink, or lies under a symlinked directory. A clone group with fewer than two remaining instances is not reported. Without this flag, JSON output marks these instances with `is_symlink: true`",
|
|
1631
|
+
"possible_values": [
|
|
1632
|
+
"true",
|
|
1633
|
+
"false"
|
|
1634
|
+
]
|
|
1635
|
+
},
|
|
1636
|
+
{
|
|
1637
|
+
"name": "--no-ignore-symlinks",
|
|
1638
|
+
"type": "bool",
|
|
1639
|
+
"required": false,
|
|
1640
|
+
"description": "Report symlinked clone instances (opt out of a config `duplicates.ignoreSymlinks: true`)",
|
|
1641
|
+
"possible_values": [
|
|
1642
|
+
"true",
|
|
1643
|
+
"false"
|
|
1644
|
+
]
|
|
1645
|
+
},
|
|
1484
1646
|
{
|
|
1485
1647
|
"name": "--top",
|
|
1486
1648
|
"type": "string",
|
|
@@ -1730,6 +1892,12 @@
|
|
|
1730
1892
|
"false"
|
|
1731
1893
|
]
|
|
1732
1894
|
},
|
|
1895
|
+
{
|
|
1896
|
+
"name": "--trend-from",
|
|
1897
|
+
"type": "string",
|
|
1898
|
+
"required": false,
|
|
1899
|
+
"description": "Compare current metrics against this snapshot file instead of the newest file in `.fallow/snapshots/`. Use it to restore a baseline from external storage in CI. With --group-by, groups are compared by key when the snapshot holds the same grouping. Implies --trend"
|
|
1900
|
+
},
|
|
1733
1901
|
{
|
|
1734
1902
|
"name": "--coverage",
|
|
1735
1903
|
"type": "string",
|
|
@@ -2093,6 +2261,11 @@
|
|
|
2093
2261
|
"description": "Maintain reusable audit base-snapshot caches",
|
|
2094
2262
|
"flags": []
|
|
2095
2263
|
},
|
|
2264
|
+
{
|
|
2265
|
+
"name": "baselines",
|
|
2266
|
+
"description": "Maintain the committed baseline files that the config points at",
|
|
2267
|
+
"flags": []
|
|
2268
|
+
},
|
|
2096
2269
|
{
|
|
2097
2270
|
"name": "decision-surface",
|
|
2098
2271
|
"description": "Surface the consequential structural DECISIONS a change embeds (the apex of the review brief), each framed as a judgment question with the routed expert to ask",
|
|
@@ -2194,13 +2367,13 @@
|
|
|
2194
2367
|
},
|
|
2195
2368
|
{
|
|
2196
2369
|
"name": "report",
|
|
2197
|
-
"description": "Render a saved `--format json` results file in another format without re-running analysis (analyze once, then render every CI surface from the same file). Supports GitHub annotations/summary, CodeClimate, SARIF, and GitHub/GitLab PR-comment and review formats",
|
|
2370
|
+
"description": "Render a saved `--format json` results file in another format without re-running analysis (analyze once, then render every CI surface from the same file). Supports GitHub annotations/summary, CodeClimate, SARIF, markdown, and GitHub/GitLab PR-comment and review formats",
|
|
2198
2371
|
"flags": [
|
|
2199
2372
|
{
|
|
2200
2373
|
"name": "--from",
|
|
2201
2374
|
"type": "string",
|
|
2202
2375
|
"required": true,
|
|
2203
|
-
"description": "Path to a fallow JSON results file produced by `--format json` (dead-code, dupes, health, audit, security, or bare combined)"
|
|
2376
|
+
"description": "Path to a fallow JSON results file produced by `--format json` (dead-code, architecture, dupes, health, audit, security, or bare combined)"
|
|
2204
2377
|
}
|
|
2205
2378
|
]
|
|
2206
2379
|
},
|
|
@@ -2410,7 +2583,7 @@
|
|
|
2410
2583
|
"note": null,
|
|
2411
2584
|
"license": "free",
|
|
2412
2585
|
"license_note": null,
|
|
2413
|
-
"docs_url": "https://
|
|
2586
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-files"
|
|
2414
2587
|
},
|
|
2415
2588
|
{
|
|
2416
2589
|
"id": "unused-export",
|
|
@@ -2447,7 +2620,7 @@
|
|
|
2447
2620
|
"note": null,
|
|
2448
2621
|
"license": "free",
|
|
2449
2622
|
"license_note": null,
|
|
2450
|
-
"docs_url": "https://
|
|
2623
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-exports"
|
|
2451
2624
|
},
|
|
2452
2625
|
{
|
|
2453
2626
|
"id": "unused-type",
|
|
@@ -2481,7 +2654,7 @@
|
|
|
2481
2654
|
"note": null,
|
|
2482
2655
|
"license": "free",
|
|
2483
2656
|
"license_note": null,
|
|
2484
|
-
"docs_url": "https://
|
|
2657
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-types"
|
|
2485
2658
|
},
|
|
2486
2659
|
{
|
|
2487
2660
|
"id": "private-type-leak",
|
|
@@ -2518,7 +2691,7 @@
|
|
|
2518
2691
|
"note": "Opt-in API hygiene check; the rule defaults to off",
|
|
2519
2692
|
"license": "free",
|
|
2520
2693
|
"license_note": null,
|
|
2521
|
-
"docs_url": "https://
|
|
2694
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#private-type-leaks"
|
|
2522
2695
|
},
|
|
2523
2696
|
{
|
|
2524
2697
|
"id": "deprecated-export-in-use",
|
|
@@ -2555,7 +2728,7 @@
|
|
|
2555
2728
|
"note": "Opt-in migration sweep; the rule defaults to off",
|
|
2556
2729
|
"license": "free",
|
|
2557
2730
|
"license_note": null,
|
|
2558
|
-
"docs_url": "https://
|
|
2731
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#deprecated-exports-in-use"
|
|
2559
2732
|
},
|
|
2560
2733
|
{
|
|
2561
2734
|
"id": "unused-dependency",
|
|
@@ -2592,7 +2765,7 @@
|
|
|
2592
2765
|
"note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
|
|
2593
2766
|
"license": "free",
|
|
2594
2767
|
"license_note": null,
|
|
2595
|
-
"docs_url": "https://
|
|
2768
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-dependencies"
|
|
2596
2769
|
},
|
|
2597
2770
|
{
|
|
2598
2771
|
"id": "unused-dev-dependency",
|
|
@@ -2632,7 +2805,7 @@
|
|
|
2632
2805
|
"note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
|
|
2633
2806
|
"license": "free",
|
|
2634
2807
|
"license_note": null,
|
|
2635
|
-
"docs_url": "https://
|
|
2808
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-devdependencies"
|
|
2636
2809
|
},
|
|
2637
2810
|
{
|
|
2638
2811
|
"id": "unused-optional-dependency",
|
|
@@ -2672,7 +2845,7 @@
|
|
|
2672
2845
|
"note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
|
|
2673
2846
|
"license": "free",
|
|
2674
2847
|
"license_note": null,
|
|
2675
|
-
"docs_url": "https://
|
|
2848
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-optionaldependencies"
|
|
2676
2849
|
},
|
|
2677
2850
|
{
|
|
2678
2851
|
"id": "type-only-dependency",
|
|
@@ -2709,7 +2882,7 @@
|
|
|
2709
2882
|
"note": "Only reported in --production mode; --unused-deps scopes it together with the other dependency kinds",
|
|
2710
2883
|
"license": "free",
|
|
2711
2884
|
"license_note": null,
|
|
2712
|
-
"docs_url": "https://
|
|
2885
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#type-only-dependencies"
|
|
2713
2886
|
},
|
|
2714
2887
|
{
|
|
2715
2888
|
"id": "test-only-dependency",
|
|
@@ -2746,7 +2919,7 @@
|
|
|
2746
2919
|
"note": "Not reported in --production mode (test files are excluded there); --unused-deps scopes it together with the other dependency kinds",
|
|
2747
2920
|
"license": "free",
|
|
2748
2921
|
"license_note": null,
|
|
2749
|
-
"docs_url": "https://
|
|
2922
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#test-only-dependencies"
|
|
2750
2923
|
},
|
|
2751
2924
|
{
|
|
2752
2925
|
"id": "dev-dependency-in-production",
|
|
@@ -2783,7 +2956,7 @@
|
|
|
2783
2956
|
"note": null,
|
|
2784
2957
|
"license": "free",
|
|
2785
2958
|
"license_note": null,
|
|
2786
|
-
"docs_url": "https://
|
|
2959
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#dev-dependencies-in-production"
|
|
2787
2960
|
},
|
|
2788
2961
|
{
|
|
2789
2962
|
"id": "unused-enum-member",
|
|
@@ -2820,7 +2993,7 @@
|
|
|
2820
2993
|
"note": null,
|
|
2821
2994
|
"license": "free",
|
|
2822
2995
|
"license_note": null,
|
|
2823
|
-
"docs_url": "https://
|
|
2996
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-enum-members"
|
|
2824
2997
|
},
|
|
2825
2998
|
{
|
|
2826
2999
|
"id": "unused-class-member",
|
|
@@ -2857,7 +3030,7 @@
|
|
|
2857
3030
|
"note": null,
|
|
2858
3031
|
"license": "free",
|
|
2859
3032
|
"license_note": null,
|
|
2860
|
-
"docs_url": "https://
|
|
3033
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-class-members"
|
|
2861
3034
|
},
|
|
2862
3035
|
{
|
|
2863
3036
|
"id": "unused-store-member",
|
|
@@ -2896,7 +3069,7 @@
|
|
|
2896
3069
|
"note": null,
|
|
2897
3070
|
"license": "free",
|
|
2898
3071
|
"license_note": null,
|
|
2899
|
-
"docs_url": "https://
|
|
3072
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-store-members"
|
|
2900
3073
|
},
|
|
2901
3074
|
{
|
|
2902
3075
|
"id": "unresolved-import",
|
|
@@ -2933,7 +3106,7 @@
|
|
|
2933
3106
|
"note": null,
|
|
2934
3107
|
"license": "free",
|
|
2935
3108
|
"license_note": null,
|
|
2936
|
-
"docs_url": "https://
|
|
3109
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unresolved-imports"
|
|
2937
3110
|
},
|
|
2938
3111
|
{
|
|
2939
3112
|
"id": "unlisted-dependency",
|
|
@@ -2970,7 +3143,7 @@
|
|
|
2970
3143
|
"note": null,
|
|
2971
3144
|
"license": "free",
|
|
2972
3145
|
"license_note": null,
|
|
2973
|
-
"docs_url": "https://
|
|
3146
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unlisted-dependencies"
|
|
2974
3147
|
},
|
|
2975
3148
|
{
|
|
2976
3149
|
"id": "duplicate-export",
|
|
@@ -3007,7 +3180,7 @@
|
|
|
3007
3180
|
"note": "fallow fix can add an ignoreExports rule to the fallow config instead of editing source",
|
|
3008
3181
|
"license": "free",
|
|
3009
3182
|
"license_note": null,
|
|
3010
|
-
"docs_url": "https://
|
|
3183
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#duplicate-exports"
|
|
3011
3184
|
},
|
|
3012
3185
|
{
|
|
3013
3186
|
"id": "circular-dependency",
|
|
@@ -3046,7 +3219,7 @@
|
|
|
3046
3219
|
"note": null,
|
|
3047
3220
|
"license": "free",
|
|
3048
3221
|
"license_note": null,
|
|
3049
|
-
"docs_url": "https://
|
|
3222
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#circular-dependencies"
|
|
3050
3223
|
},
|
|
3051
3224
|
{
|
|
3052
3225
|
"id": "re-export-cycle",
|
|
@@ -3087,7 +3260,7 @@
|
|
|
3087
3260
|
"note": null,
|
|
3088
3261
|
"license": "free",
|
|
3089
3262
|
"license_note": null,
|
|
3090
|
-
"docs_url": "https://
|
|
3263
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#re-export-cycles"
|
|
3091
3264
|
},
|
|
3092
3265
|
{
|
|
3093
3266
|
"id": "package-cycle",
|
|
@@ -3126,7 +3299,7 @@
|
|
|
3126
3299
|
"note": "Requires a workspace with two or more packages",
|
|
3127
3300
|
"license": "free",
|
|
3128
3301
|
"license_note": null,
|
|
3129
|
-
"docs_url": "https://
|
|
3302
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#package-cycles"
|
|
3130
3303
|
},
|
|
3131
3304
|
{
|
|
3132
3305
|
"id": "boundary-violation",
|
|
@@ -3163,7 +3336,7 @@
|
|
|
3163
3336
|
"note": "Requires configured boundary zones (boundaries config)",
|
|
3164
3337
|
"license": "free",
|
|
3165
3338
|
"license_note": null,
|
|
3166
|
-
"docs_url": "https://
|
|
3339
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#boundary-violations"
|
|
3167
3340
|
},
|
|
3168
3341
|
{
|
|
3169
3342
|
"id": "boundary-coverage",
|
|
@@ -3199,7 +3372,7 @@
|
|
|
3199
3372
|
"note": "Requires boundaries.coverage.requireAllFiles",
|
|
3200
3373
|
"license": "free",
|
|
3201
3374
|
"license_note": null,
|
|
3202
|
-
"docs_url": "https://
|
|
3375
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#boundary-violations"
|
|
3203
3376
|
},
|
|
3204
3377
|
{
|
|
3205
3378
|
"id": "boundary-call-violation",
|
|
@@ -3236,14 +3409,14 @@
|
|
|
3236
3409
|
"note": "Requires boundaries.calls.forbidden patterns",
|
|
3237
3410
|
"license": "free",
|
|
3238
3411
|
"license_note": null,
|
|
3239
|
-
"docs_url": "https://
|
|
3412
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#boundary-violations"
|
|
3240
3413
|
},
|
|
3241
3414
|
{
|
|
3242
3415
|
"id": "policy-violation",
|
|
3243
3416
|
"rule_id": "fallow/policy-violation",
|
|
3244
3417
|
"command": "dead-code",
|
|
3245
3418
|
"category": "Policy",
|
|
3246
|
-
"description": "
|
|
3419
|
+
"description": "Usage violates a configured rule-pack policy",
|
|
3247
3420
|
"label": "Policy Violations",
|
|
3248
3421
|
"config_key": "policy-violation",
|
|
3249
3422
|
"registry_index": 24,
|
|
@@ -3272,7 +3445,7 @@
|
|
|
3272
3445
|
"note": "Requires a configured rule pack (rulePacks config)",
|
|
3273
3446
|
"license": "free",
|
|
3274
3447
|
"license_note": null,
|
|
3275
|
-
"docs_url": "https://
|
|
3448
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#policy-violations"
|
|
3276
3449
|
},
|
|
3277
3450
|
{
|
|
3278
3451
|
"id": "stale-suppression",
|
|
@@ -3282,7 +3455,7 @@
|
|
|
3282
3455
|
"description": "Suppression comment or tag no longer matches any issue",
|
|
3283
3456
|
"label": "Stale Suppressions",
|
|
3284
3457
|
"config_key": "stale-suppressions",
|
|
3285
|
-
"registry_index":
|
|
3458
|
+
"registry_index": 40,
|
|
3286
3459
|
"aliases": [],
|
|
3287
3460
|
"lsp": true,
|
|
3288
3461
|
"filter_flag": "--stale-suppressions",
|
|
@@ -3308,7 +3481,7 @@
|
|
|
3308
3481
|
"note": "Fix by removing the stale suppression marker itself",
|
|
3309
3482
|
"license": "free",
|
|
3310
3483
|
"license_note": null,
|
|
3311
|
-
"docs_url": "https://
|
|
3484
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#stale-suppressions"
|
|
3312
3485
|
},
|
|
3313
3486
|
{
|
|
3314
3487
|
"id": "missing-suppression-reason",
|
|
@@ -3318,7 +3491,7 @@
|
|
|
3318
3491
|
"description": "Suppression comment omits a required reason",
|
|
3319
3492
|
"label": "Missing Suppression Reasons",
|
|
3320
3493
|
"config_key": "require-suppression-reason",
|
|
3321
|
-
"registry_index":
|
|
3494
|
+
"registry_index": 41,
|
|
3322
3495
|
"aliases": [
|
|
3323
3496
|
"missing-suppression-reasons"
|
|
3324
3497
|
],
|
|
@@ -3340,7 +3513,7 @@
|
|
|
3340
3513
|
"note": null,
|
|
3341
3514
|
"license": "free",
|
|
3342
3515
|
"license_note": null,
|
|
3343
|
-
"docs_url": "https://
|
|
3516
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#stale-suppressions"
|
|
3344
3517
|
},
|
|
3345
3518
|
{
|
|
3346
3519
|
"id": "unused-catalog-entry",
|
|
@@ -3350,7 +3523,7 @@
|
|
|
3350
3523
|
"description": "Catalog entry not referenced by any workspace package",
|
|
3351
3524
|
"label": "Unused Catalog Entries",
|
|
3352
3525
|
"config_key": "unused-catalog-entries",
|
|
3353
|
-
"registry_index":
|
|
3526
|
+
"registry_index": 42,
|
|
3354
3527
|
"aliases": [
|
|
3355
3528
|
"catalog",
|
|
3356
3529
|
"unused-catalog-entries"
|
|
@@ -3380,7 +3553,7 @@
|
|
|
3380
3553
|
"note": null,
|
|
3381
3554
|
"license": "free",
|
|
3382
3555
|
"license_note": null,
|
|
3383
|
-
"docs_url": "https://
|
|
3556
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-catalog-entries"
|
|
3384
3557
|
},
|
|
3385
3558
|
{
|
|
3386
3559
|
"id": "empty-catalog-group",
|
|
@@ -3390,7 +3563,7 @@
|
|
|
3390
3563
|
"description": "Named catalog group has no entries",
|
|
3391
3564
|
"label": "Empty Catalog Groups",
|
|
3392
3565
|
"config_key": "empty-catalog-groups",
|
|
3393
|
-
"registry_index":
|
|
3566
|
+
"registry_index": 43,
|
|
3394
3567
|
"aliases": [
|
|
3395
3568
|
"empty-catalog",
|
|
3396
3569
|
"empty-catalog-groups"
|
|
@@ -3420,7 +3593,7 @@
|
|
|
3420
3593
|
"note": null,
|
|
3421
3594
|
"license": "free",
|
|
3422
3595
|
"license_note": null,
|
|
3423
|
-
"docs_url": "https://
|
|
3596
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#empty-catalog-groups"
|
|
3424
3597
|
},
|
|
3425
3598
|
{
|
|
3426
3599
|
"id": "unresolved-catalog-reference",
|
|
@@ -3430,7 +3603,7 @@
|
|
|
3430
3603
|
"description": "package.json references a catalog that does not declare the package",
|
|
3431
3604
|
"label": "Unresolved Catalog References",
|
|
3432
3605
|
"config_key": "unresolved-catalog-references",
|
|
3433
|
-
"registry_index":
|
|
3606
|
+
"registry_index": 44,
|
|
3434
3607
|
"aliases": [
|
|
3435
3608
|
"unresolved-catalog",
|
|
3436
3609
|
"unresolved-catalog-references"
|
|
@@ -3460,7 +3633,7 @@
|
|
|
3460
3633
|
"note": null,
|
|
3461
3634
|
"license": "free",
|
|
3462
3635
|
"license_note": null,
|
|
3463
|
-
"docs_url": "https://
|
|
3636
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unresolved-catalog-references"
|
|
3464
3637
|
},
|
|
3465
3638
|
{
|
|
3466
3639
|
"id": "unused-dependency-override",
|
|
@@ -3470,7 +3643,7 @@
|
|
|
3470
3643
|
"description": "Package-manager override target is not declared or resolved",
|
|
3471
3644
|
"label": "Unused Dependency Overrides",
|
|
3472
3645
|
"config_key": "unused-dependency-overrides",
|
|
3473
|
-
"registry_index":
|
|
3646
|
+
"registry_index": 45,
|
|
3474
3647
|
"aliases": [
|
|
3475
3648
|
"unused-dependency-overrides",
|
|
3476
3649
|
"unused-override",
|
|
@@ -3501,7 +3674,7 @@
|
|
|
3501
3674
|
"note": null,
|
|
3502
3675
|
"license": "free",
|
|
3503
3676
|
"license_note": null,
|
|
3504
|
-
"docs_url": "https://
|
|
3677
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-dependency-overrides"
|
|
3505
3678
|
},
|
|
3506
3679
|
{
|
|
3507
3680
|
"id": "misconfigured-dependency-override",
|
|
@@ -3511,7 +3684,7 @@
|
|
|
3511
3684
|
"description": "Package-manager override has an unparsable key or value",
|
|
3512
3685
|
"label": "Misconfigured Dependency Overrides",
|
|
3513
3686
|
"config_key": "misconfigured-dependency-overrides",
|
|
3514
|
-
"registry_index":
|
|
3687
|
+
"registry_index": 46,
|
|
3515
3688
|
"aliases": [
|
|
3516
3689
|
"misconfigured-dependency-overrides",
|
|
3517
3690
|
"misconfigured-override",
|
|
@@ -3542,7 +3715,7 @@
|
|
|
3542
3715
|
"note": null,
|
|
3543
3716
|
"license": "free",
|
|
3544
3717
|
"license_note": null,
|
|
3545
|
-
"docs_url": "https://
|
|
3718
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#misconfigured-dependency-overrides"
|
|
3546
3719
|
},
|
|
3547
3720
|
{
|
|
3548
3721
|
"id": "invalid-client-export",
|
|
@@ -3580,7 +3753,7 @@
|
|
|
3580
3753
|
"note": "Requires the project to declare next",
|
|
3581
3754
|
"license": "free",
|
|
3582
3755
|
"license_note": null,
|
|
3583
|
-
"docs_url": "https://
|
|
3756
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#invalid-client-exports"
|
|
3584
3757
|
},
|
|
3585
3758
|
{
|
|
3586
3759
|
"id": "mixed-client-server-barrel",
|
|
@@ -3616,7 +3789,7 @@
|
|
|
3616
3789
|
"note": "Requires the project to declare next",
|
|
3617
3790
|
"license": "free",
|
|
3618
3791
|
"license_note": null,
|
|
3619
|
-
"docs_url": "https://
|
|
3792
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#mixed-client-server-barrels"
|
|
3620
3793
|
},
|
|
3621
3794
|
{
|
|
3622
3795
|
"id": "misplaced-directive",
|
|
@@ -3652,7 +3825,7 @@
|
|
|
3652
3825
|
"note": "Requires the project to declare next",
|
|
3653
3826
|
"license": "free",
|
|
3654
3827
|
"license_note": null,
|
|
3655
|
-
"docs_url": "https://
|
|
3828
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#misplaced-directives"
|
|
3656
3829
|
},
|
|
3657
3830
|
{
|
|
3658
3831
|
"id": "unprovided-inject",
|
|
@@ -3670,7 +3843,7 @@
|
|
|
3670
3843
|
"filter_flag": "--unprovided-injects",
|
|
3671
3844
|
"result_key": "unprovided_injects",
|
|
3672
3845
|
"summary_label": "Unprovided injects",
|
|
3673
|
-
"summary_docs_anchor": "unprovided-
|
|
3846
|
+
"summary_docs_anchor": "unprovided-injects",
|
|
3674
3847
|
"sarif_rule_ids": [
|
|
3675
3848
|
"fallow/unprovided-inject"
|
|
3676
3849
|
],
|
|
@@ -3688,7 +3861,7 @@
|
|
|
3688
3861
|
"note": null,
|
|
3689
3862
|
"license": "free",
|
|
3690
3863
|
"license_note": null,
|
|
3691
|
-
"docs_url": "https://
|
|
3864
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unprovided-injects"
|
|
3692
3865
|
},
|
|
3693
3866
|
{
|
|
3694
3867
|
"id": "unrendered-component",
|
|
@@ -3706,7 +3879,7 @@
|
|
|
3706
3879
|
"filter_flag": "--unrendered-components",
|
|
3707
3880
|
"result_key": "unrendered_components",
|
|
3708
3881
|
"summary_label": "Unrendered components",
|
|
3709
|
-
"summary_docs_anchor": "unrendered-
|
|
3882
|
+
"summary_docs_anchor": "unrendered-components",
|
|
3710
3883
|
"sarif_rule_ids": [
|
|
3711
3884
|
"fallow/unrendered-component"
|
|
3712
3885
|
],
|
|
@@ -3724,7 +3897,43 @@
|
|
|
3724
3897
|
"note": null,
|
|
3725
3898
|
"license": "free",
|
|
3726
3899
|
"license_note": null,
|
|
3727
|
-
"docs_url": "https://
|
|
3900
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unrendered-components"
|
|
3901
|
+
},
|
|
3902
|
+
{
|
|
3903
|
+
"id": "absent-component-prop",
|
|
3904
|
+
"rule_id": "fallow/absent-component-prop",
|
|
3905
|
+
"command": "dead-code",
|
|
3906
|
+
"category": "Dead code",
|
|
3907
|
+
"description": "Known reachable callers omit an optional prop consumed inside its component",
|
|
3908
|
+
"label": "Absent Optional Component Props",
|
|
3909
|
+
"config_key": "absent-component-props",
|
|
3910
|
+
"registry_index": 31,
|
|
3911
|
+
"aliases": [
|
|
3912
|
+
"absent-component-props"
|
|
3913
|
+
],
|
|
3914
|
+
"lsp": true,
|
|
3915
|
+
"filter_flag": "--absent-component-props",
|
|
3916
|
+
"result_key": "absent_component_props",
|
|
3917
|
+
"summary_label": "Absent optional component props",
|
|
3918
|
+
"summary_docs_anchor": "absent-component-props",
|
|
3919
|
+
"sarif_rule_ids": [
|
|
3920
|
+
"fallow/absent-component-prop"
|
|
3921
|
+
],
|
|
3922
|
+
"codeclimate_check_names": [
|
|
3923
|
+
"fallow/absent-component-prop"
|
|
3924
|
+
],
|
|
3925
|
+
"ts_alias": null,
|
|
3926
|
+
"counts_in_total": true,
|
|
3927
|
+
"fixable": false,
|
|
3928
|
+
"suppressible": true,
|
|
3929
|
+
"suppress_comment": "// fallow-ignore-next-line absent-component-prop",
|
|
3930
|
+
"default_severity": "off",
|
|
3931
|
+
"opt_in": true,
|
|
3932
|
+
"frameworks": [],
|
|
3933
|
+
"note": "Opt-in manual review candidate; defaults to off. Inspect caller evidence and defaults before changing the component. No automatic fix.",
|
|
3934
|
+
"license": "free",
|
|
3935
|
+
"license_note": null,
|
|
3936
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#absent-component-props"
|
|
3728
3937
|
},
|
|
3729
3938
|
{
|
|
3730
3939
|
"id": "unused-component-prop",
|
|
@@ -3742,7 +3951,7 @@
|
|
|
3742
3951
|
"filter_flag": "--unused-component-props",
|
|
3743
3952
|
"result_key": "unused_component_props",
|
|
3744
3953
|
"summary_label": "Unused component props",
|
|
3745
|
-
"summary_docs_anchor": "unused-component-
|
|
3954
|
+
"summary_docs_anchor": "unused-component-props",
|
|
3746
3955
|
"sarif_rule_ids": [
|
|
3747
3956
|
"fallow/unused-component-prop"
|
|
3748
3957
|
],
|
|
@@ -3760,7 +3969,7 @@
|
|
|
3760
3969
|
"note": null,
|
|
3761
3970
|
"license": "free",
|
|
3762
3971
|
"license_note": null,
|
|
3763
|
-
"docs_url": "https://
|
|
3972
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-component-props"
|
|
3764
3973
|
},
|
|
3765
3974
|
{
|
|
3766
3975
|
"id": "unused-component-emit",
|
|
@@ -3770,7 +3979,7 @@
|
|
|
3770
3979
|
"description": "A Vue <script setup> defineEmits event is emitted nowhere in its own component",
|
|
3771
3980
|
"label": "Unused Component Emits",
|
|
3772
3981
|
"config_key": "unused-component-emits",
|
|
3773
|
-
"registry_index":
|
|
3982
|
+
"registry_index": 32,
|
|
3774
3983
|
"aliases": [
|
|
3775
3984
|
"unused-component-emits"
|
|
3776
3985
|
],
|
|
@@ -3778,7 +3987,7 @@
|
|
|
3778
3987
|
"filter_flag": "--unused-component-emits",
|
|
3779
3988
|
"result_key": "unused_component_emits",
|
|
3780
3989
|
"summary_label": "Unused component emits",
|
|
3781
|
-
"summary_docs_anchor": "unused-component-
|
|
3990
|
+
"summary_docs_anchor": "unused-component-emits",
|
|
3782
3991
|
"sarif_rule_ids": [
|
|
3783
3992
|
"fallow/unused-component-emit"
|
|
3784
3993
|
],
|
|
@@ -3796,7 +4005,7 @@
|
|
|
3796
4005
|
"note": null,
|
|
3797
4006
|
"license": "free",
|
|
3798
4007
|
"license_note": null,
|
|
3799
|
-
"docs_url": "https://
|
|
4008
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-component-emits"
|
|
3800
4009
|
},
|
|
3801
4010
|
{
|
|
3802
4011
|
"id": "unused-component-input",
|
|
@@ -3806,7 +4015,7 @@
|
|
|
3806
4015
|
"description": "An Angular @Input() / signal input() / model() input is read nowhere in its own component",
|
|
3807
4016
|
"label": "Unused Component Inputs",
|
|
3808
4017
|
"config_key": "unused-component-inputs",
|
|
3809
|
-
"registry_index":
|
|
4018
|
+
"registry_index": 33,
|
|
3810
4019
|
"aliases": [
|
|
3811
4020
|
"unused-component-inputs"
|
|
3812
4021
|
],
|
|
@@ -3814,7 +4023,7 @@
|
|
|
3814
4023
|
"filter_flag": "--unused-component-inputs",
|
|
3815
4024
|
"result_key": "unused_component_inputs",
|
|
3816
4025
|
"summary_label": "Unused component inputs",
|
|
3817
|
-
"summary_docs_anchor": "unused-component-
|
|
4026
|
+
"summary_docs_anchor": "unused-component-inputs",
|
|
3818
4027
|
"sarif_rule_ids": [
|
|
3819
4028
|
"fallow/unused-component-input"
|
|
3820
4029
|
],
|
|
@@ -3832,7 +4041,7 @@
|
|
|
3832
4041
|
"note": null,
|
|
3833
4042
|
"license": "free",
|
|
3834
4043
|
"license_note": null,
|
|
3835
|
-
"docs_url": "https://
|
|
4044
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-component-inputs"
|
|
3836
4045
|
},
|
|
3837
4046
|
{
|
|
3838
4047
|
"id": "unused-component-output",
|
|
@@ -3842,7 +4051,7 @@
|
|
|
3842
4051
|
"description": "An Angular @Output() / signal output() output is emitted nowhere in its own component",
|
|
3843
4052
|
"label": "Unused Component Outputs",
|
|
3844
4053
|
"config_key": "unused-component-outputs",
|
|
3845
|
-
"registry_index":
|
|
4054
|
+
"registry_index": 34,
|
|
3846
4055
|
"aliases": [
|
|
3847
4056
|
"unused-component-outputs"
|
|
3848
4057
|
],
|
|
@@ -3850,7 +4059,7 @@
|
|
|
3850
4059
|
"filter_flag": "--unused-component-outputs",
|
|
3851
4060
|
"result_key": "unused_component_outputs",
|
|
3852
4061
|
"summary_label": "Unused component outputs",
|
|
3853
|
-
"summary_docs_anchor": "unused-component-
|
|
4062
|
+
"summary_docs_anchor": "unused-component-outputs",
|
|
3854
4063
|
"sarif_rule_ids": [
|
|
3855
4064
|
"fallow/unused-component-output"
|
|
3856
4065
|
],
|
|
@@ -3868,7 +4077,7 @@
|
|
|
3868
4077
|
"note": null,
|
|
3869
4078
|
"license": "free",
|
|
3870
4079
|
"license_note": null,
|
|
3871
|
-
"docs_url": "https://
|
|
4080
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-component-outputs"
|
|
3872
4081
|
},
|
|
3873
4082
|
{
|
|
3874
4083
|
"id": "unused-svelte-event",
|
|
@@ -3878,7 +4087,7 @@
|
|
|
3878
4087
|
"description": "A Svelte component dispatches a createEventDispatcher event whose name is listened to nowhere in the project",
|
|
3879
4088
|
"label": "Unused Svelte Events",
|
|
3880
4089
|
"config_key": "unused-svelte-events",
|
|
3881
|
-
"registry_index":
|
|
4090
|
+
"registry_index": 35,
|
|
3882
4091
|
"aliases": [
|
|
3883
4092
|
"unused-svelte-events"
|
|
3884
4093
|
],
|
|
@@ -3886,7 +4095,7 @@
|
|
|
3886
4095
|
"filter_flag": "--unused-svelte-events",
|
|
3887
4096
|
"result_key": "unused_svelte_events",
|
|
3888
4097
|
"summary_label": "Unused Svelte events",
|
|
3889
|
-
"summary_docs_anchor": "unused-svelte-
|
|
4098
|
+
"summary_docs_anchor": "unused-svelte-events",
|
|
3890
4099
|
"sarif_rule_ids": [
|
|
3891
4100
|
"fallow/unused-svelte-event"
|
|
3892
4101
|
],
|
|
@@ -3904,7 +4113,7 @@
|
|
|
3904
4113
|
"note": null,
|
|
3905
4114
|
"license": "free",
|
|
3906
4115
|
"license_note": null,
|
|
3907
|
-
"docs_url": "https://
|
|
4116
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-svelte-events"
|
|
3908
4117
|
},
|
|
3909
4118
|
{
|
|
3910
4119
|
"id": "unused-server-action",
|
|
@@ -3914,7 +4123,7 @@
|
|
|
3914
4123
|
"description": "A Next.js Server Action exported from a \"use server\" file is referenced by no code in the project",
|
|
3915
4124
|
"label": "Unused Server Actions",
|
|
3916
4125
|
"config_key": "unused-server-actions",
|
|
3917
|
-
"registry_index":
|
|
4126
|
+
"registry_index": 36,
|
|
3918
4127
|
"aliases": [
|
|
3919
4128
|
"unused-server-actions"
|
|
3920
4129
|
],
|
|
@@ -3922,7 +4131,7 @@
|
|
|
3922
4131
|
"filter_flag": "--unused-server-actions",
|
|
3923
4132
|
"result_key": "unused_server_actions",
|
|
3924
4133
|
"summary_label": "Unused server actions",
|
|
3925
|
-
"summary_docs_anchor": "unused-server-
|
|
4134
|
+
"summary_docs_anchor": "unused-server-actions",
|
|
3926
4135
|
"sarif_rule_ids": [
|
|
3927
4136
|
"fallow/unused-server-action"
|
|
3928
4137
|
],
|
|
@@ -3940,7 +4149,7 @@
|
|
|
3940
4149
|
"note": null,
|
|
3941
4150
|
"license": "free",
|
|
3942
4151
|
"license_note": null,
|
|
3943
|
-
"docs_url": "https://
|
|
4152
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-server-actions"
|
|
3944
4153
|
},
|
|
3945
4154
|
{
|
|
3946
4155
|
"id": "unused-load-data-key",
|
|
@@ -3950,7 +4159,7 @@
|
|
|
3950
4159
|
"description": "A SvelteKit load() return-object key is read by no consumer",
|
|
3951
4160
|
"label": "Unused Load Data Keys",
|
|
3952
4161
|
"config_key": "unused-load-data-keys",
|
|
3953
|
-
"registry_index":
|
|
4162
|
+
"registry_index": 37,
|
|
3954
4163
|
"aliases": [
|
|
3955
4164
|
"unused-load-data-keys"
|
|
3956
4165
|
],
|
|
@@ -3958,7 +4167,7 @@
|
|
|
3958
4167
|
"filter_flag": "--unused-load-data-keys",
|
|
3959
4168
|
"result_key": "unused_load_data_keys",
|
|
3960
4169
|
"summary_label": "Unused load data keys",
|
|
3961
|
-
"summary_docs_anchor": "unused-load-data-
|
|
4170
|
+
"summary_docs_anchor": "unused-load-data-keys",
|
|
3962
4171
|
"sarif_rule_ids": [
|
|
3963
4172
|
"fallow/unused-load-data-key"
|
|
3964
4173
|
],
|
|
@@ -3976,7 +4185,7 @@
|
|
|
3976
4185
|
"note": null,
|
|
3977
4186
|
"license": "free",
|
|
3978
4187
|
"license_note": null,
|
|
3979
|
-
"docs_url": "https://
|
|
4188
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-load-data-keys"
|
|
3980
4189
|
},
|
|
3981
4190
|
{
|
|
3982
4191
|
"id": "prop-drilling",
|
|
@@ -3986,7 +4195,7 @@
|
|
|
3986
4195
|
"description": "A React/Preact prop is forwarded unchanged through 3+ pass-through components to a distant consumer",
|
|
3987
4196
|
"label": "Prop Drilling",
|
|
3988
4197
|
"config_key": "prop-drilling",
|
|
3989
|
-
"registry_index":
|
|
4198
|
+
"registry_index": 52,
|
|
3990
4199
|
"aliases": [],
|
|
3991
4200
|
"lsp": true,
|
|
3992
4201
|
"filter_flag": null,
|
|
@@ -4008,7 +4217,7 @@
|
|
|
4008
4217
|
"note": "Opt-in: set rules.prop-drilling to warn or error to enable. Defaults to off.",
|
|
4009
4218
|
"license": "free",
|
|
4010
4219
|
"license_note": null,
|
|
4011
|
-
"docs_url": "https://
|
|
4220
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#prop-drilling"
|
|
4012
4221
|
},
|
|
4013
4222
|
{
|
|
4014
4223
|
"id": "thin-wrapper",
|
|
@@ -4018,7 +4227,7 @@
|
|
|
4018
4227
|
"description": "A React/Preact component whose whole body is a single spread-forwarded child render (a candidate for inlining)",
|
|
4019
4228
|
"label": "Thin Wrappers",
|
|
4020
4229
|
"config_key": "thin-wrapper",
|
|
4021
|
-
"registry_index":
|
|
4230
|
+
"registry_index": 53,
|
|
4022
4231
|
"aliases": [
|
|
4023
4232
|
"thin-wrappers"
|
|
4024
4233
|
],
|
|
@@ -4042,7 +4251,7 @@
|
|
|
4042
4251
|
"note": "Opt-in: set rules.thin-wrapper to warn or error to enable. Defaults to off.",
|
|
4043
4252
|
"license": "free",
|
|
4044
4253
|
"license_note": null,
|
|
4045
|
-
"docs_url": "https://
|
|
4254
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#thin-wrapper"
|
|
4046
4255
|
},
|
|
4047
4256
|
{
|
|
4048
4257
|
"id": "duplicate-prop-shape",
|
|
@@ -4052,7 +4261,7 @@
|
|
|
4052
4261
|
"description": "Three or more React/Preact components across two or more files declare an identical prop-name set (a missing shared Props type)",
|
|
4053
4262
|
"label": "Duplicate Prop Shapes",
|
|
4054
4263
|
"config_key": "duplicate-prop-shape",
|
|
4055
|
-
"registry_index":
|
|
4264
|
+
"registry_index": 54,
|
|
4056
4265
|
"aliases": [
|
|
4057
4266
|
"duplicate-prop-shapes"
|
|
4058
4267
|
],
|
|
@@ -4076,7 +4285,7 @@
|
|
|
4076
4285
|
"note": "Opt-in: set rules.duplicate-prop-shape to warn or error to enable. Defaults to off.",
|
|
4077
4286
|
"license": "free",
|
|
4078
4287
|
"license_note": null,
|
|
4079
|
-
"docs_url": "https://
|
|
4288
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#duplicate-prop-shape"
|
|
4080
4289
|
},
|
|
4081
4290
|
{
|
|
4082
4291
|
"id": "route-collision",
|
|
@@ -4086,7 +4295,7 @@
|
|
|
4086
4295
|
"description": "Two or more Next.js App Router route files resolve to the same URL",
|
|
4087
4296
|
"label": "Route Collisions",
|
|
4088
4297
|
"config_key": "route-collision",
|
|
4089
|
-
"registry_index":
|
|
4298
|
+
"registry_index": 38,
|
|
4090
4299
|
"aliases": [
|
|
4091
4300
|
"route-collisions"
|
|
4092
4301
|
],
|
|
@@ -4114,7 +4323,7 @@
|
|
|
4114
4323
|
"note": null,
|
|
4115
4324
|
"license": "free",
|
|
4116
4325
|
"license_note": null,
|
|
4117
|
-
"docs_url": "https://
|
|
4326
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#route-collisions"
|
|
4118
4327
|
},
|
|
4119
4328
|
{
|
|
4120
4329
|
"id": "dynamic-segment-name-conflict",
|
|
@@ -4124,7 +4333,7 @@
|
|
|
4124
4333
|
"description": "Sibling Next.js dynamic route segments use different slug names at the same position",
|
|
4125
4334
|
"label": "Dynamic Segment Conflicts",
|
|
4126
4335
|
"config_key": "dynamic-segment-name-conflict",
|
|
4127
|
-
"registry_index":
|
|
4336
|
+
"registry_index": 39,
|
|
4128
4337
|
"aliases": [
|
|
4129
4338
|
"dynamic-segment-name-conflicts"
|
|
4130
4339
|
],
|
|
@@ -4152,7 +4361,7 @@
|
|
|
4152
4361
|
"note": null,
|
|
4153
4362
|
"license": "free",
|
|
4154
4363
|
"license_note": null,
|
|
4155
|
-
"docs_url": "https://
|
|
4364
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#dynamic-segment-name-conflicts"
|
|
4156
4365
|
},
|
|
4157
4366
|
{
|
|
4158
4367
|
"id": "high-cyclomatic-complexity",
|
|
@@ -4182,7 +4391,7 @@
|
|
|
4182
4391
|
"note": null,
|
|
4183
4392
|
"license": "free",
|
|
4184
4393
|
"license_note": null,
|
|
4185
|
-
"docs_url": "https://
|
|
4394
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#cyclomatic-complexity"
|
|
4186
4395
|
},
|
|
4187
4396
|
{
|
|
4188
4397
|
"id": "high-cognitive-complexity",
|
|
@@ -4212,7 +4421,7 @@
|
|
|
4212
4421
|
"note": null,
|
|
4213
4422
|
"license": "free",
|
|
4214
4423
|
"license_note": null,
|
|
4215
|
-
"docs_url": "https://
|
|
4424
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#cognitive-complexity"
|
|
4216
4425
|
},
|
|
4217
4426
|
{
|
|
4218
4427
|
"id": "high-complexity",
|
|
@@ -4242,7 +4451,7 @@
|
|
|
4242
4451
|
"note": null,
|
|
4243
4452
|
"license": "free",
|
|
4244
4453
|
"license_note": null,
|
|
4245
|
-
"docs_url": "https://
|
|
4454
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#complexity-metrics"
|
|
4246
4455
|
},
|
|
4247
4456
|
{
|
|
4248
4457
|
"id": "high-crap-score",
|
|
@@ -4272,7 +4481,7 @@
|
|
|
4272
4481
|
"note": null,
|
|
4273
4482
|
"license": "free",
|
|
4274
4483
|
"license_note": null,
|
|
4275
|
-
"docs_url": "https://
|
|
4484
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#crap-score"
|
|
4276
4485
|
},
|
|
4277
4486
|
{
|
|
4278
4487
|
"id": "refactoring-target",
|
|
@@ -4302,7 +4511,7 @@
|
|
|
4302
4511
|
"note": null,
|
|
4303
4512
|
"license": "free",
|
|
4304
4513
|
"license_note": null,
|
|
4305
|
-
"docs_url": "https://
|
|
4514
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#refactoring-targets"
|
|
4306
4515
|
},
|
|
4307
4516
|
{
|
|
4308
4517
|
"id": "css-token-drift",
|
|
@@ -4312,7 +4521,7 @@
|
|
|
4312
4521
|
"description": "CSS or CSS-in-JS hardcoded styling value bypasses the design token system",
|
|
4313
4522
|
"label": "CSS Token Drift",
|
|
4314
4523
|
"config_key": "css-token-drift",
|
|
4315
|
-
"registry_index":
|
|
4524
|
+
"registry_index": 55,
|
|
4316
4525
|
"aliases": [],
|
|
4317
4526
|
"lsp": false,
|
|
4318
4527
|
"filter_flag": null,
|
|
@@ -4332,7 +4541,7 @@
|
|
|
4332
4541
|
"note": null,
|
|
4333
4542
|
"license": "free",
|
|
4334
4543
|
"license_note": null,
|
|
4335
|
-
"docs_url": "https://
|
|
4544
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#css-token-drift"
|
|
4336
4545
|
},
|
|
4337
4546
|
{
|
|
4338
4547
|
"id": "css-duplicate-block",
|
|
@@ -4342,7 +4551,7 @@
|
|
|
4342
4551
|
"description": "CSS or CSS-in-JS declaration block is duplicated across rules",
|
|
4343
4552
|
"label": "CSS Duplicate Block",
|
|
4344
4553
|
"config_key": "css-duplicate-block",
|
|
4345
|
-
"registry_index":
|
|
4554
|
+
"registry_index": 56,
|
|
4346
4555
|
"aliases": [],
|
|
4347
4556
|
"lsp": false,
|
|
4348
4557
|
"filter_flag": null,
|
|
@@ -4362,7 +4571,7 @@
|
|
|
4362
4571
|
"note": null,
|
|
4363
4572
|
"license": "free",
|
|
4364
4573
|
"license_note": null,
|
|
4365
|
-
"docs_url": "https://
|
|
4574
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#css-duplicate-block"
|
|
4366
4575
|
},
|
|
4367
4576
|
{
|
|
4368
4577
|
"id": "css-selector-complexity",
|
|
@@ -4372,7 +4581,7 @@
|
|
|
4372
4581
|
"description": "CSS selector, nesting, or important usage is structurally complex",
|
|
4373
4582
|
"label": "CSS Selector Complexity",
|
|
4374
4583
|
"config_key": "css-selector-complexity",
|
|
4375
|
-
"registry_index":
|
|
4584
|
+
"registry_index": 57,
|
|
4376
4585
|
"aliases": [],
|
|
4377
4586
|
"lsp": false,
|
|
4378
4587
|
"filter_flag": null,
|
|
@@ -4392,7 +4601,7 @@
|
|
|
4392
4601
|
"note": null,
|
|
4393
4602
|
"license": "free",
|
|
4394
4603
|
"license_note": null,
|
|
4395
|
-
"docs_url": "https://
|
|
4604
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#css-selector-complexity"
|
|
4396
4605
|
},
|
|
4397
4606
|
{
|
|
4398
4607
|
"id": "css-dead-surface",
|
|
@@ -4402,7 +4611,7 @@
|
|
|
4402
4611
|
"description": "CSS or CSS-in-JS surface appears unused",
|
|
4403
4612
|
"label": "CSS Dead Surface",
|
|
4404
4613
|
"config_key": "css-dead-surface",
|
|
4405
|
-
"registry_index":
|
|
4614
|
+
"registry_index": 58,
|
|
4406
4615
|
"aliases": [],
|
|
4407
4616
|
"lsp": false,
|
|
4408
4617
|
"filter_flag": null,
|
|
@@ -4422,7 +4631,7 @@
|
|
|
4422
4631
|
"note": null,
|
|
4423
4632
|
"license": "free",
|
|
4424
4633
|
"license_note": null,
|
|
4425
|
-
"docs_url": "https://
|
|
4634
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#css-dead-surface"
|
|
4426
4635
|
},
|
|
4427
4636
|
{
|
|
4428
4637
|
"id": "css-broken-reference",
|
|
@@ -4432,7 +4641,7 @@
|
|
|
4432
4641
|
"description": "CSS or CSS-in-JS reference resolves to no stylesheet definition",
|
|
4433
4642
|
"label": "CSS Broken Reference",
|
|
4434
4643
|
"config_key": "css-broken-reference",
|
|
4435
|
-
"registry_index":
|
|
4644
|
+
"registry_index": 59,
|
|
4436
4645
|
"aliases": [],
|
|
4437
4646
|
"lsp": false,
|
|
4438
4647
|
"filter_flag": null,
|
|
@@ -4452,7 +4661,7 @@
|
|
|
4452
4661
|
"note": null,
|
|
4453
4662
|
"license": "free",
|
|
4454
4663
|
"license_note": null,
|
|
4455
|
-
"docs_url": "https://
|
|
4664
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#css-broken-reference"
|
|
4456
4665
|
},
|
|
4457
4666
|
{
|
|
4458
4667
|
"id": "untested-file",
|
|
@@ -4482,7 +4691,7 @@
|
|
|
4482
4691
|
"note": null,
|
|
4483
4692
|
"license": "free",
|
|
4484
4693
|
"license_note": null,
|
|
4485
|
-
"docs_url": "https://
|
|
4694
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#coverage-gaps"
|
|
4486
4695
|
},
|
|
4487
4696
|
{
|
|
4488
4697
|
"id": "untested-export",
|
|
@@ -4512,7 +4721,7 @@
|
|
|
4512
4721
|
"note": null,
|
|
4513
4722
|
"license": "free",
|
|
4514
4723
|
"license_note": null,
|
|
4515
|
-
"docs_url": "https://
|
|
4724
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#coverage-gaps"
|
|
4516
4725
|
},
|
|
4517
4726
|
{
|
|
4518
4727
|
"id": "runtime-safe-to-delete",
|
|
@@ -4542,7 +4751,7 @@
|
|
|
4542
4751
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
4543
4752
|
"license": "freemium",
|
|
4544
4753
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4545
|
-
"docs_url": "https://
|
|
4754
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#runtime-coverage"
|
|
4546
4755
|
},
|
|
4547
4756
|
{
|
|
4548
4757
|
"id": "runtime-review-required",
|
|
@@ -4572,7 +4781,7 @@
|
|
|
4572
4781
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
4573
4782
|
"license": "freemium",
|
|
4574
4783
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4575
|
-
"docs_url": "https://
|
|
4784
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#runtime-coverage"
|
|
4576
4785
|
},
|
|
4577
4786
|
{
|
|
4578
4787
|
"id": "runtime-low-traffic",
|
|
@@ -4602,7 +4811,7 @@
|
|
|
4602
4811
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
4603
4812
|
"license": "freemium",
|
|
4604
4813
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4605
|
-
"docs_url": "https://
|
|
4814
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#runtime-coverage"
|
|
4606
4815
|
},
|
|
4607
4816
|
{
|
|
4608
4817
|
"id": "runtime-coverage-unavailable",
|
|
@@ -4632,7 +4841,7 @@
|
|
|
4632
4841
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
4633
4842
|
"license": "freemium",
|
|
4634
4843
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4635
|
-
"docs_url": "https://
|
|
4844
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#runtime-coverage"
|
|
4636
4845
|
},
|
|
4637
4846
|
{
|
|
4638
4847
|
"id": "runtime-coverage",
|
|
@@ -4662,7 +4871,7 @@
|
|
|
4662
4871
|
"note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
|
|
4663
4872
|
"license": "freemium",
|
|
4664
4873
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4665
|
-
"docs_url": "https://
|
|
4874
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#runtime-coverage"
|
|
4666
4875
|
},
|
|
4667
4876
|
{
|
|
4668
4877
|
"id": "coverage-intelligence-risky-change",
|
|
@@ -4692,7 +4901,7 @@
|
|
|
4692
4901
|
"note": "Produced by fallow coverage analyze",
|
|
4693
4902
|
"license": "freemium",
|
|
4694
4903
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4695
|
-
"docs_url": "https://
|
|
4904
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#coverage-intelligence"
|
|
4696
4905
|
},
|
|
4697
4906
|
{
|
|
4698
4907
|
"id": "coverage-intelligence-delete",
|
|
@@ -4722,7 +4931,7 @@
|
|
|
4722
4931
|
"note": "Produced by fallow coverage analyze",
|
|
4723
4932
|
"license": "freemium",
|
|
4724
4933
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4725
|
-
"docs_url": "https://
|
|
4934
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#coverage-intelligence"
|
|
4726
4935
|
},
|
|
4727
4936
|
{
|
|
4728
4937
|
"id": "coverage-intelligence-review",
|
|
@@ -4752,7 +4961,7 @@
|
|
|
4752
4961
|
"note": "Produced by fallow coverage analyze",
|
|
4753
4962
|
"license": "freemium",
|
|
4754
4963
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4755
|
-
"docs_url": "https://
|
|
4964
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#coverage-intelligence"
|
|
4756
4965
|
},
|
|
4757
4966
|
{
|
|
4758
4967
|
"id": "coverage-intelligence-refactor",
|
|
@@ -4782,7 +4991,7 @@
|
|
|
4782
4991
|
"note": "Produced by fallow coverage analyze",
|
|
4783
4992
|
"license": "freemium",
|
|
4784
4993
|
"license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
|
|
4785
|
-
"docs_url": "https://
|
|
4994
|
+
"docs_url": "https://fallow.tools/docs/explanations/health/#coverage-intelligence"
|
|
4786
4995
|
},
|
|
4787
4996
|
{
|
|
4788
4997
|
"id": "code-duplication",
|
|
@@ -4812,7 +5021,7 @@
|
|
|
4812
5021
|
"note": "Reported by fallow dupes (and bare fallow / fallow audit)",
|
|
4813
5022
|
"license": "free",
|
|
4814
5023
|
"license_note": null,
|
|
4815
|
-
"docs_url": "https://
|
|
5024
|
+
"docs_url": "https://fallow.tools/docs/explanations/duplication/#clone-groups"
|
|
4816
5025
|
},
|
|
4817
5026
|
{
|
|
4818
5027
|
"id": "feature-flag",
|
|
@@ -4822,7 +5031,7 @@
|
|
|
4822
5031
|
"description": "Detected feature flag pattern",
|
|
4823
5032
|
"label": "Feature Flags",
|
|
4824
5033
|
"config_key": "feature-flags",
|
|
4825
|
-
"registry_index":
|
|
5034
|
+
"registry_index": 50,
|
|
4826
5035
|
"aliases": [],
|
|
4827
5036
|
"lsp": false,
|
|
4828
5037
|
"filter_flag": null,
|
|
@@ -4842,7 +5051,7 @@
|
|
|
4842
5051
|
"note": "Reported by fallow flags",
|
|
4843
5052
|
"license": "free",
|
|
4844
5053
|
"license_note": null,
|
|
4845
|
-
"docs_url": "https://
|
|
5054
|
+
"docs_url": "https://fallow.tools/docs/cli/flags/"
|
|
4846
5055
|
},
|
|
4847
5056
|
{
|
|
4848
5057
|
"id": "flag-retirement-candidate",
|
|
@@ -4872,7 +5081,7 @@
|
|
|
4872
5081
|
"note": null,
|
|
4873
5082
|
"license": "free",
|
|
4874
5083
|
"license_note": null,
|
|
4875
|
-
"docs_url": "https://
|
|
5084
|
+
"docs_url": "https://fallow.tools/docs/cli/flags/#retirement-report"
|
|
4876
5085
|
},
|
|
4877
5086
|
{
|
|
4878
5087
|
"id": "tainted-sink",
|
|
@@ -4902,7 +5111,7 @@
|
|
|
4902
5111
|
"note": null,
|
|
4903
5112
|
"license": "free",
|
|
4904
5113
|
"license_note": null,
|
|
4905
|
-
"docs_url": "https://
|
|
5114
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
4906
5115
|
},
|
|
4907
5116
|
{
|
|
4908
5117
|
"id": "client-server-leak",
|
|
@@ -4932,7 +5141,7 @@
|
|
|
4932
5141
|
"note": null,
|
|
4933
5142
|
"license": "free",
|
|
4934
5143
|
"license_note": null,
|
|
4935
|
-
"docs_url": "https://
|
|
5144
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
4936
5145
|
},
|
|
4937
5146
|
{
|
|
4938
5147
|
"id": "hardcoded-secret",
|
|
@@ -4962,7 +5171,7 @@
|
|
|
4962
5171
|
"note": "Include-required category: enable via security.categories.include",
|
|
4963
5172
|
"license": "free",
|
|
4964
5173
|
"license_note": null,
|
|
4965
|
-
"docs_url": "https://
|
|
5174
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
4966
5175
|
},
|
|
4967
5176
|
{
|
|
4968
5177
|
"id": "dangerous-html",
|
|
@@ -4992,7 +5201,7 @@
|
|
|
4992
5201
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
4993
5202
|
"license": "free",
|
|
4994
5203
|
"license_note": null,
|
|
4995
|
-
"docs_url": "https://
|
|
5204
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
4996
5205
|
},
|
|
4997
5206
|
{
|
|
4998
5207
|
"id": "template-escape-bypass",
|
|
@@ -5022,7 +5231,7 @@
|
|
|
5022
5231
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5023
5232
|
"license": "free",
|
|
5024
5233
|
"license_note": null,
|
|
5025
|
-
"docs_url": "https://
|
|
5234
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5026
5235
|
},
|
|
5027
5236
|
{
|
|
5028
5237
|
"id": "command-injection",
|
|
@@ -5052,7 +5261,7 @@
|
|
|
5052
5261
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5053
5262
|
"license": "free",
|
|
5054
5263
|
"license_note": null,
|
|
5055
|
-
"docs_url": "https://
|
|
5264
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5056
5265
|
},
|
|
5057
5266
|
{
|
|
5058
5267
|
"id": "code-injection",
|
|
@@ -5082,7 +5291,7 @@
|
|
|
5082
5291
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5083
5292
|
"license": "free",
|
|
5084
5293
|
"license_note": null,
|
|
5085
|
-
"docs_url": "https://
|
|
5294
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5086
5295
|
},
|
|
5087
5296
|
{
|
|
5088
5297
|
"id": "dynamic-regex",
|
|
@@ -5112,7 +5321,7 @@
|
|
|
5112
5321
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5113
5322
|
"license": "free",
|
|
5114
5323
|
"license_note": null,
|
|
5115
|
-
"docs_url": "https://
|
|
5324
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5116
5325
|
},
|
|
5117
5326
|
{
|
|
5118
5327
|
"id": "redos-regex",
|
|
@@ -5142,7 +5351,7 @@
|
|
|
5142
5351
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5143
5352
|
"license": "free",
|
|
5144
5353
|
"license_note": null,
|
|
5145
|
-
"docs_url": "https://
|
|
5354
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5146
5355
|
},
|
|
5147
5356
|
{
|
|
5148
5357
|
"id": "resource-amplification",
|
|
@@ -5172,7 +5381,7 @@
|
|
|
5172
5381
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5173
5382
|
"license": "free",
|
|
5174
5383
|
"license_note": null,
|
|
5175
|
-
"docs_url": "https://
|
|
5384
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5176
5385
|
},
|
|
5177
5386
|
{
|
|
5178
5387
|
"id": "dynamic-module-load",
|
|
@@ -5202,7 +5411,7 @@
|
|
|
5202
5411
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5203
5412
|
"license": "free",
|
|
5204
5413
|
"license_note": null,
|
|
5205
|
-
"docs_url": "https://
|
|
5414
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5206
5415
|
},
|
|
5207
5416
|
{
|
|
5208
5417
|
"id": "sql-injection",
|
|
@@ -5232,7 +5441,7 @@
|
|
|
5232
5441
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5233
5442
|
"license": "free",
|
|
5234
5443
|
"license_note": null,
|
|
5235
|
-
"docs_url": "https://
|
|
5444
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5236
5445
|
},
|
|
5237
5446
|
{
|
|
5238
5447
|
"id": "ssrf",
|
|
@@ -5262,7 +5471,7 @@
|
|
|
5262
5471
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5263
5472
|
"license": "free",
|
|
5264
5473
|
"license_note": null,
|
|
5265
|
-
"docs_url": "https://
|
|
5474
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5266
5475
|
},
|
|
5267
5476
|
{
|
|
5268
5477
|
"id": "secret-to-network",
|
|
@@ -5292,7 +5501,7 @@
|
|
|
5292
5501
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5293
5502
|
"license": "free",
|
|
5294
5503
|
"license_note": null,
|
|
5295
|
-
"docs_url": "https://
|
|
5504
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5296
5505
|
},
|
|
5297
5506
|
{
|
|
5298
5507
|
"id": "path-traversal",
|
|
@@ -5322,7 +5531,7 @@
|
|
|
5322
5531
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5323
5532
|
"license": "free",
|
|
5324
5533
|
"license_note": null,
|
|
5325
|
-
"docs_url": "https://
|
|
5534
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5326
5535
|
},
|
|
5327
5536
|
{
|
|
5328
5537
|
"id": "header-injection",
|
|
@@ -5352,7 +5561,7 @@
|
|
|
5352
5561
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5353
5562
|
"license": "free",
|
|
5354
5563
|
"license_note": null,
|
|
5355
|
-
"docs_url": "https://
|
|
5564
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5356
5565
|
},
|
|
5357
5566
|
{
|
|
5358
5567
|
"id": "open-redirect",
|
|
@@ -5382,7 +5591,7 @@
|
|
|
5382
5591
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5383
5592
|
"license": "free",
|
|
5384
5593
|
"license_note": null,
|
|
5385
|
-
"docs_url": "https://
|
|
5594
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5386
5595
|
},
|
|
5387
5596
|
{
|
|
5388
5597
|
"id": "postmessage-wildcard-origin",
|
|
@@ -5412,7 +5621,7 @@
|
|
|
5412
5621
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5413
5622
|
"license": "free",
|
|
5414
5623
|
"license_note": null,
|
|
5415
|
-
"docs_url": "https://
|
|
5624
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5416
5625
|
},
|
|
5417
5626
|
{
|
|
5418
5627
|
"id": "tls-validation-disabled",
|
|
@@ -5442,7 +5651,7 @@
|
|
|
5442
5651
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5443
5652
|
"license": "free",
|
|
5444
5653
|
"license_note": null,
|
|
5445
|
-
"docs_url": "https://
|
|
5654
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5446
5655
|
},
|
|
5447
5656
|
{
|
|
5448
5657
|
"id": "cleartext-transport",
|
|
@@ -5472,7 +5681,7 @@
|
|
|
5472
5681
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5473
5682
|
"license": "free",
|
|
5474
5683
|
"license_note": null,
|
|
5475
|
-
"docs_url": "https://
|
|
5684
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5476
5685
|
},
|
|
5477
5686
|
{
|
|
5478
5687
|
"id": "electron-unsafe-webpreferences",
|
|
@@ -5502,7 +5711,7 @@
|
|
|
5502
5711
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5503
5712
|
"license": "free",
|
|
5504
5713
|
"license_note": null,
|
|
5505
|
-
"docs_url": "https://
|
|
5714
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5506
5715
|
},
|
|
5507
5716
|
{
|
|
5508
5717
|
"id": "world-writable-permission",
|
|
@@ -5532,7 +5741,7 @@
|
|
|
5532
5741
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5533
5742
|
"license": "free",
|
|
5534
5743
|
"license_note": null,
|
|
5535
|
-
"docs_url": "https://
|
|
5744
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5536
5745
|
},
|
|
5537
5746
|
{
|
|
5538
5747
|
"id": "insecure-temp-file",
|
|
@@ -5562,7 +5771,7 @@
|
|
|
5562
5771
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5563
5772
|
"license": "free",
|
|
5564
5773
|
"license_note": null,
|
|
5565
|
-
"docs_url": "https://
|
|
5774
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5566
5775
|
},
|
|
5567
5776
|
{
|
|
5568
5777
|
"id": "mysql-multiple-statements",
|
|
@@ -5592,7 +5801,7 @@
|
|
|
5592
5801
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5593
5802
|
"license": "free",
|
|
5594
5803
|
"license_note": null,
|
|
5595
|
-
"docs_url": "https://
|
|
5804
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5596
5805
|
},
|
|
5597
5806
|
{
|
|
5598
5807
|
"id": "permissive-cors",
|
|
@@ -5622,7 +5831,7 @@
|
|
|
5622
5831
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5623
5832
|
"license": "free",
|
|
5624
5833
|
"license_note": null,
|
|
5625
|
-
"docs_url": "https://
|
|
5834
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5626
5835
|
},
|
|
5627
5836
|
{
|
|
5628
5837
|
"id": "insecure-cookie",
|
|
@@ -5652,7 +5861,7 @@
|
|
|
5652
5861
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5653
5862
|
"license": "free",
|
|
5654
5863
|
"license_note": null,
|
|
5655
|
-
"docs_url": "https://
|
|
5864
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5656
5865
|
},
|
|
5657
5866
|
{
|
|
5658
5867
|
"id": "mass-assignment",
|
|
@@ -5682,7 +5891,7 @@
|
|
|
5682
5891
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5683
5892
|
"license": "free",
|
|
5684
5893
|
"license_note": null,
|
|
5685
|
-
"docs_url": "https://
|
|
5894
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5686
5895
|
},
|
|
5687
5896
|
{
|
|
5688
5897
|
"id": "weak-crypto",
|
|
@@ -5712,7 +5921,7 @@
|
|
|
5712
5921
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5713
5922
|
"license": "free",
|
|
5714
5923
|
"license_note": null,
|
|
5715
|
-
"docs_url": "https://
|
|
5924
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5716
5925
|
},
|
|
5717
5926
|
{
|
|
5718
5927
|
"id": "insecure-randomness",
|
|
@@ -5742,7 +5951,7 @@
|
|
|
5742
5951
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5743
5952
|
"license": "free",
|
|
5744
5953
|
"license_note": null,
|
|
5745
|
-
"docs_url": "https://
|
|
5954
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5746
5955
|
},
|
|
5747
5956
|
{
|
|
5748
5957
|
"id": "jwt-alg-none",
|
|
@@ -5772,7 +5981,7 @@
|
|
|
5772
5981
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5773
5982
|
"license": "free",
|
|
5774
5983
|
"license_note": null,
|
|
5775
|
-
"docs_url": "https://
|
|
5984
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5776
5985
|
},
|
|
5777
5986
|
{
|
|
5778
5987
|
"id": "jwt-verify-missing-algorithms",
|
|
@@ -5802,7 +6011,7 @@
|
|
|
5802
6011
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5803
6012
|
"license": "free",
|
|
5804
6013
|
"license_note": null,
|
|
5805
|
-
"docs_url": "https://
|
|
6014
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5806
6015
|
},
|
|
5807
6016
|
{
|
|
5808
6017
|
"id": "deprecated-cipher",
|
|
@@ -5832,7 +6041,7 @@
|
|
|
5832
6041
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5833
6042
|
"license": "free",
|
|
5834
6043
|
"license_note": null,
|
|
5835
|
-
"docs_url": "https://
|
|
6044
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5836
6045
|
},
|
|
5837
6046
|
{
|
|
5838
6047
|
"id": "unsafe-buffer-alloc",
|
|
@@ -5862,7 +6071,7 @@
|
|
|
5862
6071
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5863
6072
|
"license": "free",
|
|
5864
6073
|
"license_note": null,
|
|
5865
|
-
"docs_url": "https://
|
|
6074
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5866
6075
|
},
|
|
5867
6076
|
{
|
|
5868
6077
|
"id": "unsafe-deserialization",
|
|
@@ -5892,7 +6101,7 @@
|
|
|
5892
6101
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5893
6102
|
"license": "free",
|
|
5894
6103
|
"license_note": null,
|
|
5895
|
-
"docs_url": "https://
|
|
6104
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5896
6105
|
},
|
|
5897
6106
|
{
|
|
5898
6107
|
"id": "angular-trusted-html",
|
|
@@ -5922,7 +6131,7 @@
|
|
|
5922
6131
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5923
6132
|
"license": "free",
|
|
5924
6133
|
"license_note": null,
|
|
5925
|
-
"docs_url": "https://
|
|
6134
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5926
6135
|
},
|
|
5927
6136
|
{
|
|
5928
6137
|
"id": "nextjs-open-redirect",
|
|
@@ -5952,7 +6161,7 @@
|
|
|
5952
6161
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5953
6162
|
"license": "free",
|
|
5954
6163
|
"license_note": null,
|
|
5955
|
-
"docs_url": "https://
|
|
6164
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5956
6165
|
},
|
|
5957
6166
|
{
|
|
5958
6167
|
"id": "dom-document-write",
|
|
@@ -5982,7 +6191,7 @@
|
|
|
5982
6191
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
5983
6192
|
"license": "free",
|
|
5984
6193
|
"license_note": null,
|
|
5985
|
-
"docs_url": "https://
|
|
6194
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
5986
6195
|
},
|
|
5987
6196
|
{
|
|
5988
6197
|
"id": "jquery-html",
|
|
@@ -6012,7 +6221,7 @@
|
|
|
6012
6221
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6013
6222
|
"license": "free",
|
|
6014
6223
|
"license_note": null,
|
|
6015
|
-
"docs_url": "https://
|
|
6224
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6016
6225
|
},
|
|
6017
6226
|
{
|
|
6018
6227
|
"id": "route-send-file",
|
|
@@ -6042,7 +6251,7 @@
|
|
|
6042
6251
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6043
6252
|
"license": "free",
|
|
6044
6253
|
"license_note": null,
|
|
6045
|
-
"docs_url": "https://
|
|
6254
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6046
6255
|
},
|
|
6047
6256
|
{
|
|
6048
6257
|
"id": "webview-injection",
|
|
@@ -6072,7 +6281,7 @@
|
|
|
6072
6281
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6073
6282
|
"license": "free",
|
|
6074
6283
|
"license_note": null,
|
|
6075
|
-
"docs_url": "https://
|
|
6284
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6076
6285
|
},
|
|
6077
6286
|
{
|
|
6078
6287
|
"id": "prototype-pollution",
|
|
@@ -6102,7 +6311,7 @@
|
|
|
6102
6311
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6103
6312
|
"license": "free",
|
|
6104
6313
|
"license_note": null,
|
|
6105
|
-
"docs_url": "https://
|
|
6314
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6106
6315
|
},
|
|
6107
6316
|
{
|
|
6108
6317
|
"id": "zip-slip",
|
|
@@ -6132,7 +6341,7 @@
|
|
|
6132
6341
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6133
6342
|
"license": "free",
|
|
6134
6343
|
"license_note": null,
|
|
6135
|
-
"docs_url": "https://
|
|
6344
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6136
6345
|
},
|
|
6137
6346
|
{
|
|
6138
6347
|
"id": "nosql-injection",
|
|
@@ -6162,7 +6371,7 @@
|
|
|
6162
6371
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6163
6372
|
"license": "free",
|
|
6164
6373
|
"license_note": null,
|
|
6165
|
-
"docs_url": "https://
|
|
6374
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6166
6375
|
},
|
|
6167
6376
|
{
|
|
6168
6377
|
"id": "ssti",
|
|
@@ -6192,7 +6401,7 @@
|
|
|
6192
6401
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6193
6402
|
"license": "free",
|
|
6194
6403
|
"license_note": null,
|
|
6195
|
-
"docs_url": "https://
|
|
6404
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6196
6405
|
},
|
|
6197
6406
|
{
|
|
6198
6407
|
"id": "xxe",
|
|
@@ -6222,7 +6431,7 @@
|
|
|
6222
6431
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6223
6432
|
"license": "free",
|
|
6224
6433
|
"license_note": null,
|
|
6225
|
-
"docs_url": "https://
|
|
6434
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6226
6435
|
},
|
|
6227
6436
|
{
|
|
6228
6437
|
"id": "secret-pii-log",
|
|
@@ -6252,7 +6461,7 @@
|
|
|
6252
6461
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6253
6462
|
"license": "free",
|
|
6254
6463
|
"license_note": null,
|
|
6255
|
-
"docs_url": "https://
|
|
6464
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6256
6465
|
},
|
|
6257
6466
|
{
|
|
6258
6467
|
"id": "xpath-injection",
|
|
@@ -6282,7 +6491,7 @@
|
|
|
6282
6491
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6283
6492
|
"license": "free",
|
|
6284
6493
|
"license_note": null,
|
|
6285
|
-
"docs_url": "https://
|
|
6494
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6286
6495
|
},
|
|
6287
6496
|
{
|
|
6288
6497
|
"id": "llm-call-injection",
|
|
@@ -6312,7 +6521,7 @@
|
|
|
6312
6521
|
"note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
|
|
6313
6522
|
"license": "free",
|
|
6314
6523
|
"license_note": null,
|
|
6315
|
-
"docs_url": "https://
|
|
6524
|
+
"docs_url": "https://fallow.tools/docs/cli/security/"
|
|
6316
6525
|
}
|
|
6317
6526
|
],
|
|
6318
6527
|
"suppression_comments": {
|
|
@@ -6394,6 +6603,7 @@
|
|
|
6394
6603
|
"FALLOW_API_KEY": "Fallow Cloud bearer token for coverage upload commands, and the fallback bearer for fallow license refresh when the stored license JWT is missing or too stale.",
|
|
6395
6604
|
"FALLOW_CA_BUNDLE": "Path to a PEM certificate bundle for Fallow Cloud and provider HTTP calls (replaces the default WebPKI roots).",
|
|
6396
6605
|
"FALLOW_UPDATE_CHECK": "Set to off/0/false to disable the human-TTY upgrade nudge and its background version check.",
|
|
6606
|
+
"FALLOW_CLAUDE_CODE_HINT": "Set to off/0/false/no/disabled to suppress the one-line Claude Code plugin hint on stderr. Fallow writes the hint only inside a Claude Code session (CLAUDECODE or CLAUDE_CODE_CHILD_SESSION), for human output without --quiet, outside CI, and when no Fallow plugin or skill is set up for the project. Default on.",
|
|
6397
6607
|
"FALLOW_SUGGESTIONS": "Set to off/0/false/no/disabled to suppress the next_steps[] array of read-only follow-up commands in JSON output (and the human Next: line). Useful for CI consumers that snapshot-diff raw --format json output. Default on.",
|
|
6398
6608
|
"FALLOW_TELEMETRY": "Opt-in telemetry mode: off, on, or inspect (print the payload to stderr without sending). Telemetry is off by default.",
|
|
6399
6609
|
"FALLOW_TELEMETRY_DISABLED": "Admin/fleet kill switch: truthy values hard-disable telemetry and refuse fallow telemetry enable.",
|
|
@@ -6932,6 +7142,24 @@
|
|
|
6932
7142
|
"read_only": false,
|
|
6933
7143
|
"code_mode_alias": "checkChanged"
|
|
6934
7144
|
},
|
|
7145
|
+
{
|
|
7146
|
+
"name": "check_architecture",
|
|
7147
|
+
"kind": "analysis",
|
|
7148
|
+
"description": "Architecture check: import cycles, boundary violations, and rule-pack policy violations in the `architecture` envelope, each with a stable finding_id",
|
|
7149
|
+
"cli_command": "fallow architecture --format json --quiet",
|
|
7150
|
+
"key_params": [
|
|
7151
|
+
"cycles",
|
|
7152
|
+
"boundaries",
|
|
7153
|
+
"policy",
|
|
7154
|
+
"baseline",
|
|
7155
|
+
"group_by",
|
|
7156
|
+
"file"
|
|
7157
|
+
],
|
|
7158
|
+
"license": "free",
|
|
7159
|
+
"license_note": null,
|
|
7160
|
+
"read_only": true,
|
|
7161
|
+
"code_mode_alias": "checkArchitecture"
|
|
7162
|
+
},
|
|
6935
7163
|
{
|
|
6936
7164
|
"name": "security_candidates",
|
|
6937
7165
|
"kind": "analysis",
|
|
@@ -7453,10 +7681,14 @@
|
|
|
7453
7681
|
{
|
|
7454
7682
|
"name": "trace_dependency",
|
|
7455
7683
|
"kind": "trace",
|
|
7456
|
-
"description": "Trace where a dependency is imported
|
|
7684
|
+
"description": "Trace where a dependency is imported, whether scripts or CI use it, and how the code uses each imported name",
|
|
7457
7685
|
"cli_command": "fallow dead-code --trace-dependency <package> --format json --quiet",
|
|
7458
7686
|
"key_params": [
|
|
7459
|
-
"package_name"
|
|
7687
|
+
"package_name",
|
|
7688
|
+
"specifiers",
|
|
7689
|
+
"sites",
|
|
7690
|
+
"limit",
|
|
7691
|
+
"cursor"
|
|
7460
7692
|
],
|
|
7461
7693
|
"license": "free",
|
|
7462
7694
|
"license_note": null,
|
|
@@ -7569,7 +7801,7 @@
|
|
|
7569
7801
|
]
|
|
7570
7802
|
},
|
|
7571
7803
|
"plugins": {
|
|
7572
|
-
"count":
|
|
7804
|
+
"count": 134,
|
|
7573
7805
|
"note": "Built-in framework plugins, auto-activated when their enabler dependency is present; run fallow list --plugins for the set active in a specific project",
|
|
7574
7806
|
"names": [
|
|
7575
7807
|
"nextjs",
|
|
@@ -7589,6 +7821,8 @@
|
|
|
7589
7821
|
"expo-router",
|
|
7590
7822
|
"firebase",
|
|
7591
7823
|
"nestjs",
|
|
7824
|
+
"nestjs-trpc",
|
|
7825
|
+
"nest-commander",
|
|
7592
7826
|
"adonis",
|
|
7593
7827
|
"docusaurus",
|
|
7594
7828
|
"gatsby",
|
|
@@ -7596,6 +7830,7 @@
|
|
|
7596
7830
|
"nitro",
|
|
7597
7831
|
"capacitor",
|
|
7598
7832
|
"ionic",
|
|
7833
|
+
"kibana",
|
|
7599
7834
|
"sanity",
|
|
7600
7835
|
"supabase",
|
|
7601
7836
|
"vitepress",
|
|
@@ -7608,6 +7843,7 @@
|
|
|
7608
7843
|
"convex",
|
|
7609
7844
|
"lit",
|
|
7610
7845
|
"lexical",
|
|
7846
|
+
"ag-ui",
|
|
7611
7847
|
"obsidian",
|
|
7612
7848
|
"content-collections",
|
|
7613
7849
|
"contentlayer",
|
|
@@ -7615,6 +7851,7 @@
|
|
|
7615
7851
|
"mintlify",
|
|
7616
7852
|
"velite",
|
|
7617
7853
|
"ember",
|
|
7854
|
+
"eve",
|
|
7618
7855
|
"vite",
|
|
7619
7856
|
"vscode",
|
|
7620
7857
|
"webpack",
|
|
@@ -7670,6 +7907,7 @@
|
|
|
7670
7907
|
"commitizen",
|
|
7671
7908
|
"commit-and-tag-version",
|
|
7672
7909
|
"semantic-release",
|
|
7910
|
+
"release-it",
|
|
7673
7911
|
"danger",
|
|
7674
7912
|
"hardhat",
|
|
7675
7913
|
"vercel",
|
|
@@ -7723,6 +7961,11 @@
|
|
|
7723
7961
|
"command": "fallow dead-code --trace-dependency <name>",
|
|
7724
7962
|
"note": null
|
|
7725
7963
|
},
|
|
7964
|
+
{
|
|
7965
|
+
"task": "migrate a dependency",
|
|
7966
|
+
"command": "fallow trace --dependency <name> --sites",
|
|
7967
|
+
"note": "Counts each imported name, follows one hop through project wrappers, and counts each use that it cannot resolve."
|
|
7968
|
+
},
|
|
7726
7969
|
{
|
|
7727
7970
|
"task": "commit or open a PR",
|
|
7728
7971
|
"command": "fallow audit --base <ref>",
|
|
@@ -7763,6 +8006,11 @@
|
|
|
7763
8006
|
"command": "fallow guard <files>",
|
|
7764
8007
|
"note": null
|
|
7765
8008
|
},
|
|
8009
|
+
{
|
|
8010
|
+
"task": "check import cycles, boundaries and policy rules after changing code",
|
|
8011
|
+
"command": "fallow architecture",
|
|
8012
|
+
"note": null
|
|
8013
|
+
},
|
|
7766
8014
|
{
|
|
7767
8015
|
"task": "surface security candidates",
|
|
7768
8016
|
"command": "fallow security",
|