fallow 3.39.0 → 3.41.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/capabilities.json +246 -54
- package/issue-registry.json +168 -53
- package/package.json +10 -10
- package/schema.json +104 -4
- package/skills/fallow/SKILL.md +7 -2
- package/skills/fallow/references/cli-reference.md +31 -12
- package/skills/fallow/references/issue-types.md +3 -0
- package/skills/fallow/references/mcp.md +25 -0
- package/types/output-contract.d.ts +736 -81
package/capabilities.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.41.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": [
|
|
@@ -749,6 +749,16 @@
|
|
|
749
749
|
"false"
|
|
750
750
|
]
|
|
751
751
|
},
|
|
752
|
+
{
|
|
753
|
+
"name": "--unused-namespace-members",
|
|
754
|
+
"type": "bool",
|
|
755
|
+
"required": false,
|
|
756
|
+
"description": "Only report unused namespace members",
|
|
757
|
+
"possible_values": [
|
|
758
|
+
"true",
|
|
759
|
+
"false"
|
|
760
|
+
]
|
|
761
|
+
},
|
|
752
762
|
{
|
|
753
763
|
"name": "--unprovided-injects",
|
|
754
764
|
"type": "bool",
|
|
@@ -899,6 +909,16 @@
|
|
|
899
909
|
"false"
|
|
900
910
|
]
|
|
901
911
|
},
|
|
912
|
+
{
|
|
913
|
+
"name": "--unlisted-binaries",
|
|
914
|
+
"type": "bool",
|
|
915
|
+
"required": false,
|
|
916
|
+
"description": "Only report binaries that no installed package provides",
|
|
917
|
+
"possible_values": [
|
|
918
|
+
"true",
|
|
919
|
+
"false"
|
|
920
|
+
]
|
|
921
|
+
},
|
|
902
922
|
{
|
|
903
923
|
"name": "--duplicate-exports",
|
|
904
924
|
"type": "bool",
|
|
@@ -909,6 +929,16 @@
|
|
|
909
929
|
"false"
|
|
910
930
|
]
|
|
911
931
|
},
|
|
932
|
+
{
|
|
933
|
+
"name": "--duplicate-export-aliases",
|
|
934
|
+
"type": "bool",
|
|
935
|
+
"required": false,
|
|
936
|
+
"description": "Only report bindings that one file exports under two or more names",
|
|
937
|
+
"possible_values": [
|
|
938
|
+
"true",
|
|
939
|
+
"false"
|
|
940
|
+
]
|
|
941
|
+
},
|
|
912
942
|
{
|
|
913
943
|
"name": "--circular-deps",
|
|
914
944
|
"type": "bool",
|
|
@@ -1329,6 +1359,40 @@
|
|
|
1329
1359
|
"false"
|
|
1330
1360
|
]
|
|
1331
1361
|
},
|
|
1362
|
+
{
|
|
1363
|
+
"name": "--kill-matrix-for",
|
|
1364
|
+
"type": "string",
|
|
1365
|
+
"required": false,
|
|
1366
|
+
"description": "Check whether this test is redundant: a test file (each test in it) or a test id (`file::name`). Repeat the flag for more targets. Only the mutants that a target covers run: first the target tests without a stop at a failure, then the other covering tests up to the first failure"
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
"name": "--recheck",
|
|
1370
|
+
"type": "bool",
|
|
1371
|
+
"required": false,
|
|
1372
|
+
"description": "Rerun the open tasks of a saved report (its `survived` and `no_coverage` mutants) against the current tests. The worktree may change test files only. The run replaces the saved report, so `fallow mutation tasks` then lists the mutants that are still open",
|
|
1373
|
+
"possible_values": [
|
|
1374
|
+
"true",
|
|
1375
|
+
"false"
|
|
1376
|
+
]
|
|
1377
|
+
},
|
|
1378
|
+
{
|
|
1379
|
+
"name": "--report",
|
|
1380
|
+
"type": "string",
|
|
1381
|
+
"required": false,
|
|
1382
|
+
"description": "The saved report of `--recheck` (default: the report of the last run). A recheck without `--mutant` replaces the saved report"
|
|
1383
|
+
},
|
|
1384
|
+
{
|
|
1385
|
+
"name": "--mutant",
|
|
1386
|
+
"type": "string",
|
|
1387
|
+
"required": false,
|
|
1388
|
+
"description": "Recheck only these mutant ids of the report, comma-separated or repeated (default: each open task). The saved report then stays as it is, so `fallow mutation tasks` keeps the other open tasks"
|
|
1389
|
+
},
|
|
1390
|
+
{
|
|
1391
|
+
"name": "--compare",
|
|
1392
|
+
"type": "string",
|
|
1393
|
+
"required": false,
|
|
1394
|
+
"description": "Compare this run with a saved complete report: list each mutant that the report detects (`killed` or `timeout`) and this run does not (`survived` or `no_coverage`), with its earlier killing tests. A report or a run that is not complete exits 2"
|
|
1395
|
+
},
|
|
1332
1396
|
{
|
|
1333
1397
|
"name": "paths",
|
|
1334
1398
|
"type": "string",
|
|
@@ -3109,7 +3173,7 @@
|
|
|
3109
3173
|
"description": "Production dependency only used via type-only imports",
|
|
3110
3174
|
"label": "Type-Only Dependencies",
|
|
3111
3175
|
"config_key": "type-only-dependencies",
|
|
3112
|
-
"registry_index":
|
|
3176
|
+
"registry_index": 18,
|
|
3113
3177
|
"aliases": [],
|
|
3114
3178
|
"lsp": true,
|
|
3115
3179
|
"filter_flag": "--unused-deps",
|
|
@@ -3146,7 +3210,7 @@
|
|
|
3146
3210
|
"description": "Production dependency only imported by test files",
|
|
3147
3211
|
"label": "Test-Only Dependencies",
|
|
3148
3212
|
"config_key": "test-only-dependencies",
|
|
3149
|
-
"registry_index":
|
|
3213
|
+
"registry_index": 19,
|
|
3150
3214
|
"aliases": [],
|
|
3151
3215
|
"lsp": true,
|
|
3152
3216
|
"filter_flag": "--unused-deps",
|
|
@@ -3183,7 +3247,7 @@
|
|
|
3183
3247
|
"description": "devDependency imported by production code with a runtime import",
|
|
3184
3248
|
"label": "Dev Dependencies Used in Production",
|
|
3185
3249
|
"config_key": "dev-dependencies-in-production",
|
|
3186
|
-
"registry_index":
|
|
3250
|
+
"registry_index": 20,
|
|
3187
3251
|
"aliases": [],
|
|
3188
3252
|
"lsp": true,
|
|
3189
3253
|
"filter_flag": "--unused-deps",
|
|
@@ -3294,7 +3358,7 @@
|
|
|
3294
3358
|
"description": "Store member is never accessed by any consumer",
|
|
3295
3359
|
"label": "Unused Store Members",
|
|
3296
3360
|
"config_key": "unused-store-members",
|
|
3297
|
-
"registry_index":
|
|
3361
|
+
"registry_index": 12,
|
|
3298
3362
|
"aliases": [
|
|
3299
3363
|
"unused-store-members"
|
|
3300
3364
|
],
|
|
@@ -3325,6 +3389,45 @@
|
|
|
3325
3389
|
"license_note": null,
|
|
3326
3390
|
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-store-members"
|
|
3327
3391
|
},
|
|
3392
|
+
{
|
|
3393
|
+
"id": "unused-namespace-member",
|
|
3394
|
+
"rule_id": "fallow/unused-namespace-member",
|
|
3395
|
+
"command": "dead-code",
|
|
3396
|
+
"category": "Dead code",
|
|
3397
|
+
"description": "Namespace member is never referenced",
|
|
3398
|
+
"label": "Unused Namespace Members",
|
|
3399
|
+
"config_key": "unused-namespace-members",
|
|
3400
|
+
"registry_index": 11,
|
|
3401
|
+
"aliases": [
|
|
3402
|
+
"unused-namespace-members"
|
|
3403
|
+
],
|
|
3404
|
+
"lsp": true,
|
|
3405
|
+
"filter_flag": "--unused-namespace-members",
|
|
3406
|
+
"result_key": "unused_namespace_members",
|
|
3407
|
+
"summary_label": "Unused namespace members",
|
|
3408
|
+
"summary_docs_anchor": "unused-namespace-members",
|
|
3409
|
+
"sarif_rule_ids": [
|
|
3410
|
+
"fallow/unused-namespace-member"
|
|
3411
|
+
],
|
|
3412
|
+
"codeclimate_check_names": [
|
|
3413
|
+
"fallow/unused-namespace-member"
|
|
3414
|
+
],
|
|
3415
|
+
"ts_alias": {
|
|
3416
|
+
"name": "UnusedMember",
|
|
3417
|
+
"parent": "UnusedNamespaceMemberFinding"
|
|
3418
|
+
},
|
|
3419
|
+
"counts_in_total": true,
|
|
3420
|
+
"fixable": false,
|
|
3421
|
+
"suppressible": true,
|
|
3422
|
+
"suppress_comment": "// fallow-ignore-next-line unused-namespace-member",
|
|
3423
|
+
"default_severity": "warn",
|
|
3424
|
+
"opt_in": false,
|
|
3425
|
+
"frameworks": [],
|
|
3426
|
+
"note": null,
|
|
3427
|
+
"license": "free",
|
|
3428
|
+
"license_note": null,
|
|
3429
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-namespace-members"
|
|
3430
|
+
},
|
|
3328
3431
|
{
|
|
3329
3432
|
"id": "unresolved-import",
|
|
3330
3433
|
"rule_id": "fallow/unresolved-import",
|
|
@@ -3333,7 +3436,7 @@
|
|
|
3333
3436
|
"description": "Import could not be resolved",
|
|
3334
3437
|
"label": "Unresolved Imports",
|
|
3335
3438
|
"config_key": "unresolved-imports",
|
|
3336
|
-
"registry_index":
|
|
3439
|
+
"registry_index": 13,
|
|
3337
3440
|
"aliases": [],
|
|
3338
3441
|
"lsp": true,
|
|
3339
3442
|
"filter_flag": "--unresolved-imports",
|
|
@@ -3370,7 +3473,7 @@
|
|
|
3370
3473
|
"description": "Dependency used but not in package.json",
|
|
3371
3474
|
"label": "Unlisted Dependencies",
|
|
3372
3475
|
"config_key": "unlisted-dependencies",
|
|
3373
|
-
"registry_index":
|
|
3476
|
+
"registry_index": 14,
|
|
3374
3477
|
"aliases": [],
|
|
3375
3478
|
"lsp": true,
|
|
3376
3479
|
"filter_flag": "--unlisted-deps",
|
|
@@ -3399,6 +3502,43 @@
|
|
|
3399
3502
|
"license_note": null,
|
|
3400
3503
|
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unlisted-dependencies"
|
|
3401
3504
|
},
|
|
3505
|
+
{
|
|
3506
|
+
"id": "unlisted-binary",
|
|
3507
|
+
"rule_id": "fallow/unlisted-binary",
|
|
3508
|
+
"command": "dead-code",
|
|
3509
|
+
"category": "Dependencies",
|
|
3510
|
+
"description": "Binary used but provided by no installed package",
|
|
3511
|
+
"label": "Unlisted Binaries",
|
|
3512
|
+
"config_key": "unlisted-binaries",
|
|
3513
|
+
"registry_index": 15,
|
|
3514
|
+
"aliases": [],
|
|
3515
|
+
"lsp": true,
|
|
3516
|
+
"filter_flag": "--unlisted-binaries",
|
|
3517
|
+
"result_key": "unlisted_binaries",
|
|
3518
|
+
"summary_label": "Unlisted binaries",
|
|
3519
|
+
"summary_docs_anchor": "unlisted-binaries",
|
|
3520
|
+
"sarif_rule_ids": [
|
|
3521
|
+
"fallow/unlisted-binary"
|
|
3522
|
+
],
|
|
3523
|
+
"codeclimate_check_names": [
|
|
3524
|
+
"fallow/unlisted-binary"
|
|
3525
|
+
],
|
|
3526
|
+
"ts_alias": {
|
|
3527
|
+
"name": "UnlistedBinary",
|
|
3528
|
+
"parent": "UnlistedBinaryFinding"
|
|
3529
|
+
},
|
|
3530
|
+
"counts_in_total": true,
|
|
3531
|
+
"fixable": false,
|
|
3532
|
+
"suppressible": false,
|
|
3533
|
+
"suppress_comment": null,
|
|
3534
|
+
"default_severity": "warn",
|
|
3535
|
+
"opt_in": false,
|
|
3536
|
+
"frameworks": [],
|
|
3537
|
+
"note": "Needs installed dependencies; a project without a root node_modules reports none",
|
|
3538
|
+
"license": "free",
|
|
3539
|
+
"license_note": null,
|
|
3540
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#unlisted-binaries"
|
|
3541
|
+
},
|
|
3402
3542
|
{
|
|
3403
3543
|
"id": "duplicate-export",
|
|
3404
3544
|
"rule_id": "fallow/duplicate-export",
|
|
@@ -3407,7 +3547,7 @@
|
|
|
3407
3547
|
"description": "Export name appears in multiple modules",
|
|
3408
3548
|
"label": "Duplicate Exports",
|
|
3409
3549
|
"config_key": "duplicate-exports",
|
|
3410
|
-
"registry_index":
|
|
3550
|
+
"registry_index": 16,
|
|
3411
3551
|
"aliases": [],
|
|
3412
3552
|
"lsp": true,
|
|
3413
3553
|
"filter_flag": "--duplicate-exports",
|
|
@@ -3436,6 +3576,45 @@
|
|
|
3436
3576
|
"license_note": null,
|
|
3437
3577
|
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#duplicate-exports"
|
|
3438
3578
|
},
|
|
3579
|
+
{
|
|
3580
|
+
"id": "duplicate-export-alias",
|
|
3581
|
+
"rule_id": "fallow/duplicate-export-alias",
|
|
3582
|
+
"command": "dead-code",
|
|
3583
|
+
"category": "Dead code",
|
|
3584
|
+
"description": "One module exports one binding under two or more names",
|
|
3585
|
+
"label": "Duplicate Export Aliases",
|
|
3586
|
+
"config_key": "duplicate-export-aliases",
|
|
3587
|
+
"registry_index": 17,
|
|
3588
|
+
"aliases": [
|
|
3589
|
+
"duplicate-export-aliases"
|
|
3590
|
+
],
|
|
3591
|
+
"lsp": true,
|
|
3592
|
+
"filter_flag": "--duplicate-export-aliases",
|
|
3593
|
+
"result_key": "duplicate_export_aliases",
|
|
3594
|
+
"summary_label": "Duplicate export aliases",
|
|
3595
|
+
"summary_docs_anchor": "duplicate-export-aliases",
|
|
3596
|
+
"sarif_rule_ids": [
|
|
3597
|
+
"fallow/duplicate-export-alias"
|
|
3598
|
+
],
|
|
3599
|
+
"codeclimate_check_names": [
|
|
3600
|
+
"fallow/duplicate-export-alias"
|
|
3601
|
+
],
|
|
3602
|
+
"ts_alias": {
|
|
3603
|
+
"name": "DuplicateExportAlias",
|
|
3604
|
+
"parent": "DuplicateExportAliasFinding"
|
|
3605
|
+
},
|
|
3606
|
+
"counts_in_total": true,
|
|
3607
|
+
"fixable": false,
|
|
3608
|
+
"suppressible": true,
|
|
3609
|
+
"suppress_comment": "// fallow-ignore-file duplicate-export-alias",
|
|
3610
|
+
"default_severity": "warn",
|
|
3611
|
+
"opt_in": false,
|
|
3612
|
+
"frameworks": [],
|
|
3613
|
+
"note": null,
|
|
3614
|
+
"license": "free",
|
|
3615
|
+
"license_note": null,
|
|
3616
|
+
"docs_url": "https://fallow.tools/docs/explanations/dead-code/#duplicate-export-aliases"
|
|
3617
|
+
},
|
|
3439
3618
|
{
|
|
3440
3619
|
"id": "circular-dependency",
|
|
3441
3620
|
"rule_id": "fallow/circular-dependency",
|
|
@@ -3444,7 +3623,7 @@
|
|
|
3444
3623
|
"description": "Circular dependency chain detected",
|
|
3445
3624
|
"label": "Circular Dependencies",
|
|
3446
3625
|
"config_key": "circular-dependencies",
|
|
3447
|
-
"registry_index":
|
|
3626
|
+
"registry_index": 21,
|
|
3448
3627
|
"aliases": [
|
|
3449
3628
|
"circular-dependencies"
|
|
3450
3629
|
],
|
|
@@ -3483,7 +3662,7 @@
|
|
|
3483
3662
|
"description": "Two or more barrel files re-export from each other in a loop",
|
|
3484
3663
|
"label": "Re-Export Cycles",
|
|
3485
3664
|
"config_key": "re-export-cycle",
|
|
3486
|
-
"registry_index":
|
|
3665
|
+
"registry_index": 22,
|
|
3487
3666
|
"aliases": [
|
|
3488
3667
|
"re-export-cycles",
|
|
3489
3668
|
"reexport-cycle",
|
|
@@ -3524,7 +3703,7 @@
|
|
|
3524
3703
|
"description": "Two or more workspace packages import each other in a loop",
|
|
3525
3704
|
"label": "Package Cycles",
|
|
3526
3705
|
"config_key": "package-cycle",
|
|
3527
|
-
"registry_index":
|
|
3706
|
+
"registry_index": 23,
|
|
3528
3707
|
"aliases": [
|
|
3529
3708
|
"package-cycles"
|
|
3530
3709
|
],
|
|
@@ -3563,7 +3742,7 @@
|
|
|
3563
3742
|
"description": "Import crosses a configured architecture boundary",
|
|
3564
3743
|
"label": "Boundary Violations",
|
|
3565
3744
|
"config_key": "boundary-violation",
|
|
3566
|
-
"registry_index":
|
|
3745
|
+
"registry_index": 24,
|
|
3567
3746
|
"aliases": [],
|
|
3568
3747
|
"lsp": true,
|
|
3569
3748
|
"filter_flag": "--boundary-violations",
|
|
@@ -3600,7 +3779,7 @@
|
|
|
3600
3779
|
"description": "Source file matches no configured architecture boundary zone",
|
|
3601
3780
|
"label": "Boundary Coverage",
|
|
3602
3781
|
"config_key": "boundary-violation",
|
|
3603
|
-
"registry_index":
|
|
3782
|
+
"registry_index": 25,
|
|
3604
3783
|
"aliases": [
|
|
3605
3784
|
"boundary-coverage-violations"
|
|
3606
3785
|
],
|
|
@@ -3636,7 +3815,7 @@
|
|
|
3636
3815
|
"description": "Zoned file calls a callee its zone forbids",
|
|
3637
3816
|
"label": "Boundary Call Violations",
|
|
3638
3817
|
"config_key": "boundary-violation",
|
|
3639
|
-
"registry_index":
|
|
3818
|
+
"registry_index": 26,
|
|
3640
3819
|
"aliases": [
|
|
3641
3820
|
"boundary-calls",
|
|
3642
3821
|
"boundary-call-violations"
|
|
@@ -3673,7 +3852,7 @@
|
|
|
3673
3852
|
"description": "Usage violates a configured rule-pack policy",
|
|
3674
3853
|
"label": "Policy Violations",
|
|
3675
3854
|
"config_key": "policy-violation",
|
|
3676
|
-
"registry_index":
|
|
3855
|
+
"registry_index": 27,
|
|
3677
3856
|
"aliases": [
|
|
3678
3857
|
"policy-violations"
|
|
3679
3858
|
],
|
|
@@ -3709,7 +3888,7 @@
|
|
|
3709
3888
|
"description": "Suppression comment or tag no longer matches any issue",
|
|
3710
3889
|
"label": "Stale Suppressions",
|
|
3711
3890
|
"config_key": "stale-suppressions",
|
|
3712
|
-
"registry_index":
|
|
3891
|
+
"registry_index": 46,
|
|
3713
3892
|
"aliases": [],
|
|
3714
3893
|
"lsp": true,
|
|
3715
3894
|
"filter_flag": "--stale-suppressions",
|
|
@@ -3745,7 +3924,7 @@
|
|
|
3745
3924
|
"description": "Suppression comment omits a required reason",
|
|
3746
3925
|
"label": "Missing Suppression Reasons",
|
|
3747
3926
|
"config_key": "require-suppression-reason",
|
|
3748
|
-
"registry_index":
|
|
3927
|
+
"registry_index": 47,
|
|
3749
3928
|
"aliases": [
|
|
3750
3929
|
"missing-suppression-reasons"
|
|
3751
3930
|
],
|
|
@@ -3777,7 +3956,7 @@
|
|
|
3777
3956
|
"description": "Catalog entry not referenced by any workspace package",
|
|
3778
3957
|
"label": "Unused Catalog Entries",
|
|
3779
3958
|
"config_key": "unused-catalog-entries",
|
|
3780
|
-
"registry_index":
|
|
3959
|
+
"registry_index": 48,
|
|
3781
3960
|
"aliases": [
|
|
3782
3961
|
"catalog",
|
|
3783
3962
|
"unused-catalog-entries"
|
|
@@ -3817,7 +3996,7 @@
|
|
|
3817
3996
|
"description": "Named catalog group has no entries",
|
|
3818
3997
|
"label": "Empty Catalog Groups",
|
|
3819
3998
|
"config_key": "empty-catalog-groups",
|
|
3820
|
-
"registry_index":
|
|
3999
|
+
"registry_index": 49,
|
|
3821
4000
|
"aliases": [
|
|
3822
4001
|
"empty-catalog",
|
|
3823
4002
|
"empty-catalog-groups"
|
|
@@ -3857,7 +4036,7 @@
|
|
|
3857
4036
|
"description": "package.json references a catalog that does not declare the package",
|
|
3858
4037
|
"label": "Unresolved Catalog References",
|
|
3859
4038
|
"config_key": "unresolved-catalog-references",
|
|
3860
|
-
"registry_index":
|
|
4039
|
+
"registry_index": 50,
|
|
3861
4040
|
"aliases": [
|
|
3862
4041
|
"unresolved-catalog",
|
|
3863
4042
|
"unresolved-catalog-references"
|
|
@@ -3897,7 +4076,7 @@
|
|
|
3897
4076
|
"description": "Package-manager override target is not declared or resolved",
|
|
3898
4077
|
"label": "Unused Dependency Overrides",
|
|
3899
4078
|
"config_key": "unused-dependency-overrides",
|
|
3900
|
-
"registry_index":
|
|
4079
|
+
"registry_index": 51,
|
|
3901
4080
|
"aliases": [
|
|
3902
4081
|
"unused-dependency-overrides",
|
|
3903
4082
|
"unused-override",
|
|
@@ -3938,7 +4117,7 @@
|
|
|
3938
4117
|
"description": "Package-manager override has an unparsable key or value",
|
|
3939
4118
|
"label": "Misconfigured Dependency Overrides",
|
|
3940
4119
|
"config_key": "misconfigured-dependency-overrides",
|
|
3941
|
-
"registry_index":
|
|
4120
|
+
"registry_index": 52,
|
|
3942
4121
|
"aliases": [
|
|
3943
4122
|
"misconfigured-dependency-overrides",
|
|
3944
4123
|
"misconfigured-override",
|
|
@@ -3979,7 +4158,7 @@
|
|
|
3979
4158
|
"description": "\"use client\" file exports a server-only / route-config name",
|
|
3980
4159
|
"label": "Invalid Client Exports",
|
|
3981
4160
|
"config_key": "invalid-client-export",
|
|
3982
|
-
"registry_index":
|
|
4161
|
+
"registry_index": 28,
|
|
3983
4162
|
"aliases": [
|
|
3984
4163
|
"invalid-client-exports"
|
|
3985
4164
|
],
|
|
@@ -4017,7 +4196,7 @@
|
|
|
4017
4196
|
"description": "Barrel re-exports both a \"use client\" module and a server-only module",
|
|
4018
4197
|
"label": "Mixed Client/Server Barrels",
|
|
4019
4198
|
"config_key": "mixed-client-server-barrel",
|
|
4020
|
-
"registry_index":
|
|
4199
|
+
"registry_index": 29,
|
|
4021
4200
|
"aliases": [
|
|
4022
4201
|
"mixed-client-server-barrels"
|
|
4023
4202
|
],
|
|
@@ -4053,7 +4232,7 @@
|
|
|
4053
4232
|
"description": "\"use client\" / \"use server\" directive is not in the leading position and is ignored",
|
|
4054
4233
|
"label": "Misplaced Directives",
|
|
4055
4234
|
"config_key": "misplaced-directive",
|
|
4056
|
-
"registry_index":
|
|
4235
|
+
"registry_index": 30,
|
|
4057
4236
|
"aliases": [
|
|
4058
4237
|
"misplaced-directives"
|
|
4059
4238
|
],
|
|
@@ -4089,7 +4268,7 @@
|
|
|
4089
4268
|
"description": "inject() / getContext() reads a key that no provide() / setContext() supplies",
|
|
4090
4269
|
"label": "Unprovided Injects",
|
|
4091
4270
|
"config_key": "unprovided-injects",
|
|
4092
|
-
"registry_index":
|
|
4271
|
+
"registry_index": 31,
|
|
4093
4272
|
"aliases": [
|
|
4094
4273
|
"unprovided-injects"
|
|
4095
4274
|
],
|
|
@@ -4125,7 +4304,7 @@
|
|
|
4125
4304
|
"description": "A Vue / Svelte component is reachable through a barrel but rendered nowhere",
|
|
4126
4305
|
"label": "Unrendered Components",
|
|
4127
4306
|
"config_key": "unrendered-components",
|
|
4128
|
-
"registry_index":
|
|
4307
|
+
"registry_index": 32,
|
|
4129
4308
|
"aliases": [
|
|
4130
4309
|
"unrendered-components"
|
|
4131
4310
|
],
|
|
@@ -4161,7 +4340,7 @@
|
|
|
4161
4340
|
"description": "Known reachable callers omit an optional prop consumed inside its component",
|
|
4162
4341
|
"label": "Absent Optional Component Props",
|
|
4163
4342
|
"config_key": "absent-component-props",
|
|
4164
|
-
"registry_index":
|
|
4343
|
+
"registry_index": 34,
|
|
4165
4344
|
"aliases": [
|
|
4166
4345
|
"absent-component-props"
|
|
4167
4346
|
],
|
|
@@ -4197,7 +4376,7 @@
|
|
|
4197
4376
|
"description": "A Vue, Svelte, or React component prop is referenced nowhere in its own component",
|
|
4198
4377
|
"label": "Unused Component Props",
|
|
4199
4378
|
"config_key": "unused-component-props",
|
|
4200
|
-
"registry_index":
|
|
4379
|
+
"registry_index": 33,
|
|
4201
4380
|
"aliases": [
|
|
4202
4381
|
"unused-component-props"
|
|
4203
4382
|
],
|
|
@@ -4233,7 +4412,7 @@
|
|
|
4233
4412
|
"description": "A Vue <script setup> defineEmits event is emitted nowhere in its own component",
|
|
4234
4413
|
"label": "Unused Component Emits",
|
|
4235
4414
|
"config_key": "unused-component-emits",
|
|
4236
|
-
"registry_index":
|
|
4415
|
+
"registry_index": 35,
|
|
4237
4416
|
"aliases": [
|
|
4238
4417
|
"unused-component-emits"
|
|
4239
4418
|
],
|
|
@@ -4269,7 +4448,7 @@
|
|
|
4269
4448
|
"description": "An Angular @Input() / signal input() / model() input is read nowhere in its own component",
|
|
4270
4449
|
"label": "Unused Component Inputs",
|
|
4271
4450
|
"config_key": "unused-component-inputs",
|
|
4272
|
-
"registry_index":
|
|
4451
|
+
"registry_index": 36,
|
|
4273
4452
|
"aliases": [
|
|
4274
4453
|
"unused-component-inputs"
|
|
4275
4454
|
],
|
|
@@ -4305,7 +4484,7 @@
|
|
|
4305
4484
|
"description": "An Angular @Output() / signal output() output is emitted nowhere in its own component",
|
|
4306
4485
|
"label": "Unused Component Outputs",
|
|
4307
4486
|
"config_key": "unused-component-outputs",
|
|
4308
|
-
"registry_index":
|
|
4487
|
+
"registry_index": 37,
|
|
4309
4488
|
"aliases": [
|
|
4310
4489
|
"unused-component-outputs"
|
|
4311
4490
|
],
|
|
@@ -4341,7 +4520,7 @@
|
|
|
4341
4520
|
"description": "A Svelte component dispatches a createEventDispatcher event whose name is listened to nowhere in the project",
|
|
4342
4521
|
"label": "Unused Svelte Events",
|
|
4343
4522
|
"config_key": "unused-svelte-events",
|
|
4344
|
-
"registry_index":
|
|
4523
|
+
"registry_index": 38,
|
|
4345
4524
|
"aliases": [
|
|
4346
4525
|
"unused-svelte-events"
|
|
4347
4526
|
],
|
|
@@ -4377,7 +4556,7 @@
|
|
|
4377
4556
|
"description": "An Effect layer is composed only into layers that nothing uses",
|
|
4378
4557
|
"label": "Unused Effect Layers",
|
|
4379
4558
|
"config_key": "unused-effect-layers",
|
|
4380
|
-
"registry_index":
|
|
4559
|
+
"registry_index": 41,
|
|
4381
4560
|
"aliases": [
|
|
4382
4561
|
"unused-effect-layers"
|
|
4383
4562
|
],
|
|
@@ -4413,7 +4592,7 @@
|
|
|
4413
4592
|
"description": "An Effect tagged error class is referenced only as a type or a catchTag string, and no code constructs or fails with it",
|
|
4414
4593
|
"label": "Unused Tagged Errors",
|
|
4415
4594
|
"config_key": "unused-tagged-errors",
|
|
4416
|
-
"registry_index":
|
|
4595
|
+
"registry_index": 42,
|
|
4417
4596
|
"aliases": [
|
|
4418
4597
|
"unused-tagged-errors"
|
|
4419
4598
|
],
|
|
@@ -4449,7 +4628,7 @@
|
|
|
4449
4628
|
"description": "A catchTag handler names a project error tag that no code produces",
|
|
4450
4629
|
"label": "Unproduced Catch Tags",
|
|
4451
4630
|
"config_key": "unproduced-catch-tags",
|
|
4452
|
-
"registry_index":
|
|
4631
|
+
"registry_index": 43,
|
|
4453
4632
|
"aliases": [
|
|
4454
4633
|
"unproduced-catch-tags"
|
|
4455
4634
|
],
|
|
@@ -4485,7 +4664,7 @@
|
|
|
4485
4664
|
"description": "A Next.js Server Action exported from a \"use server\" file is referenced by no code in the project",
|
|
4486
4665
|
"label": "Unused Server Actions",
|
|
4487
4666
|
"config_key": "unused-server-actions",
|
|
4488
|
-
"registry_index":
|
|
4667
|
+
"registry_index": 39,
|
|
4489
4668
|
"aliases": [
|
|
4490
4669
|
"unused-server-actions"
|
|
4491
4670
|
],
|
|
@@ -4521,7 +4700,7 @@
|
|
|
4521
4700
|
"description": "A SvelteKit load() return-object key is read by no consumer",
|
|
4522
4701
|
"label": "Unused Load Data Keys",
|
|
4523
4702
|
"config_key": "unused-load-data-keys",
|
|
4524
|
-
"registry_index":
|
|
4703
|
+
"registry_index": 40,
|
|
4525
4704
|
"aliases": [
|
|
4526
4705
|
"unused-load-data-keys"
|
|
4527
4706
|
],
|
|
@@ -4557,7 +4736,7 @@
|
|
|
4557
4736
|
"description": "A React/Preact prop is forwarded unchanged through 3+ pass-through components to a distant consumer",
|
|
4558
4737
|
"label": "Prop Drilling",
|
|
4559
4738
|
"config_key": "prop-drilling",
|
|
4560
|
-
"registry_index":
|
|
4739
|
+
"registry_index": 58,
|
|
4561
4740
|
"aliases": [],
|
|
4562
4741
|
"lsp": true,
|
|
4563
4742
|
"filter_flag": null,
|
|
@@ -4591,7 +4770,7 @@
|
|
|
4591
4770
|
"description": "A React/Preact component whose whole body is a single spread-forwarded child render (a candidate for inlining)",
|
|
4592
4771
|
"label": "Thin Wrappers",
|
|
4593
4772
|
"config_key": "thin-wrapper",
|
|
4594
|
-
"registry_index":
|
|
4773
|
+
"registry_index": 59,
|
|
4595
4774
|
"aliases": [
|
|
4596
4775
|
"thin-wrappers"
|
|
4597
4776
|
],
|
|
@@ -4627,7 +4806,7 @@
|
|
|
4627
4806
|
"description": "Three or more React/Preact components across two or more files declare an identical prop-name set (a missing shared Props type)",
|
|
4628
4807
|
"label": "Duplicate Prop Shapes",
|
|
4629
4808
|
"config_key": "duplicate-prop-shape",
|
|
4630
|
-
"registry_index":
|
|
4809
|
+
"registry_index": 60,
|
|
4631
4810
|
"aliases": [
|
|
4632
4811
|
"duplicate-prop-shapes"
|
|
4633
4812
|
],
|
|
@@ -4663,7 +4842,7 @@
|
|
|
4663
4842
|
"description": "Two or more Next.js App Router route files resolve to the same URL",
|
|
4664
4843
|
"label": "Route Collisions",
|
|
4665
4844
|
"config_key": "route-collision",
|
|
4666
|
-
"registry_index":
|
|
4845
|
+
"registry_index": 44,
|
|
4667
4846
|
"aliases": [
|
|
4668
4847
|
"route-collisions"
|
|
4669
4848
|
],
|
|
@@ -4701,7 +4880,7 @@
|
|
|
4701
4880
|
"description": "Sibling Next.js dynamic route segments use different slug names at the same position",
|
|
4702
4881
|
"label": "Dynamic Segment Conflicts",
|
|
4703
4882
|
"config_key": "dynamic-segment-name-conflict",
|
|
4704
|
-
"registry_index":
|
|
4883
|
+
"registry_index": 45,
|
|
4705
4884
|
"aliases": [
|
|
4706
4885
|
"dynamic-segment-name-conflicts"
|
|
4707
4886
|
],
|
|
@@ -4919,7 +5098,7 @@
|
|
|
4919
5098
|
"description": "CSS or CSS-in-JS hardcoded styling value bypasses the design token system",
|
|
4920
5099
|
"label": "CSS Token Drift",
|
|
4921
5100
|
"config_key": "css-token-drift",
|
|
4922
|
-
"registry_index":
|
|
5101
|
+
"registry_index": 61,
|
|
4923
5102
|
"aliases": [],
|
|
4924
5103
|
"lsp": false,
|
|
4925
5104
|
"filter_flag": null,
|
|
@@ -4949,7 +5128,7 @@
|
|
|
4949
5128
|
"description": "CSS or CSS-in-JS declaration block is duplicated across rules",
|
|
4950
5129
|
"label": "CSS Duplicate Block",
|
|
4951
5130
|
"config_key": "css-duplicate-block",
|
|
4952
|
-
"registry_index":
|
|
5131
|
+
"registry_index": 62,
|
|
4953
5132
|
"aliases": [],
|
|
4954
5133
|
"lsp": false,
|
|
4955
5134
|
"filter_flag": null,
|
|
@@ -4979,7 +5158,7 @@
|
|
|
4979
5158
|
"description": "CSS selector, nesting, or important usage is structurally complex",
|
|
4980
5159
|
"label": "CSS Selector Complexity",
|
|
4981
5160
|
"config_key": "css-selector-complexity",
|
|
4982
|
-
"registry_index":
|
|
5161
|
+
"registry_index": 63,
|
|
4983
5162
|
"aliases": [],
|
|
4984
5163
|
"lsp": false,
|
|
4985
5164
|
"filter_flag": null,
|
|
@@ -5009,7 +5188,7 @@
|
|
|
5009
5188
|
"description": "CSS or CSS-in-JS surface appears unused",
|
|
5010
5189
|
"label": "CSS Dead Surface",
|
|
5011
5190
|
"config_key": "css-dead-surface",
|
|
5012
|
-
"registry_index":
|
|
5191
|
+
"registry_index": 64,
|
|
5013
5192
|
"aliases": [],
|
|
5014
5193
|
"lsp": false,
|
|
5015
5194
|
"filter_flag": null,
|
|
@@ -5039,7 +5218,7 @@
|
|
|
5039
5218
|
"description": "CSS or CSS-in-JS reference resolves to no stylesheet definition",
|
|
5040
5219
|
"label": "CSS Broken Reference",
|
|
5041
5220
|
"config_key": "css-broken-reference",
|
|
5042
|
-
"registry_index":
|
|
5221
|
+
"registry_index": 65,
|
|
5043
5222
|
"aliases": [],
|
|
5044
5223
|
"lsp": false,
|
|
5045
5224
|
"filter_flag": null,
|
|
@@ -5429,7 +5608,7 @@
|
|
|
5429
5608
|
"description": "Detected feature flag pattern",
|
|
5430
5609
|
"label": "Feature Flags",
|
|
5431
5610
|
"config_key": "feature-flags",
|
|
5432
|
-
"registry_index":
|
|
5611
|
+
"registry_index": 56,
|
|
5433
5612
|
"aliases": [],
|
|
5434
5613
|
"lsp": false,
|
|
5435
5614
|
"filter_flag": null,
|
|
@@ -6929,7 +7108,7 @@
|
|
|
6929
7108
|
"description": "The change weakens tests or a coverage threshold",
|
|
6930
7109
|
"label": "Weakened Tests",
|
|
6931
7110
|
"config_key": "weakened-tests",
|
|
6932
|
-
"registry_index":
|
|
7111
|
+
"registry_index": 66,
|
|
6933
7112
|
"aliases": [],
|
|
6934
7113
|
"lsp": false,
|
|
6935
7114
|
"filter_flag": null,
|
|
@@ -6959,7 +7138,7 @@
|
|
|
6959
7138
|
"description": "The change adds a suppression comment",
|
|
6960
7139
|
"label": "Added Suppressions",
|
|
6961
7140
|
"config_key": "added-suppression",
|
|
6962
|
-
"registry_index":
|
|
7141
|
+
"registry_index": 67,
|
|
6963
7142
|
"aliases": [],
|
|
6964
7143
|
"lsp": false,
|
|
6965
7144
|
"filter_flag": null,
|
|
@@ -6989,7 +7168,7 @@
|
|
|
6989
7168
|
"description": "The change adds a test-environment branch to source code",
|
|
6990
7169
|
"label": "Test-Only Branches",
|
|
6991
7170
|
"config_key": "test-only-branch",
|
|
6992
|
-
"registry_index":
|
|
7171
|
+
"registry_index": 68,
|
|
6993
7172
|
"aliases": [],
|
|
6994
7173
|
"lsp": false,
|
|
6995
7174
|
"filter_flag": null,
|
|
@@ -7019,7 +7198,7 @@
|
|
|
7019
7198
|
"description": "The change edits one copy of duplicated code but not its siblings",
|
|
7020
7199
|
"label": "Diverged Clone Siblings",
|
|
7021
7200
|
"config_key": "diverged-clone-sibling",
|
|
7022
|
-
"registry_index":
|
|
7201
|
+
"registry_index": 69,
|
|
7023
7202
|
"aliases": [],
|
|
7024
7203
|
"lsp": false,
|
|
7025
7204
|
"filter_flag": null,
|
|
@@ -7049,7 +7228,7 @@
|
|
|
7049
7228
|
"description": "The change adds a dependency",
|
|
7050
7229
|
"label": "Added Dependencies",
|
|
7051
7230
|
"config_key": "added-dependency",
|
|
7052
|
-
"registry_index":
|
|
7231
|
+
"registry_index": 70,
|
|
7053
7232
|
"aliases": [],
|
|
7054
7233
|
"lsp": false,
|
|
7055
7234
|
"filter_flag": null,
|
|
@@ -7788,6 +7967,19 @@
|
|
|
7788
7967
|
"read_only": true,
|
|
7789
7968
|
"code_mode_alias": null
|
|
7790
7969
|
},
|
|
7970
|
+
{
|
|
7971
|
+
"name": "mutation_tasks",
|
|
7972
|
+
"kind": "trace",
|
|
7973
|
+
"description": "The open tasks of a saved mutation report (default: the last run report) as one batch: each survived or uncovered mutant with its source lines before and after the change; runs no tests",
|
|
7974
|
+
"cli_command": "fallow mutation tasks [--report <report.json>] --format json --quiet",
|
|
7975
|
+
"key_params": [
|
|
7976
|
+
"report"
|
|
7977
|
+
],
|
|
7978
|
+
"license": "free",
|
|
7979
|
+
"license_note": null,
|
|
7980
|
+
"read_only": true,
|
|
7981
|
+
"code_mode_alias": null
|
|
7982
|
+
},
|
|
7791
7983
|
{
|
|
7792
7984
|
"name": "inspect_target",
|
|
7793
7985
|
"kind": "analysis",
|