fallow 2.104.0 → 3.0.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.
@@ -0,0 +1,3448 @@
1
+ {
2
+ "schema_version": 1,
3
+ "source": "fallow schema issue_types",
4
+ "issue_types": [
5
+ {
6
+ "id": "code-duplication",
7
+ "rule_id": "fallow/code-duplication",
8
+ "command": "dupes",
9
+ "category": "Duplication",
10
+ "description": "Duplicated code block",
11
+ "label": "Code Duplication",
12
+ "config_key": null,
13
+ "registry_index": 0,
14
+ "aliases": [],
15
+ "lsp": true,
16
+ "filter_flag": null,
17
+ "result_key": null,
18
+ "summary_label": null,
19
+ "summary_docs_anchor": null,
20
+ "sarif_rule_ids": null,
21
+ "codeclimate_check_names": null,
22
+ "ts_alias": null,
23
+ "counts_in_total": false,
24
+ "fixable": false,
25
+ "suppressible": true,
26
+ "suppress_comment": "// fallow-ignore-next-line code-duplication",
27
+ "note": "Reported by fallow dupes (and bare fallow / fallow audit)",
28
+ "license": "free",
29
+ "license_note": null,
30
+ "docs_url": "https://docs.fallow.tools/explanations/duplication#clone-groups"
31
+ },
32
+ {
33
+ "id": "unused-file",
34
+ "rule_id": "fallow/unused-file",
35
+ "command": "dead-code",
36
+ "category": "Dead code",
37
+ "description": "File is not reachable from any entry point",
38
+ "label": "Unused Files",
39
+ "config_key": "unused-files",
40
+ "registry_index": 1,
41
+ "aliases": [],
42
+ "lsp": true,
43
+ "filter_flag": "--unused-files",
44
+ "result_key": "unused_files",
45
+ "summary_label": "Unused files",
46
+ "summary_docs_anchor": "unused-files",
47
+ "sarif_rule_ids": [
48
+ "fallow/unused-file"
49
+ ],
50
+ "codeclimate_check_names": [
51
+ "fallow/unused-file"
52
+ ],
53
+ "ts_alias": {
54
+ "name": "UnusedFile",
55
+ "parent": "UnusedFileFinding"
56
+ },
57
+ "counts_in_total": true,
58
+ "fixable": false,
59
+ "suppressible": true,
60
+ "suppress_comment": "// fallow-ignore-file unused-file",
61
+ "note": null,
62
+ "license": "free",
63
+ "license_note": null,
64
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-files"
65
+ },
66
+ {
67
+ "id": "unused-export",
68
+ "rule_id": "fallow/unused-export",
69
+ "command": "dead-code",
70
+ "category": "Dead code",
71
+ "description": "Export is never imported",
72
+ "label": "Unused Exports",
73
+ "config_key": "unused-exports",
74
+ "registry_index": 2,
75
+ "aliases": [],
76
+ "lsp": true,
77
+ "filter_flag": "--unused-exports",
78
+ "result_key": "unused_exports",
79
+ "summary_label": "Unused exports",
80
+ "summary_docs_anchor": "unused-exports",
81
+ "sarif_rule_ids": [
82
+ "fallow/unused-export"
83
+ ],
84
+ "codeclimate_check_names": [
85
+ "fallow/unused-export"
86
+ ],
87
+ "ts_alias": {
88
+ "name": "UnusedExport",
89
+ "parent": "UnusedExportFinding"
90
+ },
91
+ "counts_in_total": true,
92
+ "fixable": true,
93
+ "suppressible": true,
94
+ "suppress_comment": "// fallow-ignore-next-line unused-export",
95
+ "note": null,
96
+ "license": "free",
97
+ "license_note": null,
98
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-exports"
99
+ },
100
+ {
101
+ "id": "unused-type",
102
+ "rule_id": "fallow/unused-type",
103
+ "command": "dead-code",
104
+ "category": "Dead code",
105
+ "description": "Type export is never imported",
106
+ "label": "Unused Types",
107
+ "config_key": "unused-types",
108
+ "registry_index": 3,
109
+ "aliases": [],
110
+ "lsp": true,
111
+ "filter_flag": "--unused-types",
112
+ "result_key": "unused_types",
113
+ "summary_label": "Unused types",
114
+ "summary_docs_anchor": "unused-types",
115
+ "sarif_rule_ids": [
116
+ "fallow/unused-type"
117
+ ],
118
+ "codeclimate_check_names": [
119
+ "fallow/unused-type"
120
+ ],
121
+ "ts_alias": null,
122
+ "counts_in_total": true,
123
+ "fixable": false,
124
+ "suppressible": true,
125
+ "suppress_comment": "// fallow-ignore-next-line unused-type",
126
+ "note": null,
127
+ "license": "free",
128
+ "license_note": null,
129
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-types"
130
+ },
131
+ {
132
+ "id": "private-type-leak",
133
+ "rule_id": "fallow/private-type-leak",
134
+ "command": "dead-code",
135
+ "category": "Dead code",
136
+ "description": "Exported signature references a private type",
137
+ "label": "Private Type Leaks",
138
+ "config_key": "private-type-leaks",
139
+ "registry_index": 4,
140
+ "aliases": [],
141
+ "lsp": true,
142
+ "filter_flag": "--private-type-leaks",
143
+ "result_key": "private_type_leaks",
144
+ "summary_label": "Private type leaks",
145
+ "summary_docs_anchor": "private-type-leaks",
146
+ "sarif_rule_ids": [
147
+ "fallow/private-type-leak"
148
+ ],
149
+ "codeclimate_check_names": [
150
+ "fallow/private-type-leak"
151
+ ],
152
+ "ts_alias": {
153
+ "name": "PrivateTypeLeak",
154
+ "parent": "PrivateTypeLeakFinding"
155
+ },
156
+ "counts_in_total": true,
157
+ "fixable": false,
158
+ "suppressible": true,
159
+ "suppress_comment": "// fallow-ignore-next-line private-type-leak",
160
+ "note": "Opt-in API hygiene check; the rule defaults to off",
161
+ "license": "free",
162
+ "license_note": null,
163
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#private-type-leaks"
164
+ },
165
+ {
166
+ "id": "unused-dependency",
167
+ "rule_id": "fallow/unused-dependency",
168
+ "command": "dead-code",
169
+ "category": "Dependencies",
170
+ "description": "Dependency listed but never imported",
171
+ "label": "Unused Dependencies",
172
+ "config_key": "unused-dependencies",
173
+ "registry_index": 5,
174
+ "aliases": [],
175
+ "lsp": true,
176
+ "filter_flag": "--unused-deps",
177
+ "result_key": "unused_dependencies",
178
+ "summary_label": "Unused dependencies",
179
+ "summary_docs_anchor": "unused-dependencies",
180
+ "sarif_rule_ids": [
181
+ "fallow/unused-dependency"
182
+ ],
183
+ "codeclimate_check_names": [
184
+ "fallow/unused-dependency"
185
+ ],
186
+ "ts_alias": {
187
+ "name": "UnusedDependency",
188
+ "parent": "UnusedDependencyFinding"
189
+ },
190
+ "counts_in_total": true,
191
+ "fixable": true,
192
+ "suppressible": false,
193
+ "suppress_comment": null,
194
+ "note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
195
+ "license": "free",
196
+ "license_note": null,
197
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-dependencies"
198
+ },
199
+ {
200
+ "id": "unused-dev-dependency",
201
+ "rule_id": "fallow/unused-dev-dependency",
202
+ "command": "dead-code",
203
+ "category": "Dependencies",
204
+ "description": "Dev dependency listed but never imported",
205
+ "label": "Unused Dev Dependencies",
206
+ "config_key": "unused-dev-dependencies",
207
+ "registry_index": 6,
208
+ "aliases": [
209
+ "unused-dev-deps",
210
+ "unused-dev-dependencies"
211
+ ],
212
+ "lsp": true,
213
+ "filter_flag": "--unused-deps",
214
+ "result_key": "unused_dev_dependencies",
215
+ "summary_label": "Unused devDependencies",
216
+ "summary_docs_anchor": "unused-dependencies",
217
+ "sarif_rule_ids": [
218
+ "fallow/unused-dev-dependency"
219
+ ],
220
+ "codeclimate_check_names": [
221
+ "fallow/unused-dev-dependency"
222
+ ],
223
+ "ts_alias": {
224
+ "name": "UnusedDependency",
225
+ "parent": "UnusedDevDependencyFinding"
226
+ },
227
+ "counts_in_total": true,
228
+ "fixable": true,
229
+ "suppressible": false,
230
+ "suppress_comment": null,
231
+ "note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
232
+ "license": "free",
233
+ "license_note": null,
234
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-devdependencies"
235
+ },
236
+ {
237
+ "id": "unused-optional-dependency",
238
+ "rule_id": "fallow/unused-optional-dependency",
239
+ "command": "dead-code",
240
+ "category": "Dependencies",
241
+ "description": "Optional dependency listed but never imported",
242
+ "label": "Unused Optional Dependencies",
243
+ "config_key": "unused-optional-dependencies",
244
+ "registry_index": 7,
245
+ "aliases": [
246
+ "unused-optional-deps",
247
+ "unused-optional-dependencies"
248
+ ],
249
+ "lsp": true,
250
+ "filter_flag": "--unused-deps",
251
+ "result_key": "unused_optional_dependencies",
252
+ "summary_label": "Unused optionalDependencies",
253
+ "summary_docs_anchor": "unused-dependencies",
254
+ "sarif_rule_ids": [
255
+ "fallow/unused-optional-dependency"
256
+ ],
257
+ "codeclimate_check_names": [
258
+ "fallow/unused-optional-dependency"
259
+ ],
260
+ "ts_alias": {
261
+ "name": "UnusedDependency",
262
+ "parent": "UnusedOptionalDependencyFinding"
263
+ },
264
+ "counts_in_total": true,
265
+ "fixable": true,
266
+ "suppressible": false,
267
+ "suppress_comment": null,
268
+ "note": "--unused-deps controls unused-dependency, unused-dev-dependency, unused-optional-dependency, type-only-dependency, and test-only-dependency",
269
+ "license": "free",
270
+ "license_note": null,
271
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-optionaldependencies"
272
+ },
273
+ {
274
+ "id": "unused-enum-member",
275
+ "rule_id": "fallow/unused-enum-member",
276
+ "command": "dead-code",
277
+ "category": "Dead code",
278
+ "description": "Enum member is never referenced",
279
+ "label": "Unused Enum Members",
280
+ "config_key": "unused-enum-members",
281
+ "registry_index": 8,
282
+ "aliases": [],
283
+ "lsp": true,
284
+ "filter_flag": "--unused-enum-members",
285
+ "result_key": "unused_enum_members",
286
+ "summary_label": "Unused enum members",
287
+ "summary_docs_anchor": "unused-enum-members",
288
+ "sarif_rule_ids": [
289
+ "fallow/unused-enum-member"
290
+ ],
291
+ "codeclimate_check_names": [
292
+ "fallow/unused-enum-member"
293
+ ],
294
+ "ts_alias": {
295
+ "name": "UnusedMember",
296
+ "parent": "UnusedEnumMemberFinding"
297
+ },
298
+ "counts_in_total": true,
299
+ "fixable": true,
300
+ "suppressible": true,
301
+ "suppress_comment": "// fallow-ignore-next-line unused-enum-member",
302
+ "note": null,
303
+ "license": "free",
304
+ "license_note": null,
305
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-enum-members"
306
+ },
307
+ {
308
+ "id": "unused-class-member",
309
+ "rule_id": "fallow/unused-class-member",
310
+ "command": "dead-code",
311
+ "category": "Dead code",
312
+ "description": "Class member is never referenced",
313
+ "label": "Unused Class Members",
314
+ "config_key": "unused-class-members",
315
+ "registry_index": 9,
316
+ "aliases": [],
317
+ "lsp": true,
318
+ "filter_flag": "--unused-class-members",
319
+ "result_key": "unused_class_members",
320
+ "summary_label": "Unused class members",
321
+ "summary_docs_anchor": "unused-class-members",
322
+ "sarif_rule_ids": [
323
+ "fallow/unused-class-member"
324
+ ],
325
+ "codeclimate_check_names": [
326
+ "fallow/unused-class-member"
327
+ ],
328
+ "ts_alias": {
329
+ "name": "UnusedMember",
330
+ "parent": "UnusedClassMemberFinding"
331
+ },
332
+ "counts_in_total": true,
333
+ "fixable": false,
334
+ "suppressible": true,
335
+ "suppress_comment": "// fallow-ignore-next-line unused-class-member",
336
+ "note": null,
337
+ "license": "free",
338
+ "license_note": null,
339
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-class-members"
340
+ },
341
+ {
342
+ "id": "unused-store-member",
343
+ "rule_id": "fallow/unused-store-member",
344
+ "command": "dead-code",
345
+ "category": "Dead code",
346
+ "description": "Store member is never accessed by any consumer",
347
+ "label": "Unused Store Members",
348
+ "config_key": "unused-store-members",
349
+ "registry_index": 10,
350
+ "aliases": [
351
+ "unused-store-members"
352
+ ],
353
+ "lsp": true,
354
+ "filter_flag": "--unused-store-members",
355
+ "result_key": "unused_store_members",
356
+ "summary_label": "Unused store members",
357
+ "summary_docs_anchor": "unused-store-members",
358
+ "sarif_rule_ids": [
359
+ "fallow/unused-store-member"
360
+ ],
361
+ "codeclimate_check_names": [
362
+ "fallow/unused-store-member"
363
+ ],
364
+ "ts_alias": {
365
+ "name": "UnusedMember",
366
+ "parent": "UnusedStoreMemberFinding"
367
+ },
368
+ "counts_in_total": true,
369
+ "fixable": false,
370
+ "suppressible": true,
371
+ "suppress_comment": "// fallow-ignore-next-line unused-store-member",
372
+ "note": null,
373
+ "license": "free",
374
+ "license_note": null,
375
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-store-members"
376
+ },
377
+ {
378
+ "id": "unresolved-import",
379
+ "rule_id": "fallow/unresolved-import",
380
+ "command": "dead-code",
381
+ "category": "Dead code",
382
+ "description": "Import could not be resolved",
383
+ "label": "Unresolved Imports",
384
+ "config_key": "unresolved-imports",
385
+ "registry_index": 11,
386
+ "aliases": [],
387
+ "lsp": true,
388
+ "filter_flag": "--unresolved-imports",
389
+ "result_key": "unresolved_imports",
390
+ "summary_label": "Unresolved imports",
391
+ "summary_docs_anchor": "unresolved-imports",
392
+ "sarif_rule_ids": [
393
+ "fallow/unresolved-import"
394
+ ],
395
+ "codeclimate_check_names": [
396
+ "fallow/unresolved-import"
397
+ ],
398
+ "ts_alias": {
399
+ "name": "UnresolvedImport",
400
+ "parent": "UnresolvedImportFinding"
401
+ },
402
+ "counts_in_total": true,
403
+ "fixable": false,
404
+ "suppressible": true,
405
+ "suppress_comment": "// fallow-ignore-next-line unresolved-import",
406
+ "note": null,
407
+ "license": "free",
408
+ "license_note": null,
409
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unresolved-imports"
410
+ },
411
+ {
412
+ "id": "unlisted-dependency",
413
+ "rule_id": "fallow/unlisted-dependency",
414
+ "command": "dead-code",
415
+ "category": "Dependencies",
416
+ "description": "Dependency used but not in package.json",
417
+ "label": "Unlisted Dependencies",
418
+ "config_key": "unlisted-dependencies",
419
+ "registry_index": 12,
420
+ "aliases": [],
421
+ "lsp": true,
422
+ "filter_flag": "--unlisted-deps",
423
+ "result_key": "unlisted_dependencies",
424
+ "summary_label": "Unlisted dependencies",
425
+ "summary_docs_anchor": "unlisted-dependencies",
426
+ "sarif_rule_ids": [
427
+ "fallow/unlisted-dependency"
428
+ ],
429
+ "codeclimate_check_names": [
430
+ "fallow/unlisted-dependency"
431
+ ],
432
+ "ts_alias": {
433
+ "name": "UnlistedDependency",
434
+ "parent": "UnlistedDependencyFinding"
435
+ },
436
+ "counts_in_total": true,
437
+ "fixable": false,
438
+ "suppressible": false,
439
+ "suppress_comment": null,
440
+ "note": null,
441
+ "license": "free",
442
+ "license_note": null,
443
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unlisted-dependencies"
444
+ },
445
+ {
446
+ "id": "duplicate-export",
447
+ "rule_id": "fallow/duplicate-export",
448
+ "command": "dead-code",
449
+ "category": "Dead code",
450
+ "description": "Export name appears in multiple modules",
451
+ "label": "Duplicate Exports",
452
+ "config_key": "duplicate-exports",
453
+ "registry_index": 13,
454
+ "aliases": [],
455
+ "lsp": true,
456
+ "filter_flag": "--duplicate-exports",
457
+ "result_key": "duplicate_exports",
458
+ "summary_label": "Duplicate exports",
459
+ "summary_docs_anchor": "duplicate-exports",
460
+ "sarif_rule_ids": [
461
+ "fallow/duplicate-export"
462
+ ],
463
+ "codeclimate_check_names": [
464
+ "fallow/duplicate-export"
465
+ ],
466
+ "ts_alias": {
467
+ "name": "DuplicateExport",
468
+ "parent": "DuplicateExportFinding"
469
+ },
470
+ "counts_in_total": true,
471
+ "fixable": false,
472
+ "suppressible": true,
473
+ "suppress_comment": "// fallow-ignore-file duplicate-export",
474
+ "note": "fallow fix can add an ignoreExports rule to the fallow config instead of editing source",
475
+ "license": "free",
476
+ "license_note": null,
477
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#duplicate-exports"
478
+ },
479
+ {
480
+ "id": "type-only-dependency",
481
+ "rule_id": "fallow/type-only-dependency",
482
+ "command": "dead-code",
483
+ "category": "Dependencies",
484
+ "description": "Production dependency only used via type-only imports",
485
+ "label": "Type-Only Dependencies",
486
+ "config_key": "type-only-dependencies",
487
+ "registry_index": 14,
488
+ "aliases": [],
489
+ "lsp": true,
490
+ "filter_flag": "--unused-deps",
491
+ "result_key": "type_only_dependencies",
492
+ "summary_label": "Type-only dependencies",
493
+ "summary_docs_anchor": "type-only-dependencies",
494
+ "sarif_rule_ids": [
495
+ "fallow/type-only-dependency"
496
+ ],
497
+ "codeclimate_check_names": [
498
+ "fallow/type-only-dependency"
499
+ ],
500
+ "ts_alias": {
501
+ "name": "TypeOnlyDependency",
502
+ "parent": "TypeOnlyDependencyFinding"
503
+ },
504
+ "counts_in_total": true,
505
+ "fixable": false,
506
+ "suppressible": false,
507
+ "suppress_comment": null,
508
+ "note": "Only reported in --production mode; --unused-deps scopes it together with the other dependency kinds",
509
+ "license": "free",
510
+ "license_note": null,
511
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#type-only-dependencies"
512
+ },
513
+ {
514
+ "id": "test-only-dependency",
515
+ "rule_id": "fallow/test-only-dependency",
516
+ "command": "dead-code",
517
+ "category": "Dependencies",
518
+ "description": "Production dependency only imported by test files",
519
+ "label": "Test-Only Dependencies",
520
+ "config_key": "test-only-dependencies",
521
+ "registry_index": 15,
522
+ "aliases": [],
523
+ "lsp": true,
524
+ "filter_flag": "--unused-deps",
525
+ "result_key": "test_only_dependencies",
526
+ "summary_label": "Test-only dependencies",
527
+ "summary_docs_anchor": "test-only-dependencies",
528
+ "sarif_rule_ids": [
529
+ "fallow/test-only-dependency"
530
+ ],
531
+ "codeclimate_check_names": [
532
+ "fallow/test-only-dependency"
533
+ ],
534
+ "ts_alias": {
535
+ "name": "TestOnlyDependency",
536
+ "parent": "TestOnlyDependencyFinding"
537
+ },
538
+ "counts_in_total": true,
539
+ "fixable": false,
540
+ "suppressible": false,
541
+ "suppress_comment": null,
542
+ "note": "Not reported in --production mode (test files are excluded there); --unused-deps scopes it together with the other dependency kinds",
543
+ "license": "free",
544
+ "license_note": null,
545
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#test-only-dependencies"
546
+ },
547
+ {
548
+ "id": "circular-dependency",
549
+ "rule_id": "fallow/circular-dependency",
550
+ "command": "dead-code",
551
+ "category": "Architecture",
552
+ "description": "Circular dependency chain detected",
553
+ "label": "Circular Dependencies",
554
+ "config_key": "circular-dependencies",
555
+ "registry_index": 16,
556
+ "aliases": [
557
+ "circular-dependencies"
558
+ ],
559
+ "lsp": true,
560
+ "filter_flag": "--circular-deps",
561
+ "result_key": "circular_dependencies",
562
+ "summary_label": "Circular dependencies",
563
+ "summary_docs_anchor": "circular-dependencies",
564
+ "sarif_rule_ids": [
565
+ "fallow/circular-dependency"
566
+ ],
567
+ "codeclimate_check_names": [
568
+ "fallow/circular-dependency"
569
+ ],
570
+ "ts_alias": {
571
+ "name": "CircularDependency",
572
+ "parent": "CircularDependencyFinding"
573
+ },
574
+ "counts_in_total": true,
575
+ "fixable": false,
576
+ "suppressible": true,
577
+ "suppress_comment": "// fallow-ignore-next-line circular-dependency",
578
+ "note": null,
579
+ "license": "free",
580
+ "license_note": null,
581
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#circular-dependencies"
582
+ },
583
+ {
584
+ "id": "re-export-cycle",
585
+ "rule_id": "fallow/re-export-cycle",
586
+ "command": "dead-code",
587
+ "category": "Architecture",
588
+ "description": "Two or more barrel files re-export from each other in a loop",
589
+ "label": "Re-Export Cycles",
590
+ "config_key": "re-export-cycle",
591
+ "registry_index": 17,
592
+ "aliases": [
593
+ "re-export-cycles",
594
+ "reexport-cycle",
595
+ "reexport-cycles"
596
+ ],
597
+ "lsp": true,
598
+ "filter_flag": "--re-export-cycles",
599
+ "result_key": "re_export_cycles",
600
+ "summary_label": "Re-export cycles",
601
+ "summary_docs_anchor": "re-export-cycles",
602
+ "sarif_rule_ids": [
603
+ "fallow/re-export-cycle"
604
+ ],
605
+ "codeclimate_check_names": [
606
+ "fallow/re-export-cycle"
607
+ ],
608
+ "ts_alias": {
609
+ "name": "ReExportCycle",
610
+ "parent": "ReExportCycleFinding"
611
+ },
612
+ "counts_in_total": true,
613
+ "fixable": false,
614
+ "suppressible": true,
615
+ "suppress_comment": "// fallow-ignore-file re-export-cycle",
616
+ "note": null,
617
+ "license": "free",
618
+ "license_note": null,
619
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#re-export-cycles"
620
+ },
621
+ {
622
+ "id": "boundary-violation",
623
+ "rule_id": "fallow/boundary-violation",
624
+ "command": "dead-code",
625
+ "category": "Architecture",
626
+ "description": "Import crosses a configured architecture boundary",
627
+ "label": "Boundary Violations",
628
+ "config_key": "boundary-violation",
629
+ "registry_index": 18,
630
+ "aliases": [],
631
+ "lsp": true,
632
+ "filter_flag": "--boundary-violations",
633
+ "result_key": "boundary_violations",
634
+ "summary_label": "Boundary violations",
635
+ "summary_docs_anchor": "boundary-violations",
636
+ "sarif_rule_ids": [
637
+ "fallow/boundary-violation"
638
+ ],
639
+ "codeclimate_check_names": [
640
+ "fallow/boundary-violation"
641
+ ],
642
+ "ts_alias": {
643
+ "name": "BoundaryViolation",
644
+ "parent": "BoundaryViolationFinding"
645
+ },
646
+ "counts_in_total": true,
647
+ "fixable": false,
648
+ "suppressible": true,
649
+ "suppress_comment": "// fallow-ignore-next-line boundary-violation",
650
+ "note": "Requires configured boundary zones (boundaries config)",
651
+ "license": "free",
652
+ "license_note": null,
653
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#boundary-violations"
654
+ },
655
+ {
656
+ "id": "boundary-coverage",
657
+ "rule_id": "fallow/boundary-coverage",
658
+ "command": "dead-code",
659
+ "category": "Architecture",
660
+ "description": "Source file matches no configured architecture boundary zone",
661
+ "label": "Boundary Coverage",
662
+ "config_key": "boundary-violation",
663
+ "registry_index": 19,
664
+ "aliases": [
665
+ "boundary-coverage-violations"
666
+ ],
667
+ "lsp": false,
668
+ "filter_flag": "--boundary-violations",
669
+ "result_key": "boundary_coverage_violations",
670
+ "summary_label": "Boundary coverage",
671
+ "summary_docs_anchor": "boundary-violations",
672
+ "sarif_rule_ids": [
673
+ "fallow/boundary-coverage"
674
+ ],
675
+ "codeclimate_check_names": [
676
+ "fallow/boundary-coverage"
677
+ ],
678
+ "ts_alias": null,
679
+ "counts_in_total": true,
680
+ "fixable": false,
681
+ "suppressible": true,
682
+ "suppress_comment": "// fallow-ignore-file boundary-violation",
683
+ "note": "Requires boundaries.coverage.requireAllFiles",
684
+ "license": "free",
685
+ "license_note": null,
686
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#boundary-violations"
687
+ },
688
+ {
689
+ "id": "boundary-call-violation",
690
+ "rule_id": "fallow/boundary-call-violation",
691
+ "command": "dead-code",
692
+ "category": "Architecture",
693
+ "description": "Zoned file calls a callee its zone forbids",
694
+ "label": "Boundary Call Violations",
695
+ "config_key": "boundary-violation",
696
+ "registry_index": 20,
697
+ "aliases": [
698
+ "boundary-calls",
699
+ "boundary-call-violations"
700
+ ],
701
+ "lsp": false,
702
+ "filter_flag": "--boundary-violations",
703
+ "result_key": "boundary_call_violations",
704
+ "summary_label": "Boundary calls",
705
+ "summary_docs_anchor": "boundary-violations",
706
+ "sarif_rule_ids": [
707
+ "fallow/boundary-call-violation"
708
+ ],
709
+ "codeclimate_check_names": [
710
+ "fallow/boundary-call-violation"
711
+ ],
712
+ "ts_alias": null,
713
+ "counts_in_total": true,
714
+ "fixable": false,
715
+ "suppressible": true,
716
+ "suppress_comment": "// fallow-ignore-next-line boundary-call-violation",
717
+ "note": "Requires boundaries.calls.forbidden patterns",
718
+ "license": "free",
719
+ "license_note": null,
720
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#boundary-violations"
721
+ },
722
+ {
723
+ "id": "policy-violation",
724
+ "rule_id": "fallow/policy-violation",
725
+ "command": "dead-code",
726
+ "category": "Policy",
727
+ "description": "Banned usage matched a rule-pack rule",
728
+ "label": "Policy Violations",
729
+ "config_key": "policy-violation",
730
+ "registry_index": 21,
731
+ "aliases": [
732
+ "policy-violations"
733
+ ],
734
+ "lsp": true,
735
+ "filter_flag": "--policy-violations",
736
+ "result_key": "policy_violations",
737
+ "summary_label": "Policy violations",
738
+ "summary_docs_anchor": "policy-violations",
739
+ "sarif_rule_ids": [
740
+ "fallow/policy-violation"
741
+ ],
742
+ "codeclimate_check_names": [
743
+ "fallow/policy-violation"
744
+ ],
745
+ "ts_alias": null,
746
+ "counts_in_total": true,
747
+ "fixable": false,
748
+ "suppressible": true,
749
+ "suppress_comment": "// fallow-ignore-next-line policy-violation",
750
+ "note": "Requires a configured rule pack (rulePacks config)",
751
+ "license": "free",
752
+ "license_note": null,
753
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#policy-violations"
754
+ },
755
+ {
756
+ "id": "invalid-client-export",
757
+ "rule_id": "fallow/invalid-client-export",
758
+ "command": "dead-code",
759
+ "category": "Policy",
760
+ "description": "\"use client\" file exports a server-only / route-config name",
761
+ "label": "Invalid Client Exports",
762
+ "config_key": "invalid-client-export",
763
+ "registry_index": 22,
764
+ "aliases": [
765
+ "invalid-client-exports"
766
+ ],
767
+ "lsp": true,
768
+ "filter_flag": null,
769
+ "result_key": "invalid_client_exports",
770
+ "summary_label": "Invalid client exports",
771
+ "summary_docs_anchor": "invalid-client-exports",
772
+ "sarif_rule_ids": [
773
+ "fallow/invalid-client-export"
774
+ ],
775
+ "codeclimate_check_names": [
776
+ "fallow/invalid-client-export"
777
+ ],
778
+ "ts_alias": null,
779
+ "counts_in_total": true,
780
+ "fixable": false,
781
+ "suppressible": true,
782
+ "suppress_comment": "// fallow-ignore-next-line invalid-client-export",
783
+ "note": "Requires the project to declare next",
784
+ "license": "free",
785
+ "license_note": null,
786
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#invalid-client-exports"
787
+ },
788
+ {
789
+ "id": "mixed-client-server-barrel",
790
+ "rule_id": "fallow/mixed-client-server-barrel",
791
+ "command": "dead-code",
792
+ "category": "Policy",
793
+ "description": "Barrel re-exports both a \"use client\" module and a server-only module",
794
+ "label": "Mixed Client/Server Barrels",
795
+ "config_key": "mixed-client-server-barrel",
796
+ "registry_index": 23,
797
+ "aliases": [
798
+ "mixed-client-server-barrels"
799
+ ],
800
+ "lsp": true,
801
+ "filter_flag": null,
802
+ "result_key": "mixed_client_server_barrels",
803
+ "summary_label": "Mixed client/server barrels",
804
+ "summary_docs_anchor": "mixed-client-server-barrels",
805
+ "sarif_rule_ids": [
806
+ "fallow/mixed-client-server-barrel"
807
+ ],
808
+ "codeclimate_check_names": [
809
+ "fallow/mixed-client-server-barrel"
810
+ ],
811
+ "ts_alias": null,
812
+ "counts_in_total": true,
813
+ "fixable": false,
814
+ "suppressible": true,
815
+ "suppress_comment": "// fallow-ignore-next-line mixed-client-server-barrel",
816
+ "note": "Requires the project to declare next",
817
+ "license": "free",
818
+ "license_note": null,
819
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#mixed-client-server-barrels"
820
+ },
821
+ {
822
+ "id": "misplaced-directive",
823
+ "rule_id": "fallow/misplaced-directive",
824
+ "command": "dead-code",
825
+ "category": "Policy",
826
+ "description": "\"use client\" / \"use server\" directive is not in the leading position and is ignored",
827
+ "label": "Misplaced Directives",
828
+ "config_key": "misplaced-directive",
829
+ "registry_index": 24,
830
+ "aliases": [
831
+ "misplaced-directives"
832
+ ],
833
+ "lsp": true,
834
+ "filter_flag": null,
835
+ "result_key": "misplaced_directives",
836
+ "summary_label": "Misplaced directives",
837
+ "summary_docs_anchor": "misplaced-directives",
838
+ "sarif_rule_ids": [
839
+ "fallow/misplaced-directive"
840
+ ],
841
+ "codeclimate_check_names": [
842
+ "fallow/misplaced-directive"
843
+ ],
844
+ "ts_alias": null,
845
+ "counts_in_total": true,
846
+ "fixable": false,
847
+ "suppressible": true,
848
+ "suppress_comment": "// fallow-ignore-next-line misplaced-directive",
849
+ "note": "Requires the project to declare next",
850
+ "license": "free",
851
+ "license_note": null,
852
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#misplaced-directives"
853
+ },
854
+ {
855
+ "id": "unprovided-inject",
856
+ "rule_id": "fallow/unprovided-inject",
857
+ "command": "dead-code",
858
+ "category": "Dead code",
859
+ "description": "inject() / getContext() reads a key that no provide() / setContext() supplies",
860
+ "label": "Unprovided Injects",
861
+ "config_key": "unprovided-injects",
862
+ "registry_index": 25,
863
+ "aliases": [
864
+ "unprovided-injects"
865
+ ],
866
+ "lsp": true,
867
+ "filter_flag": "--unprovided-injects",
868
+ "result_key": "unprovided_injects",
869
+ "summary_label": "Unprovided injects",
870
+ "summary_docs_anchor": "unprovided-inject",
871
+ "sarif_rule_ids": [
872
+ "fallow/unprovided-inject"
873
+ ],
874
+ "codeclimate_check_names": [
875
+ "fallow/unprovided-inject"
876
+ ],
877
+ "ts_alias": null,
878
+ "counts_in_total": true,
879
+ "fixable": false,
880
+ "suppressible": true,
881
+ "suppress_comment": "// fallow-ignore-next-line unprovided-inject",
882
+ "note": null,
883
+ "license": "free",
884
+ "license_note": null,
885
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unprovided-injects"
886
+ },
887
+ {
888
+ "id": "unrendered-component",
889
+ "rule_id": "fallow/unrendered-component",
890
+ "command": "dead-code",
891
+ "category": "Dead code",
892
+ "description": "A Vue / Svelte component is reachable through a barrel but rendered nowhere",
893
+ "label": "Unrendered Components",
894
+ "config_key": "unrendered-components",
895
+ "registry_index": 26,
896
+ "aliases": [
897
+ "unrendered-components"
898
+ ],
899
+ "lsp": true,
900
+ "filter_flag": "--unrendered-components",
901
+ "result_key": "unrendered_components",
902
+ "summary_label": "Unrendered components",
903
+ "summary_docs_anchor": "unrendered-component",
904
+ "sarif_rule_ids": [
905
+ "fallow/unrendered-component"
906
+ ],
907
+ "codeclimate_check_names": [
908
+ "fallow/unrendered-component"
909
+ ],
910
+ "ts_alias": null,
911
+ "counts_in_total": true,
912
+ "fixable": false,
913
+ "suppressible": true,
914
+ "suppress_comment": "// fallow-ignore-next-line unrendered-component",
915
+ "note": null,
916
+ "license": "free",
917
+ "license_note": null,
918
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unrendered-components"
919
+ },
920
+ {
921
+ "id": "unused-component-prop",
922
+ "rule_id": "fallow/unused-component-prop",
923
+ "command": "dead-code",
924
+ "category": "Dead code",
925
+ "description": "A Vue, Svelte, or React component prop is referenced nowhere in its own component",
926
+ "label": "Unused Component Props",
927
+ "config_key": "unused-component-props",
928
+ "registry_index": 27,
929
+ "aliases": [
930
+ "unused-component-props"
931
+ ],
932
+ "lsp": true,
933
+ "filter_flag": "--unused-component-props",
934
+ "result_key": "unused_component_props",
935
+ "summary_label": "Unused component props",
936
+ "summary_docs_anchor": "unused-component-prop",
937
+ "sarif_rule_ids": [
938
+ "fallow/unused-component-prop"
939
+ ],
940
+ "codeclimate_check_names": [
941
+ "fallow/unused-component-prop"
942
+ ],
943
+ "ts_alias": null,
944
+ "counts_in_total": true,
945
+ "fixable": false,
946
+ "suppressible": true,
947
+ "suppress_comment": "// fallow-ignore-next-line unused-component-prop",
948
+ "note": null,
949
+ "license": "free",
950
+ "license_note": null,
951
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-component-props"
952
+ },
953
+ {
954
+ "id": "unused-component-emit",
955
+ "rule_id": "fallow/unused-component-emit",
956
+ "command": "dead-code",
957
+ "category": "Dead code",
958
+ "description": "A Vue <script setup> defineEmits event is emitted nowhere in its own component",
959
+ "label": "Unused Component Emits",
960
+ "config_key": "unused-component-emits",
961
+ "registry_index": 28,
962
+ "aliases": [
963
+ "unused-component-emits"
964
+ ],
965
+ "lsp": true,
966
+ "filter_flag": "--unused-component-emits",
967
+ "result_key": "unused_component_emits",
968
+ "summary_label": "Unused component emits",
969
+ "summary_docs_anchor": "unused-component-emit",
970
+ "sarif_rule_ids": [
971
+ "fallow/unused-component-emit"
972
+ ],
973
+ "codeclimate_check_names": [
974
+ "fallow/unused-component-emit"
975
+ ],
976
+ "ts_alias": null,
977
+ "counts_in_total": true,
978
+ "fixable": false,
979
+ "suppressible": true,
980
+ "suppress_comment": "// fallow-ignore-next-line unused-component-emit",
981
+ "note": null,
982
+ "license": "free",
983
+ "license_note": null,
984
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-component-emits"
985
+ },
986
+ {
987
+ "id": "unused-component-input",
988
+ "rule_id": "fallow/unused-component-input",
989
+ "command": "dead-code",
990
+ "category": "Dead code",
991
+ "description": "An Angular @Input() / signal input() / model() input is read nowhere in its own component",
992
+ "label": "Unused Component Inputs",
993
+ "config_key": "unused-component-inputs",
994
+ "registry_index": 29,
995
+ "aliases": [
996
+ "unused-component-inputs"
997
+ ],
998
+ "lsp": true,
999
+ "filter_flag": "--unused-component-inputs",
1000
+ "result_key": "unused_component_inputs",
1001
+ "summary_label": "Unused component inputs",
1002
+ "summary_docs_anchor": "unused-component-input",
1003
+ "sarif_rule_ids": [
1004
+ "fallow/unused-component-input"
1005
+ ],
1006
+ "codeclimate_check_names": [
1007
+ "fallow/unused-component-input"
1008
+ ],
1009
+ "ts_alias": null,
1010
+ "counts_in_total": true,
1011
+ "fixable": false,
1012
+ "suppressible": true,
1013
+ "suppress_comment": "// fallow-ignore-next-line unused-component-input",
1014
+ "note": null,
1015
+ "license": "free",
1016
+ "license_note": null,
1017
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-component-inputs"
1018
+ },
1019
+ {
1020
+ "id": "unused-component-output",
1021
+ "rule_id": "fallow/unused-component-output",
1022
+ "command": "dead-code",
1023
+ "category": "Dead code",
1024
+ "description": "An Angular @Output() / signal output() output is emitted nowhere in its own component",
1025
+ "label": "Unused Component Outputs",
1026
+ "config_key": "unused-component-outputs",
1027
+ "registry_index": 30,
1028
+ "aliases": [
1029
+ "unused-component-outputs"
1030
+ ],
1031
+ "lsp": true,
1032
+ "filter_flag": "--unused-component-outputs",
1033
+ "result_key": "unused_component_outputs",
1034
+ "summary_label": "Unused component outputs",
1035
+ "summary_docs_anchor": "unused-component-output",
1036
+ "sarif_rule_ids": [
1037
+ "fallow/unused-component-output"
1038
+ ],
1039
+ "codeclimate_check_names": [
1040
+ "fallow/unused-component-output"
1041
+ ],
1042
+ "ts_alias": null,
1043
+ "counts_in_total": true,
1044
+ "fixable": false,
1045
+ "suppressible": true,
1046
+ "suppress_comment": "// fallow-ignore-next-line unused-component-output",
1047
+ "note": null,
1048
+ "license": "free",
1049
+ "license_note": null,
1050
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-component-outputs"
1051
+ },
1052
+ {
1053
+ "id": "unused-svelte-event",
1054
+ "rule_id": "fallow/unused-svelte-event",
1055
+ "command": "dead-code",
1056
+ "category": "Dead code",
1057
+ "description": "A Svelte component dispatches a createEventDispatcher event whose name is listened to nowhere in the project",
1058
+ "label": "Unused Svelte Events",
1059
+ "config_key": "unused-svelte-events",
1060
+ "registry_index": 31,
1061
+ "aliases": [
1062
+ "unused-svelte-events"
1063
+ ],
1064
+ "lsp": true,
1065
+ "filter_flag": "--unused-svelte-events",
1066
+ "result_key": "unused_svelte_events",
1067
+ "summary_label": "Unused Svelte events",
1068
+ "summary_docs_anchor": "unused-svelte-event",
1069
+ "sarif_rule_ids": [
1070
+ "fallow/unused-svelte-event"
1071
+ ],
1072
+ "codeclimate_check_names": [
1073
+ "fallow/unused-svelte-event"
1074
+ ],
1075
+ "ts_alias": null,
1076
+ "counts_in_total": true,
1077
+ "fixable": false,
1078
+ "suppressible": true,
1079
+ "suppress_comment": "// fallow-ignore-next-line unused-svelte-event",
1080
+ "note": null,
1081
+ "license": "free",
1082
+ "license_note": null,
1083
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-svelte-events"
1084
+ },
1085
+ {
1086
+ "id": "unused-server-action",
1087
+ "rule_id": "fallow/unused-server-action",
1088
+ "command": "dead-code",
1089
+ "category": "Dead code",
1090
+ "description": "A Next.js Server Action exported from a \"use server\" file is referenced by no code in the project",
1091
+ "label": "Unused Server Actions",
1092
+ "config_key": "unused-server-actions",
1093
+ "registry_index": 32,
1094
+ "aliases": [
1095
+ "unused-server-actions"
1096
+ ],
1097
+ "lsp": true,
1098
+ "filter_flag": "--unused-server-actions",
1099
+ "result_key": "unused_server_actions",
1100
+ "summary_label": "Unused server actions",
1101
+ "summary_docs_anchor": "unused-server-action",
1102
+ "sarif_rule_ids": [
1103
+ "fallow/unused-server-action"
1104
+ ],
1105
+ "codeclimate_check_names": [
1106
+ "fallow/unused-server-action"
1107
+ ],
1108
+ "ts_alias": null,
1109
+ "counts_in_total": true,
1110
+ "fixable": false,
1111
+ "suppressible": true,
1112
+ "suppress_comment": "// fallow-ignore-next-line unused-server-action",
1113
+ "note": null,
1114
+ "license": "free",
1115
+ "license_note": null,
1116
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-server-actions"
1117
+ },
1118
+ {
1119
+ "id": "unused-load-data-key",
1120
+ "rule_id": "fallow/unused-load-data-key",
1121
+ "command": "dead-code",
1122
+ "category": "Dead code",
1123
+ "description": "A SvelteKit load() return-object key is read by no consumer",
1124
+ "label": "Unused Load Data Keys",
1125
+ "config_key": "unused-load-data-keys",
1126
+ "registry_index": 33,
1127
+ "aliases": [
1128
+ "unused-load-data-keys"
1129
+ ],
1130
+ "lsp": true,
1131
+ "filter_flag": "--unused-load-data-keys",
1132
+ "result_key": "unused_load_data_keys",
1133
+ "summary_label": "Unused load data keys",
1134
+ "summary_docs_anchor": "unused-load-data-key",
1135
+ "sarif_rule_ids": [
1136
+ "fallow/unused-load-data-key"
1137
+ ],
1138
+ "codeclimate_check_names": [
1139
+ "fallow/unused-load-data-key"
1140
+ ],
1141
+ "ts_alias": null,
1142
+ "counts_in_total": true,
1143
+ "fixable": false,
1144
+ "suppressible": true,
1145
+ "suppress_comment": "// fallow-ignore-next-line unused-load-data-key",
1146
+ "note": null,
1147
+ "license": "free",
1148
+ "license_note": null,
1149
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-load-data-keys"
1150
+ },
1151
+ {
1152
+ "id": "route-collision",
1153
+ "rule_id": "fallow/route-collision",
1154
+ "command": "dead-code",
1155
+ "category": "Policy",
1156
+ "description": "Two or more Next.js App Router route files resolve to the same URL",
1157
+ "label": "Route Collisions",
1158
+ "config_key": "route-collision",
1159
+ "registry_index": 34,
1160
+ "aliases": [
1161
+ "route-collisions"
1162
+ ],
1163
+ "lsp": true,
1164
+ "filter_flag": null,
1165
+ "result_key": "route_collisions",
1166
+ "summary_label": "Route collisions",
1167
+ "summary_docs_anchor": "route-collisions",
1168
+ "sarif_rule_ids": [
1169
+ "fallow/route-collision"
1170
+ ],
1171
+ "codeclimate_check_names": [
1172
+ "fallow/route-collision"
1173
+ ],
1174
+ "ts_alias": null,
1175
+ "counts_in_total": true,
1176
+ "fixable": false,
1177
+ "suppressible": true,
1178
+ "suppress_comment": "// fallow-ignore-file route-collision",
1179
+ "note": null,
1180
+ "license": "free",
1181
+ "license_note": null,
1182
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#route-collisions"
1183
+ },
1184
+ {
1185
+ "id": "dynamic-segment-name-conflict",
1186
+ "rule_id": "fallow/dynamic-segment-name-conflict",
1187
+ "command": "dead-code",
1188
+ "category": "Policy",
1189
+ "description": "Sibling Next.js dynamic route segments use different slug names at the same position",
1190
+ "label": "Dynamic Segment Conflicts",
1191
+ "config_key": "dynamic-segment-name-conflict",
1192
+ "registry_index": 35,
1193
+ "aliases": [
1194
+ "dynamic-segment-name-conflicts"
1195
+ ],
1196
+ "lsp": true,
1197
+ "filter_flag": null,
1198
+ "result_key": "dynamic_segment_name_conflicts",
1199
+ "summary_label": "Dynamic segment conflicts",
1200
+ "summary_docs_anchor": "dynamic-segment-name-conflicts",
1201
+ "sarif_rule_ids": [
1202
+ "fallow/dynamic-segment-name-conflict"
1203
+ ],
1204
+ "codeclimate_check_names": [
1205
+ "fallow/dynamic-segment-name-conflict"
1206
+ ],
1207
+ "ts_alias": null,
1208
+ "counts_in_total": true,
1209
+ "fixable": false,
1210
+ "suppressible": true,
1211
+ "suppress_comment": "// fallow-ignore-file dynamic-segment-name-conflict",
1212
+ "note": null,
1213
+ "license": "free",
1214
+ "license_note": null,
1215
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#dynamic-segment-name-conflicts"
1216
+ },
1217
+ {
1218
+ "id": "stale-suppression",
1219
+ "rule_id": "fallow/stale-suppression",
1220
+ "command": "dead-code",
1221
+ "category": "Suppressions",
1222
+ "description": "Suppression comment or tag no longer matches any issue",
1223
+ "label": "Stale Suppressions",
1224
+ "config_key": "stale-suppressions",
1225
+ "registry_index": 36,
1226
+ "aliases": [],
1227
+ "lsp": true,
1228
+ "filter_flag": "--stale-suppressions",
1229
+ "result_key": "stale_suppressions",
1230
+ "summary_label": "Stale suppressions",
1231
+ "summary_docs_anchor": "stale-suppressions",
1232
+ "sarif_rule_ids": [
1233
+ "fallow/stale-suppression",
1234
+ "fallow/missing-suppression-reason"
1235
+ ],
1236
+ "codeclimate_check_names": [
1237
+ "fallow/stale-suppression",
1238
+ "fallow/missing-suppression-reason"
1239
+ ],
1240
+ "ts_alias": null,
1241
+ "counts_in_total": true,
1242
+ "fixable": false,
1243
+ "suppressible": false,
1244
+ "suppress_comment": null,
1245
+ "note": "Fix by removing the stale suppression marker itself",
1246
+ "license": "free",
1247
+ "license_note": null,
1248
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#stale-suppressions"
1249
+ },
1250
+ {
1251
+ "id": "missing-suppression-reason",
1252
+ "rule_id": "fallow/missing-suppression-reason",
1253
+ "command": "dead-code",
1254
+ "category": "Suppressions",
1255
+ "description": "Suppression comment omits a required reason",
1256
+ "label": "Missing Suppression Reasons",
1257
+ "config_key": "require-suppression-reason",
1258
+ "registry_index": 37,
1259
+ "aliases": [
1260
+ "missing-suppression-reasons"
1261
+ ],
1262
+ "lsp": false,
1263
+ "filter_flag": "--stale-suppressions",
1264
+ "result_key": null,
1265
+ "summary_label": null,
1266
+ "summary_docs_anchor": null,
1267
+ "sarif_rule_ids": null,
1268
+ "codeclimate_check_names": null,
1269
+ "ts_alias": null,
1270
+ "counts_in_total": false,
1271
+ "fixable": false,
1272
+ "suppressible": false,
1273
+ "suppress_comment": null,
1274
+ "note": null,
1275
+ "license": "free",
1276
+ "license_note": null,
1277
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#stale-suppressions"
1278
+ },
1279
+ {
1280
+ "id": "unused-catalog-entry",
1281
+ "rule_id": "fallow/unused-catalog-entry",
1282
+ "command": "dead-code",
1283
+ "category": "Dependencies",
1284
+ "description": "Catalog entry not referenced by any workspace package",
1285
+ "label": "Unused Catalog Entries",
1286
+ "config_key": "unused-catalog-entries",
1287
+ "registry_index": 38,
1288
+ "aliases": [
1289
+ "catalog",
1290
+ "unused-catalog-entries"
1291
+ ],
1292
+ "lsp": true,
1293
+ "filter_flag": "--unused-catalog-entries",
1294
+ "result_key": "unused_catalog_entries",
1295
+ "summary_label": "Unused catalog entries",
1296
+ "summary_docs_anchor": "unused-catalog-entries",
1297
+ "sarif_rule_ids": [
1298
+ "fallow/unused-catalog-entry"
1299
+ ],
1300
+ "codeclimate_check_names": [
1301
+ "fallow/unused-catalog-entry"
1302
+ ],
1303
+ "ts_alias": {
1304
+ "name": "UnusedCatalogEntry",
1305
+ "parent": "UnusedCatalogEntryFinding"
1306
+ },
1307
+ "counts_in_total": true,
1308
+ "fixable": true,
1309
+ "suppressible": false,
1310
+ "suppress_comment": null,
1311
+ "note": null,
1312
+ "license": "free",
1313
+ "license_note": null,
1314
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-catalog-entries"
1315
+ },
1316
+ {
1317
+ "id": "empty-catalog-group",
1318
+ "rule_id": "fallow/empty-catalog-group",
1319
+ "command": "dead-code",
1320
+ "category": "Dependencies",
1321
+ "description": "Named catalog group has no entries",
1322
+ "label": "Empty Catalog Groups",
1323
+ "config_key": "empty-catalog-groups",
1324
+ "registry_index": 39,
1325
+ "aliases": [
1326
+ "empty-catalog",
1327
+ "empty-catalog-groups"
1328
+ ],
1329
+ "lsp": true,
1330
+ "filter_flag": "--empty-catalog-groups",
1331
+ "result_key": "empty_catalog_groups",
1332
+ "summary_label": "Empty catalog groups",
1333
+ "summary_docs_anchor": "empty-catalog-groups",
1334
+ "sarif_rule_ids": [
1335
+ "fallow/empty-catalog-group"
1336
+ ],
1337
+ "codeclimate_check_names": [
1338
+ "fallow/empty-catalog-group"
1339
+ ],
1340
+ "ts_alias": {
1341
+ "name": "EmptyCatalogGroup",
1342
+ "parent": "EmptyCatalogGroupFinding"
1343
+ },
1344
+ "counts_in_total": true,
1345
+ "fixable": false,
1346
+ "suppressible": false,
1347
+ "suppress_comment": null,
1348
+ "note": null,
1349
+ "license": "free",
1350
+ "license_note": null,
1351
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#empty-catalog-groups"
1352
+ },
1353
+ {
1354
+ "id": "unresolved-catalog-reference",
1355
+ "rule_id": "fallow/unresolved-catalog-reference",
1356
+ "command": "dead-code",
1357
+ "category": "Dependencies",
1358
+ "description": "package.json references a catalog that does not declare the package",
1359
+ "label": "Unresolved Catalog References",
1360
+ "config_key": "unresolved-catalog-references",
1361
+ "registry_index": 40,
1362
+ "aliases": [
1363
+ "unresolved-catalog",
1364
+ "unresolved-catalog-references"
1365
+ ],
1366
+ "lsp": true,
1367
+ "filter_flag": "--unresolved-catalog-references",
1368
+ "result_key": "unresolved_catalog_references",
1369
+ "summary_label": "Unresolved catalog references",
1370
+ "summary_docs_anchor": "unresolved-catalog-references",
1371
+ "sarif_rule_ids": [
1372
+ "fallow/unresolved-catalog-reference"
1373
+ ],
1374
+ "codeclimate_check_names": [
1375
+ "fallow/unresolved-catalog-reference"
1376
+ ],
1377
+ "ts_alias": {
1378
+ "name": "UnresolvedCatalogReference",
1379
+ "parent": "UnresolvedCatalogReferenceFinding"
1380
+ },
1381
+ "counts_in_total": true,
1382
+ "fixable": false,
1383
+ "suppressible": false,
1384
+ "suppress_comment": null,
1385
+ "note": null,
1386
+ "license": "free",
1387
+ "license_note": null,
1388
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unresolved-catalog-references"
1389
+ },
1390
+ {
1391
+ "id": "unused-dependency-override",
1392
+ "rule_id": "fallow/unused-dependency-override",
1393
+ "command": "dead-code",
1394
+ "category": "Dependencies",
1395
+ "description": "pnpm.overrides entry targets a package not declared or resolved",
1396
+ "label": "Unused Dependency Overrides",
1397
+ "config_key": "unused-dependency-overrides",
1398
+ "registry_index": 41,
1399
+ "aliases": [
1400
+ "unused-dependency-overrides",
1401
+ "unused-override",
1402
+ "unused-overrides"
1403
+ ],
1404
+ "lsp": true,
1405
+ "filter_flag": "--unused-dependency-overrides",
1406
+ "result_key": "unused_dependency_overrides",
1407
+ "summary_label": "Unused dependency overrides",
1408
+ "summary_docs_anchor": "unused-dependency-overrides",
1409
+ "sarif_rule_ids": [
1410
+ "fallow/unused-dependency-override"
1411
+ ],
1412
+ "codeclimate_check_names": [
1413
+ "fallow/unused-dependency-override"
1414
+ ],
1415
+ "ts_alias": {
1416
+ "name": "UnusedDependencyOverride",
1417
+ "parent": "UnusedDependencyOverrideFinding"
1418
+ },
1419
+ "counts_in_total": true,
1420
+ "fixable": false,
1421
+ "suppressible": false,
1422
+ "suppress_comment": null,
1423
+ "note": null,
1424
+ "license": "free",
1425
+ "license_note": null,
1426
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#unused-dependency-overrides"
1427
+ },
1428
+ {
1429
+ "id": "misconfigured-dependency-override",
1430
+ "rule_id": "fallow/misconfigured-dependency-override",
1431
+ "command": "dead-code",
1432
+ "category": "Dependencies",
1433
+ "description": "pnpm.overrides entry has an unparsable key or value",
1434
+ "label": "Misconfigured Dependency Overrides",
1435
+ "config_key": "misconfigured-dependency-overrides",
1436
+ "registry_index": 42,
1437
+ "aliases": [
1438
+ "misconfigured-dependency-overrides",
1439
+ "misconfigured-override",
1440
+ "misconfigured-overrides"
1441
+ ],
1442
+ "lsp": true,
1443
+ "filter_flag": "--misconfigured-dependency-overrides",
1444
+ "result_key": "misconfigured_dependency_overrides",
1445
+ "summary_label": "Misconfigured dependency overrides",
1446
+ "summary_docs_anchor": "misconfigured-dependency-overrides",
1447
+ "sarif_rule_ids": [
1448
+ "fallow/misconfigured-dependency-override"
1449
+ ],
1450
+ "codeclimate_check_names": [
1451
+ "fallow/misconfigured-dependency-override"
1452
+ ],
1453
+ "ts_alias": {
1454
+ "name": "MisconfiguredDependencyOverride",
1455
+ "parent": "MisconfiguredDependencyOverrideFinding"
1456
+ },
1457
+ "counts_in_total": true,
1458
+ "fixable": false,
1459
+ "suppressible": false,
1460
+ "suppress_comment": null,
1461
+ "note": null,
1462
+ "license": "free",
1463
+ "license_note": null,
1464
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#misconfigured-dependency-overrides"
1465
+ },
1466
+ {
1467
+ "id": "feature-flag",
1468
+ "rule_id": "fallow/feature-flag",
1469
+ "command": "flags",
1470
+ "category": "Flags",
1471
+ "description": "Detected feature flag pattern",
1472
+ "label": "Feature Flags",
1473
+ "config_key": "feature-flags",
1474
+ "registry_index": 46,
1475
+ "aliases": [],
1476
+ "lsp": false,
1477
+ "filter_flag": null,
1478
+ "result_key": null,
1479
+ "summary_label": null,
1480
+ "summary_docs_anchor": null,
1481
+ "sarif_rule_ids": null,
1482
+ "codeclimate_check_names": null,
1483
+ "ts_alias": null,
1484
+ "counts_in_total": false,
1485
+ "fixable": false,
1486
+ "suppressible": true,
1487
+ "suppress_comment": "// fallow-ignore-next-line feature-flag",
1488
+ "note": "Reported by fallow flags",
1489
+ "license": "free",
1490
+ "license_note": null,
1491
+ "docs_url": "https://docs.fallow.tools/cli/flags"
1492
+ },
1493
+ {
1494
+ "id": "prop-drilling",
1495
+ "rule_id": "fallow/prop-drilling",
1496
+ "command": "dead-code",
1497
+ "category": "Dead code",
1498
+ "description": "A React/Preact prop is forwarded unchanged through 3+ pass-through components to a distant consumer",
1499
+ "label": "Prop Drilling",
1500
+ "config_key": "prop-drilling",
1501
+ "registry_index": 48,
1502
+ "aliases": [],
1503
+ "lsp": false,
1504
+ "filter_flag": null,
1505
+ "result_key": "prop_drilling_chains",
1506
+ "summary_label": "Prop drilling",
1507
+ "summary_docs_anchor": "prop-drilling",
1508
+ "sarif_rule_ids": [
1509
+ "fallow/prop-drilling"
1510
+ ],
1511
+ "codeclimate_check_names": null,
1512
+ "ts_alias": null,
1513
+ "counts_in_total": false,
1514
+ "fixable": false,
1515
+ "suppressible": true,
1516
+ "suppress_comment": "// fallow-ignore-next-line prop-drilling",
1517
+ "note": "Opt-in: set rules.prop-drilling to warn or error to enable. Defaults to off.",
1518
+ "license": "free",
1519
+ "license_note": null,
1520
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#prop-drilling"
1521
+ },
1522
+ {
1523
+ "id": "thin-wrapper",
1524
+ "rule_id": "fallow/thin-wrapper",
1525
+ "command": "dead-code",
1526
+ "category": "Dead code",
1527
+ "description": "A React/Preact component whose whole body is a single spread-forwarded child render (a candidate for inlining)",
1528
+ "label": "Thin Wrappers",
1529
+ "config_key": "thin-wrapper",
1530
+ "registry_index": 49,
1531
+ "aliases": [
1532
+ "thin-wrappers"
1533
+ ],
1534
+ "lsp": false,
1535
+ "filter_flag": null,
1536
+ "result_key": "thin_wrappers",
1537
+ "summary_label": "Thin wrappers",
1538
+ "summary_docs_anchor": "thin-wrapper",
1539
+ "sarif_rule_ids": [
1540
+ "fallow/thin-wrapper"
1541
+ ],
1542
+ "codeclimate_check_names": null,
1543
+ "ts_alias": null,
1544
+ "counts_in_total": false,
1545
+ "fixable": false,
1546
+ "suppressible": true,
1547
+ "suppress_comment": "// fallow-ignore-next-line thin-wrapper",
1548
+ "note": "Opt-in: set rules.thin-wrapper to warn or error to enable. Defaults to off.",
1549
+ "license": "free",
1550
+ "license_note": null,
1551
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#thin-wrapper"
1552
+ },
1553
+ {
1554
+ "id": "duplicate-prop-shape",
1555
+ "rule_id": "fallow/duplicate-prop-shape",
1556
+ "command": "dead-code",
1557
+ "category": "Dead code",
1558
+ "description": "Three or more React/Preact components across two or more files declare an identical prop-name set (a missing shared Props type)",
1559
+ "label": "Duplicate Prop Shapes",
1560
+ "config_key": "duplicate-prop-shape",
1561
+ "registry_index": 50,
1562
+ "aliases": [
1563
+ "duplicate-prop-shapes"
1564
+ ],
1565
+ "lsp": false,
1566
+ "filter_flag": null,
1567
+ "result_key": "duplicate_prop_shapes",
1568
+ "summary_label": "Duplicate prop shapes",
1569
+ "summary_docs_anchor": "duplicate-prop-shape",
1570
+ "sarif_rule_ids": [
1571
+ "fallow/duplicate-prop-shape"
1572
+ ],
1573
+ "codeclimate_check_names": null,
1574
+ "ts_alias": null,
1575
+ "counts_in_total": false,
1576
+ "fixable": false,
1577
+ "suppressible": true,
1578
+ "suppress_comment": "// fallow-ignore-next-line duplicate-prop-shape",
1579
+ "note": "Opt-in: set rules.duplicate-prop-shape to warn or error to enable. Defaults to off.",
1580
+ "license": "free",
1581
+ "license_note": null,
1582
+ "docs_url": "https://docs.fallow.tools/explanations/dead-code#duplicate-prop-shape"
1583
+ },
1584
+ {
1585
+ "id": "css-token-drift",
1586
+ "rule_id": "fallow/css-token-drift",
1587
+ "command": "health",
1588
+ "category": "Health",
1589
+ "description": "CSS or CSS-in-JS hardcoded styling value bypasses the design token system",
1590
+ "label": "CSS Token Drift",
1591
+ "config_key": "css-token-drift",
1592
+ "registry_index": 51,
1593
+ "aliases": [],
1594
+ "lsp": false,
1595
+ "filter_flag": null,
1596
+ "result_key": null,
1597
+ "summary_label": null,
1598
+ "summary_docs_anchor": null,
1599
+ "sarif_rule_ids": null,
1600
+ "codeclimate_check_names": null,
1601
+ "ts_alias": null,
1602
+ "counts_in_total": false,
1603
+ "fixable": false,
1604
+ "suppressible": true,
1605
+ "suppress_comment": "// fallow-ignore-next-line css-token-drift",
1606
+ "note": null,
1607
+ "license": "free",
1608
+ "license_note": null,
1609
+ "docs_url": "https://docs.fallow.tools/explanations/health#css-token-drift"
1610
+ },
1611
+ {
1612
+ "id": "css-duplicate-block",
1613
+ "rule_id": "fallow/css-duplicate-block",
1614
+ "command": "health",
1615
+ "category": "Health",
1616
+ "description": "CSS or CSS-in-JS declaration block is duplicated across rules",
1617
+ "label": "CSS Duplicate Block",
1618
+ "config_key": "css-duplicate-block",
1619
+ "registry_index": 52,
1620
+ "aliases": [],
1621
+ "lsp": false,
1622
+ "filter_flag": null,
1623
+ "result_key": null,
1624
+ "summary_label": null,
1625
+ "summary_docs_anchor": null,
1626
+ "sarif_rule_ids": null,
1627
+ "codeclimate_check_names": null,
1628
+ "ts_alias": null,
1629
+ "counts_in_total": false,
1630
+ "fixable": false,
1631
+ "suppressible": true,
1632
+ "suppress_comment": "// fallow-ignore-next-line css-duplicate-block",
1633
+ "note": null,
1634
+ "license": "free",
1635
+ "license_note": null,
1636
+ "docs_url": "https://docs.fallow.tools/explanations/health#css-duplicate-block"
1637
+ },
1638
+ {
1639
+ "id": "css-selector-complexity",
1640
+ "rule_id": "fallow/css-selector-complexity",
1641
+ "command": "health",
1642
+ "category": "Health",
1643
+ "description": "CSS selector, nesting, or important usage is structurally complex",
1644
+ "label": "CSS Selector Complexity",
1645
+ "config_key": "css-selector-complexity",
1646
+ "registry_index": 53,
1647
+ "aliases": [],
1648
+ "lsp": false,
1649
+ "filter_flag": null,
1650
+ "result_key": null,
1651
+ "summary_label": null,
1652
+ "summary_docs_anchor": null,
1653
+ "sarif_rule_ids": null,
1654
+ "codeclimate_check_names": null,
1655
+ "ts_alias": null,
1656
+ "counts_in_total": false,
1657
+ "fixable": false,
1658
+ "suppressible": true,
1659
+ "suppress_comment": "// fallow-ignore-next-line css-selector-complexity",
1660
+ "note": null,
1661
+ "license": "free",
1662
+ "license_note": null,
1663
+ "docs_url": "https://docs.fallow.tools/explanations/health#css-selector-complexity"
1664
+ },
1665
+ {
1666
+ "id": "css-dead-surface",
1667
+ "rule_id": "fallow/css-dead-surface",
1668
+ "command": "health",
1669
+ "category": "Health",
1670
+ "description": "CSS or CSS-in-JS surface appears unused",
1671
+ "label": "CSS Dead Surface",
1672
+ "config_key": "css-dead-surface",
1673
+ "registry_index": 54,
1674
+ "aliases": [],
1675
+ "lsp": false,
1676
+ "filter_flag": null,
1677
+ "result_key": null,
1678
+ "summary_label": null,
1679
+ "summary_docs_anchor": null,
1680
+ "sarif_rule_ids": null,
1681
+ "codeclimate_check_names": null,
1682
+ "ts_alias": null,
1683
+ "counts_in_total": false,
1684
+ "fixable": false,
1685
+ "suppressible": true,
1686
+ "suppress_comment": "// fallow-ignore-next-line css-dead-surface",
1687
+ "note": null,
1688
+ "license": "free",
1689
+ "license_note": null,
1690
+ "docs_url": "https://docs.fallow.tools/explanations/health#css-dead-surface"
1691
+ },
1692
+ {
1693
+ "id": "css-broken-reference",
1694
+ "rule_id": "fallow/css-broken-reference",
1695
+ "command": "health",
1696
+ "category": "Health",
1697
+ "description": "CSS or CSS-in-JS reference resolves to no stylesheet definition",
1698
+ "label": "CSS Broken Reference",
1699
+ "config_key": "css-broken-reference",
1700
+ "registry_index": 55,
1701
+ "aliases": [],
1702
+ "lsp": false,
1703
+ "filter_flag": null,
1704
+ "result_key": null,
1705
+ "summary_label": null,
1706
+ "summary_docs_anchor": null,
1707
+ "sarif_rule_ids": null,
1708
+ "codeclimate_check_names": null,
1709
+ "ts_alias": null,
1710
+ "counts_in_total": false,
1711
+ "fixable": false,
1712
+ "suppressible": true,
1713
+ "suppress_comment": "// fallow-ignore-next-line css-broken-reference",
1714
+ "note": null,
1715
+ "license": "free",
1716
+ "license_note": null,
1717
+ "docs_url": "https://docs.fallow.tools/explanations/health#css-broken-reference"
1718
+ },
1719
+ {
1720
+ "id": "angular-trusted-html",
1721
+ "rule_id": "security/angular-trusted-html",
1722
+ "command": "security",
1723
+ "category": "Security",
1724
+ "description": "Catalogue security candidate for CWE-79",
1725
+ "label": null,
1726
+ "config_key": null,
1727
+ "registry_index": null,
1728
+ "aliases": [],
1729
+ "lsp": false,
1730
+ "filter_flag": null,
1731
+ "result_key": null,
1732
+ "summary_label": null,
1733
+ "summary_docs_anchor": null,
1734
+ "sarif_rule_ids": null,
1735
+ "codeclimate_check_names": null,
1736
+ "ts_alias": null,
1737
+ "counts_in_total": false,
1738
+ "fixable": false,
1739
+ "suppressible": true,
1740
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
1741
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
1742
+ "license": "free",
1743
+ "license_note": null,
1744
+ "docs_url": "https://docs.fallow.tools/cli/security"
1745
+ },
1746
+ {
1747
+ "id": "cleartext-transport",
1748
+ "rule_id": "security/cleartext-transport",
1749
+ "command": "security",
1750
+ "category": "Security",
1751
+ "description": "Catalogue security candidate for CWE-319",
1752
+ "label": null,
1753
+ "config_key": null,
1754
+ "registry_index": null,
1755
+ "aliases": [],
1756
+ "lsp": false,
1757
+ "filter_flag": null,
1758
+ "result_key": null,
1759
+ "summary_label": null,
1760
+ "summary_docs_anchor": null,
1761
+ "sarif_rule_ids": null,
1762
+ "codeclimate_check_names": null,
1763
+ "ts_alias": null,
1764
+ "counts_in_total": false,
1765
+ "fixable": false,
1766
+ "suppressible": true,
1767
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
1768
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
1769
+ "license": "free",
1770
+ "license_note": null,
1771
+ "docs_url": "https://docs.fallow.tools/cli/security"
1772
+ },
1773
+ {
1774
+ "id": "client-server-leak",
1775
+ "rule_id": "security/client-server-leak",
1776
+ "command": "security",
1777
+ "category": "Security",
1778
+ "description": "Client-bound code reaches a non-public env read",
1779
+ "label": null,
1780
+ "config_key": null,
1781
+ "registry_index": null,
1782
+ "aliases": [],
1783
+ "lsp": false,
1784
+ "filter_flag": null,
1785
+ "result_key": null,
1786
+ "summary_label": null,
1787
+ "summary_docs_anchor": null,
1788
+ "sarif_rule_ids": null,
1789
+ "codeclimate_check_names": null,
1790
+ "ts_alias": null,
1791
+ "counts_in_total": false,
1792
+ "fixable": false,
1793
+ "suppressible": true,
1794
+ "suppress_comment": "// fallow-ignore-file security-client-server-leak",
1795
+ "note": null,
1796
+ "license": "free",
1797
+ "license_note": null,
1798
+ "docs_url": "https://docs.fallow.tools/cli/security"
1799
+ },
1800
+ {
1801
+ "id": "code-injection",
1802
+ "rule_id": "security/code-injection",
1803
+ "command": "security",
1804
+ "category": "Security",
1805
+ "description": "Catalogue security candidate for CWE-94",
1806
+ "label": null,
1807
+ "config_key": null,
1808
+ "registry_index": null,
1809
+ "aliases": [],
1810
+ "lsp": false,
1811
+ "filter_flag": null,
1812
+ "result_key": null,
1813
+ "summary_label": null,
1814
+ "summary_docs_anchor": null,
1815
+ "sarif_rule_ids": null,
1816
+ "codeclimate_check_names": null,
1817
+ "ts_alias": null,
1818
+ "counts_in_total": false,
1819
+ "fixable": false,
1820
+ "suppressible": true,
1821
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
1822
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
1823
+ "license": "free",
1824
+ "license_note": null,
1825
+ "docs_url": "https://docs.fallow.tools/cli/security"
1826
+ },
1827
+ {
1828
+ "id": "command-injection",
1829
+ "rule_id": "security/command-injection",
1830
+ "command": "security",
1831
+ "category": "Security",
1832
+ "description": "Catalogue security candidate for CWE-78",
1833
+ "label": null,
1834
+ "config_key": null,
1835
+ "registry_index": null,
1836
+ "aliases": [],
1837
+ "lsp": false,
1838
+ "filter_flag": null,
1839
+ "result_key": null,
1840
+ "summary_label": null,
1841
+ "summary_docs_anchor": null,
1842
+ "sarif_rule_ids": null,
1843
+ "codeclimate_check_names": null,
1844
+ "ts_alias": null,
1845
+ "counts_in_total": false,
1846
+ "fixable": false,
1847
+ "suppressible": true,
1848
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
1849
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
1850
+ "license": "free",
1851
+ "license_note": null,
1852
+ "docs_url": "https://docs.fallow.tools/cli/security"
1853
+ },
1854
+ {
1855
+ "id": "coverage-intelligence-delete",
1856
+ "rule_id": "fallow/coverage-intelligence-delete",
1857
+ "command": "health",
1858
+ "category": "Health",
1859
+ "description": "Static and runtime evidence indicate code can be deleted",
1860
+ "label": null,
1861
+ "config_key": null,
1862
+ "registry_index": null,
1863
+ "aliases": [],
1864
+ "lsp": false,
1865
+ "filter_flag": null,
1866
+ "result_key": null,
1867
+ "summary_label": null,
1868
+ "summary_docs_anchor": null,
1869
+ "sarif_rule_ids": null,
1870
+ "codeclimate_check_names": null,
1871
+ "ts_alias": null,
1872
+ "counts_in_total": false,
1873
+ "fixable": false,
1874
+ "suppressible": false,
1875
+ "suppress_comment": null,
1876
+ "note": "Produced by fallow coverage analyze",
1877
+ "license": "freemium",
1878
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
1879
+ "docs_url": "https://docs.fallow.tools/explanations/health#coverage-intelligence"
1880
+ },
1881
+ {
1882
+ "id": "coverage-intelligence-refactor",
1883
+ "rule_id": "fallow/coverage-intelligence-refactor",
1884
+ "command": "health",
1885
+ "category": "Health",
1886
+ "description": "Hot covered code has high CRAP and should be refactored carefully",
1887
+ "label": null,
1888
+ "config_key": null,
1889
+ "registry_index": null,
1890
+ "aliases": [],
1891
+ "lsp": false,
1892
+ "filter_flag": null,
1893
+ "result_key": null,
1894
+ "summary_label": null,
1895
+ "summary_docs_anchor": null,
1896
+ "sarif_rule_ids": null,
1897
+ "codeclimate_check_names": null,
1898
+ "ts_alias": null,
1899
+ "counts_in_total": false,
1900
+ "fixable": false,
1901
+ "suppressible": false,
1902
+ "suppress_comment": null,
1903
+ "note": "Produced by fallow coverage analyze",
1904
+ "license": "freemium",
1905
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
1906
+ "docs_url": "https://docs.fallow.tools/explanations/health#coverage-intelligence"
1907
+ },
1908
+ {
1909
+ "id": "coverage-intelligence-review",
1910
+ "rule_id": "fallow/coverage-intelligence-review",
1911
+ "command": "health",
1912
+ "category": "Health",
1913
+ "description": "Cold reachable uncovered code needs owner review",
1914
+ "label": null,
1915
+ "config_key": null,
1916
+ "registry_index": null,
1917
+ "aliases": [],
1918
+ "lsp": false,
1919
+ "filter_flag": null,
1920
+ "result_key": null,
1921
+ "summary_label": null,
1922
+ "summary_docs_anchor": null,
1923
+ "sarif_rule_ids": null,
1924
+ "codeclimate_check_names": null,
1925
+ "ts_alias": null,
1926
+ "counts_in_total": false,
1927
+ "fixable": false,
1928
+ "suppressible": false,
1929
+ "suppress_comment": null,
1930
+ "note": "Produced by fallow coverage analyze",
1931
+ "license": "freemium",
1932
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
1933
+ "docs_url": "https://docs.fallow.tools/explanations/health#coverage-intelligence"
1934
+ },
1935
+ {
1936
+ "id": "coverage-intelligence-risky-change",
1937
+ "rule_id": "fallow/coverage-intelligence-risky-change",
1938
+ "command": "health",
1939
+ "category": "Health",
1940
+ "description": "Changed hot path combines high CRAP and low test coverage",
1941
+ "label": null,
1942
+ "config_key": null,
1943
+ "registry_index": null,
1944
+ "aliases": [],
1945
+ "lsp": false,
1946
+ "filter_flag": null,
1947
+ "result_key": null,
1948
+ "summary_label": null,
1949
+ "summary_docs_anchor": null,
1950
+ "sarif_rule_ids": null,
1951
+ "codeclimate_check_names": null,
1952
+ "ts_alias": null,
1953
+ "counts_in_total": false,
1954
+ "fixable": false,
1955
+ "suppressible": false,
1956
+ "suppress_comment": null,
1957
+ "note": "Produced by fallow coverage analyze",
1958
+ "license": "freemium",
1959
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
1960
+ "docs_url": "https://docs.fallow.tools/explanations/health#coverage-intelligence"
1961
+ },
1962
+ {
1963
+ "id": "dangerous-html",
1964
+ "rule_id": "security/dangerous-html",
1965
+ "command": "security",
1966
+ "category": "Security",
1967
+ "description": "Catalogue security candidate for CWE-79",
1968
+ "label": null,
1969
+ "config_key": null,
1970
+ "registry_index": null,
1971
+ "aliases": [],
1972
+ "lsp": false,
1973
+ "filter_flag": null,
1974
+ "result_key": null,
1975
+ "summary_label": null,
1976
+ "summary_docs_anchor": null,
1977
+ "sarif_rule_ids": null,
1978
+ "codeclimate_check_names": null,
1979
+ "ts_alias": null,
1980
+ "counts_in_total": false,
1981
+ "fixable": false,
1982
+ "suppressible": true,
1983
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
1984
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
1985
+ "license": "free",
1986
+ "license_note": null,
1987
+ "docs_url": "https://docs.fallow.tools/cli/security"
1988
+ },
1989
+ {
1990
+ "id": "deprecated-cipher",
1991
+ "rule_id": "security/deprecated-cipher",
1992
+ "command": "security",
1993
+ "category": "Security",
1994
+ "description": "Catalogue security candidate for CWE-327",
1995
+ "label": null,
1996
+ "config_key": null,
1997
+ "registry_index": null,
1998
+ "aliases": [],
1999
+ "lsp": false,
2000
+ "filter_flag": null,
2001
+ "result_key": null,
2002
+ "summary_label": null,
2003
+ "summary_docs_anchor": null,
2004
+ "sarif_rule_ids": null,
2005
+ "codeclimate_check_names": null,
2006
+ "ts_alias": null,
2007
+ "counts_in_total": false,
2008
+ "fixable": false,
2009
+ "suppressible": true,
2010
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2011
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2012
+ "license": "free",
2013
+ "license_note": null,
2014
+ "docs_url": "https://docs.fallow.tools/cli/security"
2015
+ },
2016
+ {
2017
+ "id": "dom-document-write",
2018
+ "rule_id": "security/dom-document-write",
2019
+ "command": "security",
2020
+ "category": "Security",
2021
+ "description": "Catalogue security candidate for CWE-79",
2022
+ "label": null,
2023
+ "config_key": null,
2024
+ "registry_index": null,
2025
+ "aliases": [],
2026
+ "lsp": false,
2027
+ "filter_flag": null,
2028
+ "result_key": null,
2029
+ "summary_label": null,
2030
+ "summary_docs_anchor": null,
2031
+ "sarif_rule_ids": null,
2032
+ "codeclimate_check_names": null,
2033
+ "ts_alias": null,
2034
+ "counts_in_total": false,
2035
+ "fixable": false,
2036
+ "suppressible": true,
2037
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2038
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2039
+ "license": "free",
2040
+ "license_note": null,
2041
+ "docs_url": "https://docs.fallow.tools/cli/security"
2042
+ },
2043
+ {
2044
+ "id": "dynamic-module-load",
2045
+ "rule_id": "security/dynamic-module-load",
2046
+ "command": "security",
2047
+ "category": "Security",
2048
+ "description": "Catalogue security candidate for CWE-95",
2049
+ "label": null,
2050
+ "config_key": null,
2051
+ "registry_index": null,
2052
+ "aliases": [],
2053
+ "lsp": false,
2054
+ "filter_flag": null,
2055
+ "result_key": null,
2056
+ "summary_label": null,
2057
+ "summary_docs_anchor": null,
2058
+ "sarif_rule_ids": null,
2059
+ "codeclimate_check_names": null,
2060
+ "ts_alias": null,
2061
+ "counts_in_total": false,
2062
+ "fixable": false,
2063
+ "suppressible": true,
2064
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2065
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2066
+ "license": "free",
2067
+ "license_note": null,
2068
+ "docs_url": "https://docs.fallow.tools/cli/security"
2069
+ },
2070
+ {
2071
+ "id": "dynamic-regex",
2072
+ "rule_id": "security/dynamic-regex",
2073
+ "command": "security",
2074
+ "category": "Security",
2075
+ "description": "Catalogue security candidate for CWE-1333",
2076
+ "label": null,
2077
+ "config_key": null,
2078
+ "registry_index": null,
2079
+ "aliases": [],
2080
+ "lsp": false,
2081
+ "filter_flag": null,
2082
+ "result_key": null,
2083
+ "summary_label": null,
2084
+ "summary_docs_anchor": null,
2085
+ "sarif_rule_ids": null,
2086
+ "codeclimate_check_names": null,
2087
+ "ts_alias": null,
2088
+ "counts_in_total": false,
2089
+ "fixable": false,
2090
+ "suppressible": true,
2091
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2092
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2093
+ "license": "free",
2094
+ "license_note": null,
2095
+ "docs_url": "https://docs.fallow.tools/cli/security"
2096
+ },
2097
+ {
2098
+ "id": "electron-unsafe-webpreferences",
2099
+ "rule_id": "security/electron-unsafe-webpreferences",
2100
+ "command": "security",
2101
+ "category": "Security",
2102
+ "description": "Catalogue security candidate for CWE-1188",
2103
+ "label": null,
2104
+ "config_key": null,
2105
+ "registry_index": null,
2106
+ "aliases": [],
2107
+ "lsp": false,
2108
+ "filter_flag": null,
2109
+ "result_key": null,
2110
+ "summary_label": null,
2111
+ "summary_docs_anchor": null,
2112
+ "sarif_rule_ids": null,
2113
+ "codeclimate_check_names": null,
2114
+ "ts_alias": null,
2115
+ "counts_in_total": false,
2116
+ "fixable": false,
2117
+ "suppressible": true,
2118
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2119
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2120
+ "license": "free",
2121
+ "license_note": null,
2122
+ "docs_url": "https://docs.fallow.tools/cli/security"
2123
+ },
2124
+ {
2125
+ "id": "hardcoded-secret",
2126
+ "rule_id": "security/hardcoded-secret",
2127
+ "command": "security",
2128
+ "category": "Security",
2129
+ "description": "Provider-prefixed or contextual secret literals require verification",
2130
+ "label": null,
2131
+ "config_key": null,
2132
+ "registry_index": null,
2133
+ "aliases": [],
2134
+ "lsp": false,
2135
+ "filter_flag": null,
2136
+ "result_key": null,
2137
+ "summary_label": null,
2138
+ "summary_docs_anchor": null,
2139
+ "sarif_rule_ids": null,
2140
+ "codeclimate_check_names": null,
2141
+ "ts_alias": null,
2142
+ "counts_in_total": false,
2143
+ "fixable": false,
2144
+ "suppressible": true,
2145
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2146
+ "note": "Include-required category: enable via security.categories.include",
2147
+ "license": "free",
2148
+ "license_note": null,
2149
+ "docs_url": "https://docs.fallow.tools/cli/security"
2150
+ },
2151
+ {
2152
+ "id": "header-injection",
2153
+ "rule_id": "security/header-injection",
2154
+ "command": "security",
2155
+ "category": "Security",
2156
+ "description": "Catalogue security candidate for CWE-113",
2157
+ "label": null,
2158
+ "config_key": null,
2159
+ "registry_index": null,
2160
+ "aliases": [],
2161
+ "lsp": false,
2162
+ "filter_flag": null,
2163
+ "result_key": null,
2164
+ "summary_label": null,
2165
+ "summary_docs_anchor": null,
2166
+ "sarif_rule_ids": null,
2167
+ "codeclimate_check_names": null,
2168
+ "ts_alias": null,
2169
+ "counts_in_total": false,
2170
+ "fixable": false,
2171
+ "suppressible": true,
2172
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2173
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2174
+ "license": "free",
2175
+ "license_note": null,
2176
+ "docs_url": "https://docs.fallow.tools/cli/security"
2177
+ },
2178
+ {
2179
+ "id": "high-cognitive-complexity",
2180
+ "rule_id": "fallow/high-cognitive-complexity",
2181
+ "command": "health",
2182
+ "category": "Health",
2183
+ "description": "Function has high cognitive complexity",
2184
+ "label": null,
2185
+ "config_key": null,
2186
+ "registry_index": null,
2187
+ "aliases": [],
2188
+ "lsp": false,
2189
+ "filter_flag": "--complexity",
2190
+ "result_key": null,
2191
+ "summary_label": null,
2192
+ "summary_docs_anchor": null,
2193
+ "sarif_rule_ids": null,
2194
+ "codeclimate_check_names": null,
2195
+ "ts_alias": null,
2196
+ "counts_in_total": false,
2197
+ "fixable": false,
2198
+ "suppressible": true,
2199
+ "suppress_comment": "// fallow-ignore-next-line complexity",
2200
+ "note": null,
2201
+ "license": "free",
2202
+ "license_note": null,
2203
+ "docs_url": "https://docs.fallow.tools/explanations/health#cognitive-complexity"
2204
+ },
2205
+ {
2206
+ "id": "high-complexity",
2207
+ "rule_id": "fallow/high-complexity",
2208
+ "command": "health",
2209
+ "category": "Health",
2210
+ "description": "Function exceeds both complexity thresholds",
2211
+ "label": null,
2212
+ "config_key": null,
2213
+ "registry_index": null,
2214
+ "aliases": [],
2215
+ "lsp": false,
2216
+ "filter_flag": "--complexity",
2217
+ "result_key": null,
2218
+ "summary_label": null,
2219
+ "summary_docs_anchor": null,
2220
+ "sarif_rule_ids": null,
2221
+ "codeclimate_check_names": null,
2222
+ "ts_alias": null,
2223
+ "counts_in_total": false,
2224
+ "fixable": false,
2225
+ "suppressible": true,
2226
+ "suppress_comment": "// fallow-ignore-next-line complexity",
2227
+ "note": null,
2228
+ "license": "free",
2229
+ "license_note": null,
2230
+ "docs_url": "https://docs.fallow.tools/explanations/health#complexity-metrics"
2231
+ },
2232
+ {
2233
+ "id": "high-crap-score",
2234
+ "rule_id": "fallow/high-crap-score",
2235
+ "command": "health",
2236
+ "category": "Health",
2237
+ "description": "Function has a high CRAP score (complexity combined with low coverage)",
2238
+ "label": null,
2239
+ "config_key": null,
2240
+ "registry_index": null,
2241
+ "aliases": [],
2242
+ "lsp": false,
2243
+ "filter_flag": "--complexity",
2244
+ "result_key": null,
2245
+ "summary_label": null,
2246
+ "summary_docs_anchor": null,
2247
+ "sarif_rule_ids": null,
2248
+ "codeclimate_check_names": null,
2249
+ "ts_alias": null,
2250
+ "counts_in_total": false,
2251
+ "fixable": false,
2252
+ "suppressible": true,
2253
+ "suppress_comment": "// fallow-ignore-next-line complexity",
2254
+ "note": null,
2255
+ "license": "free",
2256
+ "license_note": null,
2257
+ "docs_url": "https://docs.fallow.tools/explanations/health#crap-score"
2258
+ },
2259
+ {
2260
+ "id": "high-cyclomatic-complexity",
2261
+ "rule_id": "fallow/high-cyclomatic-complexity",
2262
+ "command": "health",
2263
+ "category": "Health",
2264
+ "description": "Function has high cyclomatic complexity",
2265
+ "label": null,
2266
+ "config_key": null,
2267
+ "registry_index": null,
2268
+ "aliases": [],
2269
+ "lsp": false,
2270
+ "filter_flag": "--complexity",
2271
+ "result_key": null,
2272
+ "summary_label": null,
2273
+ "summary_docs_anchor": null,
2274
+ "sarif_rule_ids": null,
2275
+ "codeclimate_check_names": null,
2276
+ "ts_alias": null,
2277
+ "counts_in_total": false,
2278
+ "fixable": false,
2279
+ "suppressible": true,
2280
+ "suppress_comment": "// fallow-ignore-next-line complexity",
2281
+ "note": null,
2282
+ "license": "free",
2283
+ "license_note": null,
2284
+ "docs_url": "https://docs.fallow.tools/explanations/health#cyclomatic-complexity"
2285
+ },
2286
+ {
2287
+ "id": "insecure-cookie",
2288
+ "rule_id": "security/insecure-cookie",
2289
+ "command": "security",
2290
+ "category": "Security",
2291
+ "description": "Catalogue security candidate for CWE-614",
2292
+ "label": null,
2293
+ "config_key": null,
2294
+ "registry_index": null,
2295
+ "aliases": [],
2296
+ "lsp": false,
2297
+ "filter_flag": null,
2298
+ "result_key": null,
2299
+ "summary_label": null,
2300
+ "summary_docs_anchor": null,
2301
+ "sarif_rule_ids": null,
2302
+ "codeclimate_check_names": null,
2303
+ "ts_alias": null,
2304
+ "counts_in_total": false,
2305
+ "fixable": false,
2306
+ "suppressible": true,
2307
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2308
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2309
+ "license": "free",
2310
+ "license_note": null,
2311
+ "docs_url": "https://docs.fallow.tools/cli/security"
2312
+ },
2313
+ {
2314
+ "id": "insecure-randomness",
2315
+ "rule_id": "security/insecure-randomness",
2316
+ "command": "security",
2317
+ "category": "Security",
2318
+ "description": "Catalogue security candidate for CWE-338",
2319
+ "label": null,
2320
+ "config_key": null,
2321
+ "registry_index": null,
2322
+ "aliases": [],
2323
+ "lsp": false,
2324
+ "filter_flag": null,
2325
+ "result_key": null,
2326
+ "summary_label": null,
2327
+ "summary_docs_anchor": null,
2328
+ "sarif_rule_ids": null,
2329
+ "codeclimate_check_names": null,
2330
+ "ts_alias": null,
2331
+ "counts_in_total": false,
2332
+ "fixable": false,
2333
+ "suppressible": true,
2334
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2335
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2336
+ "license": "free",
2337
+ "license_note": null,
2338
+ "docs_url": "https://docs.fallow.tools/cli/security"
2339
+ },
2340
+ {
2341
+ "id": "insecure-temp-file",
2342
+ "rule_id": "security/insecure-temp-file",
2343
+ "command": "security",
2344
+ "category": "Security",
2345
+ "description": "Catalogue security candidate for CWE-377",
2346
+ "label": null,
2347
+ "config_key": null,
2348
+ "registry_index": null,
2349
+ "aliases": [],
2350
+ "lsp": false,
2351
+ "filter_flag": null,
2352
+ "result_key": null,
2353
+ "summary_label": null,
2354
+ "summary_docs_anchor": null,
2355
+ "sarif_rule_ids": null,
2356
+ "codeclimate_check_names": null,
2357
+ "ts_alias": null,
2358
+ "counts_in_total": false,
2359
+ "fixable": false,
2360
+ "suppressible": true,
2361
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2362
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2363
+ "license": "free",
2364
+ "license_note": null,
2365
+ "docs_url": "https://docs.fallow.tools/cli/security"
2366
+ },
2367
+ {
2368
+ "id": "jquery-html",
2369
+ "rule_id": "security/jquery-html",
2370
+ "command": "security",
2371
+ "category": "Security",
2372
+ "description": "Catalogue security candidate for CWE-79",
2373
+ "label": null,
2374
+ "config_key": null,
2375
+ "registry_index": null,
2376
+ "aliases": [],
2377
+ "lsp": false,
2378
+ "filter_flag": null,
2379
+ "result_key": null,
2380
+ "summary_label": null,
2381
+ "summary_docs_anchor": null,
2382
+ "sarif_rule_ids": null,
2383
+ "codeclimate_check_names": null,
2384
+ "ts_alias": null,
2385
+ "counts_in_total": false,
2386
+ "fixable": false,
2387
+ "suppressible": true,
2388
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2389
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2390
+ "license": "free",
2391
+ "license_note": null,
2392
+ "docs_url": "https://docs.fallow.tools/cli/security"
2393
+ },
2394
+ {
2395
+ "id": "jwt-alg-none",
2396
+ "rule_id": "security/jwt-alg-none",
2397
+ "command": "security",
2398
+ "category": "Security",
2399
+ "description": "Catalogue security candidate for CWE-347",
2400
+ "label": null,
2401
+ "config_key": null,
2402
+ "registry_index": null,
2403
+ "aliases": [],
2404
+ "lsp": false,
2405
+ "filter_flag": null,
2406
+ "result_key": null,
2407
+ "summary_label": null,
2408
+ "summary_docs_anchor": null,
2409
+ "sarif_rule_ids": null,
2410
+ "codeclimate_check_names": null,
2411
+ "ts_alias": null,
2412
+ "counts_in_total": false,
2413
+ "fixable": false,
2414
+ "suppressible": true,
2415
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2416
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2417
+ "license": "free",
2418
+ "license_note": null,
2419
+ "docs_url": "https://docs.fallow.tools/cli/security"
2420
+ },
2421
+ {
2422
+ "id": "jwt-verify-missing-algorithms",
2423
+ "rule_id": "security/jwt-verify-missing-algorithms",
2424
+ "command": "security",
2425
+ "category": "Security",
2426
+ "description": "Catalogue security candidate for CWE-347",
2427
+ "label": null,
2428
+ "config_key": null,
2429
+ "registry_index": null,
2430
+ "aliases": [],
2431
+ "lsp": false,
2432
+ "filter_flag": null,
2433
+ "result_key": null,
2434
+ "summary_label": null,
2435
+ "summary_docs_anchor": null,
2436
+ "sarif_rule_ids": null,
2437
+ "codeclimate_check_names": null,
2438
+ "ts_alias": null,
2439
+ "counts_in_total": false,
2440
+ "fixable": false,
2441
+ "suppressible": true,
2442
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2443
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2444
+ "license": "free",
2445
+ "license_note": null,
2446
+ "docs_url": "https://docs.fallow.tools/cli/security"
2447
+ },
2448
+ {
2449
+ "id": "llm-call-injection",
2450
+ "rule_id": "security/llm-call-injection",
2451
+ "command": "security",
2452
+ "category": "Security",
2453
+ "description": "Catalogue security candidate for CWE-1427",
2454
+ "label": null,
2455
+ "config_key": null,
2456
+ "registry_index": null,
2457
+ "aliases": [],
2458
+ "lsp": false,
2459
+ "filter_flag": null,
2460
+ "result_key": null,
2461
+ "summary_label": null,
2462
+ "summary_docs_anchor": null,
2463
+ "sarif_rule_ids": null,
2464
+ "codeclimate_check_names": null,
2465
+ "ts_alias": null,
2466
+ "counts_in_total": false,
2467
+ "fixable": false,
2468
+ "suppressible": true,
2469
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2470
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2471
+ "license": "free",
2472
+ "license_note": null,
2473
+ "docs_url": "https://docs.fallow.tools/cli/security"
2474
+ },
2475
+ {
2476
+ "id": "mass-assignment",
2477
+ "rule_id": "security/mass-assignment",
2478
+ "command": "security",
2479
+ "category": "Security",
2480
+ "description": "Catalogue security candidate for CWE-915",
2481
+ "label": null,
2482
+ "config_key": null,
2483
+ "registry_index": null,
2484
+ "aliases": [],
2485
+ "lsp": false,
2486
+ "filter_flag": null,
2487
+ "result_key": null,
2488
+ "summary_label": null,
2489
+ "summary_docs_anchor": null,
2490
+ "sarif_rule_ids": null,
2491
+ "codeclimate_check_names": null,
2492
+ "ts_alias": null,
2493
+ "counts_in_total": false,
2494
+ "fixable": false,
2495
+ "suppressible": true,
2496
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2497
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2498
+ "license": "free",
2499
+ "license_note": null,
2500
+ "docs_url": "https://docs.fallow.tools/cli/security"
2501
+ },
2502
+ {
2503
+ "id": "mysql-multiple-statements",
2504
+ "rule_id": "security/mysql-multiple-statements",
2505
+ "command": "security",
2506
+ "category": "Security",
2507
+ "description": "Catalogue security candidate for CWE-89",
2508
+ "label": null,
2509
+ "config_key": null,
2510
+ "registry_index": null,
2511
+ "aliases": [],
2512
+ "lsp": false,
2513
+ "filter_flag": null,
2514
+ "result_key": null,
2515
+ "summary_label": null,
2516
+ "summary_docs_anchor": null,
2517
+ "sarif_rule_ids": null,
2518
+ "codeclimate_check_names": null,
2519
+ "ts_alias": null,
2520
+ "counts_in_total": false,
2521
+ "fixable": false,
2522
+ "suppressible": true,
2523
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2524
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2525
+ "license": "free",
2526
+ "license_note": null,
2527
+ "docs_url": "https://docs.fallow.tools/cli/security"
2528
+ },
2529
+ {
2530
+ "id": "nextjs-open-redirect",
2531
+ "rule_id": "security/nextjs-open-redirect",
2532
+ "command": "security",
2533
+ "category": "Security",
2534
+ "description": "Catalogue security candidate for CWE-601",
2535
+ "label": null,
2536
+ "config_key": null,
2537
+ "registry_index": null,
2538
+ "aliases": [],
2539
+ "lsp": false,
2540
+ "filter_flag": null,
2541
+ "result_key": null,
2542
+ "summary_label": null,
2543
+ "summary_docs_anchor": null,
2544
+ "sarif_rule_ids": null,
2545
+ "codeclimate_check_names": null,
2546
+ "ts_alias": null,
2547
+ "counts_in_total": false,
2548
+ "fixable": false,
2549
+ "suppressible": true,
2550
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2551
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2552
+ "license": "free",
2553
+ "license_note": null,
2554
+ "docs_url": "https://docs.fallow.tools/cli/security"
2555
+ },
2556
+ {
2557
+ "id": "nosql-injection",
2558
+ "rule_id": "security/nosql-injection",
2559
+ "command": "security",
2560
+ "category": "Security",
2561
+ "description": "Catalogue security candidate for CWE-943",
2562
+ "label": null,
2563
+ "config_key": null,
2564
+ "registry_index": null,
2565
+ "aliases": [],
2566
+ "lsp": false,
2567
+ "filter_flag": null,
2568
+ "result_key": null,
2569
+ "summary_label": null,
2570
+ "summary_docs_anchor": null,
2571
+ "sarif_rule_ids": null,
2572
+ "codeclimate_check_names": null,
2573
+ "ts_alias": null,
2574
+ "counts_in_total": false,
2575
+ "fixable": false,
2576
+ "suppressible": true,
2577
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2578
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2579
+ "license": "free",
2580
+ "license_note": null,
2581
+ "docs_url": "https://docs.fallow.tools/cli/security"
2582
+ },
2583
+ {
2584
+ "id": "open-redirect",
2585
+ "rule_id": "security/open-redirect",
2586
+ "command": "security",
2587
+ "category": "Security",
2588
+ "description": "Catalogue security candidate for CWE-601",
2589
+ "label": null,
2590
+ "config_key": null,
2591
+ "registry_index": null,
2592
+ "aliases": [],
2593
+ "lsp": false,
2594
+ "filter_flag": null,
2595
+ "result_key": null,
2596
+ "summary_label": null,
2597
+ "summary_docs_anchor": null,
2598
+ "sarif_rule_ids": null,
2599
+ "codeclimate_check_names": null,
2600
+ "ts_alias": null,
2601
+ "counts_in_total": false,
2602
+ "fixable": false,
2603
+ "suppressible": true,
2604
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2605
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2606
+ "license": "free",
2607
+ "license_note": null,
2608
+ "docs_url": "https://docs.fallow.tools/cli/security"
2609
+ },
2610
+ {
2611
+ "id": "path-traversal",
2612
+ "rule_id": "security/path-traversal",
2613
+ "command": "security",
2614
+ "category": "Security",
2615
+ "description": "Catalogue security candidate for CWE-22",
2616
+ "label": null,
2617
+ "config_key": null,
2618
+ "registry_index": null,
2619
+ "aliases": [],
2620
+ "lsp": false,
2621
+ "filter_flag": null,
2622
+ "result_key": null,
2623
+ "summary_label": null,
2624
+ "summary_docs_anchor": null,
2625
+ "sarif_rule_ids": null,
2626
+ "codeclimate_check_names": null,
2627
+ "ts_alias": null,
2628
+ "counts_in_total": false,
2629
+ "fixable": false,
2630
+ "suppressible": true,
2631
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2632
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2633
+ "license": "free",
2634
+ "license_note": null,
2635
+ "docs_url": "https://docs.fallow.tools/cli/security"
2636
+ },
2637
+ {
2638
+ "id": "permissive-cors",
2639
+ "rule_id": "security/permissive-cors",
2640
+ "command": "security",
2641
+ "category": "Security",
2642
+ "description": "Catalogue security candidate for CWE-942",
2643
+ "label": null,
2644
+ "config_key": null,
2645
+ "registry_index": null,
2646
+ "aliases": [],
2647
+ "lsp": false,
2648
+ "filter_flag": null,
2649
+ "result_key": null,
2650
+ "summary_label": null,
2651
+ "summary_docs_anchor": null,
2652
+ "sarif_rule_ids": null,
2653
+ "codeclimate_check_names": null,
2654
+ "ts_alias": null,
2655
+ "counts_in_total": false,
2656
+ "fixable": false,
2657
+ "suppressible": true,
2658
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2659
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2660
+ "license": "free",
2661
+ "license_note": null,
2662
+ "docs_url": "https://docs.fallow.tools/cli/security"
2663
+ },
2664
+ {
2665
+ "id": "postmessage-wildcard-origin",
2666
+ "rule_id": "security/postmessage-wildcard-origin",
2667
+ "command": "security",
2668
+ "category": "Security",
2669
+ "description": "Catalogue security candidate for CWE-346",
2670
+ "label": null,
2671
+ "config_key": null,
2672
+ "registry_index": null,
2673
+ "aliases": [],
2674
+ "lsp": false,
2675
+ "filter_flag": null,
2676
+ "result_key": null,
2677
+ "summary_label": null,
2678
+ "summary_docs_anchor": null,
2679
+ "sarif_rule_ids": null,
2680
+ "codeclimate_check_names": null,
2681
+ "ts_alias": null,
2682
+ "counts_in_total": false,
2683
+ "fixable": false,
2684
+ "suppressible": true,
2685
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2686
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2687
+ "license": "free",
2688
+ "license_note": null,
2689
+ "docs_url": "https://docs.fallow.tools/cli/security"
2690
+ },
2691
+ {
2692
+ "id": "prototype-pollution",
2693
+ "rule_id": "security/prototype-pollution",
2694
+ "command": "security",
2695
+ "category": "Security",
2696
+ "description": "Catalogue security candidate for CWE-1321",
2697
+ "label": null,
2698
+ "config_key": null,
2699
+ "registry_index": null,
2700
+ "aliases": [],
2701
+ "lsp": false,
2702
+ "filter_flag": null,
2703
+ "result_key": null,
2704
+ "summary_label": null,
2705
+ "summary_docs_anchor": null,
2706
+ "sarif_rule_ids": null,
2707
+ "codeclimate_check_names": null,
2708
+ "ts_alias": null,
2709
+ "counts_in_total": false,
2710
+ "fixable": false,
2711
+ "suppressible": true,
2712
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2713
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2714
+ "license": "free",
2715
+ "license_note": null,
2716
+ "docs_url": "https://docs.fallow.tools/cli/security"
2717
+ },
2718
+ {
2719
+ "id": "redos-regex",
2720
+ "rule_id": "security/redos-regex",
2721
+ "command": "security",
2722
+ "category": "Security",
2723
+ "description": "Catalogue security candidate for CWE-1333",
2724
+ "label": null,
2725
+ "config_key": null,
2726
+ "registry_index": null,
2727
+ "aliases": [],
2728
+ "lsp": false,
2729
+ "filter_flag": null,
2730
+ "result_key": null,
2731
+ "summary_label": null,
2732
+ "summary_docs_anchor": null,
2733
+ "sarif_rule_ids": null,
2734
+ "codeclimate_check_names": null,
2735
+ "ts_alias": null,
2736
+ "counts_in_total": false,
2737
+ "fixable": false,
2738
+ "suppressible": true,
2739
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2740
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2741
+ "license": "free",
2742
+ "license_note": null,
2743
+ "docs_url": "https://docs.fallow.tools/cli/security"
2744
+ },
2745
+ {
2746
+ "id": "refactoring-target",
2747
+ "rule_id": "fallow/refactoring-target",
2748
+ "command": "health",
2749
+ "category": "Health",
2750
+ "description": "File identified as a high-priority refactoring candidate",
2751
+ "label": null,
2752
+ "config_key": null,
2753
+ "registry_index": null,
2754
+ "aliases": [],
2755
+ "lsp": false,
2756
+ "filter_flag": "--targets",
2757
+ "result_key": null,
2758
+ "summary_label": null,
2759
+ "summary_docs_anchor": null,
2760
+ "sarif_rule_ids": null,
2761
+ "codeclimate_check_names": null,
2762
+ "ts_alias": null,
2763
+ "counts_in_total": false,
2764
+ "fixable": false,
2765
+ "suppressible": false,
2766
+ "suppress_comment": null,
2767
+ "note": null,
2768
+ "license": "free",
2769
+ "license_note": null,
2770
+ "docs_url": "https://docs.fallow.tools/explanations/health#refactoring-targets"
2771
+ },
2772
+ {
2773
+ "id": "resource-amplification",
2774
+ "rule_id": "security/resource-amplification",
2775
+ "command": "security",
2776
+ "category": "Security",
2777
+ "description": "Catalogue security candidate for CWE-400",
2778
+ "label": null,
2779
+ "config_key": null,
2780
+ "registry_index": null,
2781
+ "aliases": [],
2782
+ "lsp": false,
2783
+ "filter_flag": null,
2784
+ "result_key": null,
2785
+ "summary_label": null,
2786
+ "summary_docs_anchor": null,
2787
+ "sarif_rule_ids": null,
2788
+ "codeclimate_check_names": null,
2789
+ "ts_alias": null,
2790
+ "counts_in_total": false,
2791
+ "fixable": false,
2792
+ "suppressible": true,
2793
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2794
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2795
+ "license": "free",
2796
+ "license_note": null,
2797
+ "docs_url": "https://docs.fallow.tools/cli/security"
2798
+ },
2799
+ {
2800
+ "id": "route-send-file",
2801
+ "rule_id": "security/route-send-file",
2802
+ "command": "security",
2803
+ "category": "Security",
2804
+ "description": "Catalogue security candidate for CWE-22",
2805
+ "label": null,
2806
+ "config_key": null,
2807
+ "registry_index": null,
2808
+ "aliases": [],
2809
+ "lsp": false,
2810
+ "filter_flag": null,
2811
+ "result_key": null,
2812
+ "summary_label": null,
2813
+ "summary_docs_anchor": null,
2814
+ "sarif_rule_ids": null,
2815
+ "codeclimate_check_names": null,
2816
+ "ts_alias": null,
2817
+ "counts_in_total": false,
2818
+ "fixable": false,
2819
+ "suppressible": true,
2820
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2821
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2822
+ "license": "free",
2823
+ "license_note": null,
2824
+ "docs_url": "https://docs.fallow.tools/cli/security"
2825
+ },
2826
+ {
2827
+ "id": "runtime-coverage",
2828
+ "rule_id": "fallow/runtime-coverage",
2829
+ "command": "health",
2830
+ "category": "Health",
2831
+ "description": "Runtime coverage finding",
2832
+ "label": null,
2833
+ "config_key": null,
2834
+ "registry_index": null,
2835
+ "aliases": [],
2836
+ "lsp": false,
2837
+ "filter_flag": null,
2838
+ "result_key": null,
2839
+ "summary_label": null,
2840
+ "summary_docs_anchor": null,
2841
+ "sarif_rule_ids": null,
2842
+ "codeclimate_check_names": null,
2843
+ "ts_alias": null,
2844
+ "counts_in_total": false,
2845
+ "fixable": false,
2846
+ "suppressible": false,
2847
+ "suppress_comment": null,
2848
+ "note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
2849
+ "license": "freemium",
2850
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
2851
+ "docs_url": "https://docs.fallow.tools/explanations/health#runtime-coverage"
2852
+ },
2853
+ {
2854
+ "id": "runtime-coverage-unavailable",
2855
+ "rule_id": "fallow/runtime-coverage-unavailable",
2856
+ "command": "health",
2857
+ "category": "Health",
2858
+ "description": "Runtime coverage could not be resolved for this function",
2859
+ "label": null,
2860
+ "config_key": null,
2861
+ "registry_index": null,
2862
+ "aliases": [],
2863
+ "lsp": false,
2864
+ "filter_flag": null,
2865
+ "result_key": null,
2866
+ "summary_label": null,
2867
+ "summary_docs_anchor": null,
2868
+ "sarif_rule_ids": null,
2869
+ "codeclimate_check_names": null,
2870
+ "ts_alias": null,
2871
+ "counts_in_total": false,
2872
+ "fixable": false,
2873
+ "suppressible": false,
2874
+ "suppress_comment": null,
2875
+ "note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
2876
+ "license": "freemium",
2877
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
2878
+ "docs_url": "https://docs.fallow.tools/explanations/health#runtime-coverage"
2879
+ },
2880
+ {
2881
+ "id": "runtime-low-traffic",
2882
+ "rule_id": "fallow/runtime-low-traffic",
2883
+ "command": "health",
2884
+ "category": "Health",
2885
+ "description": "Function was invoked below the low-traffic threshold",
2886
+ "label": null,
2887
+ "config_key": null,
2888
+ "registry_index": null,
2889
+ "aliases": [],
2890
+ "lsp": false,
2891
+ "filter_flag": null,
2892
+ "result_key": null,
2893
+ "summary_label": null,
2894
+ "summary_docs_anchor": null,
2895
+ "sarif_rule_ids": null,
2896
+ "codeclimate_check_names": null,
2897
+ "ts_alias": null,
2898
+ "counts_in_total": false,
2899
+ "fixable": false,
2900
+ "suppressible": false,
2901
+ "suppress_comment": null,
2902
+ "note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
2903
+ "license": "freemium",
2904
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
2905
+ "docs_url": "https://docs.fallow.tools/explanations/health#runtime-coverage"
2906
+ },
2907
+ {
2908
+ "id": "runtime-review-required",
2909
+ "rule_id": "fallow/runtime-review-required",
2910
+ "command": "health",
2911
+ "category": "Health",
2912
+ "description": "Statically used but never invoked in production",
2913
+ "label": null,
2914
+ "config_key": null,
2915
+ "registry_index": null,
2916
+ "aliases": [],
2917
+ "lsp": false,
2918
+ "filter_flag": null,
2919
+ "result_key": null,
2920
+ "summary_label": null,
2921
+ "summary_docs_anchor": null,
2922
+ "sarif_rule_ids": null,
2923
+ "codeclimate_check_names": null,
2924
+ "ts_alias": null,
2925
+ "counts_in_total": false,
2926
+ "fixable": false,
2927
+ "suppressible": false,
2928
+ "suppress_comment": null,
2929
+ "note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
2930
+ "license": "freemium",
2931
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
2932
+ "docs_url": "https://docs.fallow.tools/explanations/health#runtime-coverage"
2933
+ },
2934
+ {
2935
+ "id": "runtime-safe-to-delete",
2936
+ "rule_id": "fallow/runtime-safe-to-delete",
2937
+ "command": "health",
2938
+ "category": "Health",
2939
+ "description": "Statically unused AND never invoked in production with V8 tracking",
2940
+ "label": null,
2941
+ "config_key": null,
2942
+ "registry_index": null,
2943
+ "aliases": [],
2944
+ "lsp": false,
2945
+ "filter_flag": null,
2946
+ "result_key": null,
2947
+ "summary_label": null,
2948
+ "summary_docs_anchor": null,
2949
+ "sarif_rule_ids": null,
2950
+ "codeclimate_check_names": null,
2951
+ "ts_alias": null,
2952
+ "counts_in_total": false,
2953
+ "fixable": false,
2954
+ "suppressible": false,
2955
+ "suppress_comment": null,
2956
+ "note": "Requires --runtime-coverage input (V8 directory, V8 JSON, or Istanbul map)",
2957
+ "license": "freemium",
2958
+ "license_note": "A single local runtime-coverage capture is free; continuous or multi-capture runtime monitoring requires an active license (fallow license activate).",
2959
+ "docs_url": "https://docs.fallow.tools/explanations/health#runtime-coverage"
2960
+ },
2961
+ {
2962
+ "id": "secret-pii-log",
2963
+ "rule_id": "security/secret-pii-log",
2964
+ "command": "security",
2965
+ "category": "Security",
2966
+ "description": "Catalogue security candidate for CWE-532",
2967
+ "label": null,
2968
+ "config_key": null,
2969
+ "registry_index": null,
2970
+ "aliases": [],
2971
+ "lsp": false,
2972
+ "filter_flag": null,
2973
+ "result_key": null,
2974
+ "summary_label": null,
2975
+ "summary_docs_anchor": null,
2976
+ "sarif_rule_ids": null,
2977
+ "codeclimate_check_names": null,
2978
+ "ts_alias": null,
2979
+ "counts_in_total": false,
2980
+ "fixable": false,
2981
+ "suppressible": true,
2982
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
2983
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
2984
+ "license": "free",
2985
+ "license_note": null,
2986
+ "docs_url": "https://docs.fallow.tools/cli/security"
2987
+ },
2988
+ {
2989
+ "id": "secret-to-network",
2990
+ "rule_id": "security/secret-to-network",
2991
+ "command": "security",
2992
+ "category": "Security",
2993
+ "description": "Catalogue security candidate for CWE-201",
2994
+ "label": null,
2995
+ "config_key": null,
2996
+ "registry_index": null,
2997
+ "aliases": [],
2998
+ "lsp": false,
2999
+ "filter_flag": null,
3000
+ "result_key": null,
3001
+ "summary_label": null,
3002
+ "summary_docs_anchor": null,
3003
+ "sarif_rule_ids": null,
3004
+ "codeclimate_check_names": null,
3005
+ "ts_alias": null,
3006
+ "counts_in_total": false,
3007
+ "fixable": false,
3008
+ "suppressible": true,
3009
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3010
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3011
+ "license": "free",
3012
+ "license_note": null,
3013
+ "docs_url": "https://docs.fallow.tools/cli/security"
3014
+ },
3015
+ {
3016
+ "id": "sql-injection",
3017
+ "rule_id": "security/sql-injection",
3018
+ "command": "security",
3019
+ "category": "Security",
3020
+ "description": "Catalogue security candidate for CWE-89",
3021
+ "label": null,
3022
+ "config_key": null,
3023
+ "registry_index": null,
3024
+ "aliases": [],
3025
+ "lsp": false,
3026
+ "filter_flag": null,
3027
+ "result_key": null,
3028
+ "summary_label": null,
3029
+ "summary_docs_anchor": null,
3030
+ "sarif_rule_ids": null,
3031
+ "codeclimate_check_names": null,
3032
+ "ts_alias": null,
3033
+ "counts_in_total": false,
3034
+ "fixable": false,
3035
+ "suppressible": true,
3036
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3037
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3038
+ "license": "free",
3039
+ "license_note": null,
3040
+ "docs_url": "https://docs.fallow.tools/cli/security"
3041
+ },
3042
+ {
3043
+ "id": "ssrf",
3044
+ "rule_id": "security/ssrf",
3045
+ "command": "security",
3046
+ "category": "Security",
3047
+ "description": "Catalogue security candidate for CWE-918",
3048
+ "label": null,
3049
+ "config_key": null,
3050
+ "registry_index": null,
3051
+ "aliases": [],
3052
+ "lsp": false,
3053
+ "filter_flag": null,
3054
+ "result_key": null,
3055
+ "summary_label": null,
3056
+ "summary_docs_anchor": null,
3057
+ "sarif_rule_ids": null,
3058
+ "codeclimate_check_names": null,
3059
+ "ts_alias": null,
3060
+ "counts_in_total": false,
3061
+ "fixable": false,
3062
+ "suppressible": true,
3063
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3064
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3065
+ "license": "free",
3066
+ "license_note": null,
3067
+ "docs_url": "https://docs.fallow.tools/cli/security"
3068
+ },
3069
+ {
3070
+ "id": "ssti",
3071
+ "rule_id": "security/ssti",
3072
+ "command": "security",
3073
+ "category": "Security",
3074
+ "description": "Catalogue security candidate for CWE-1336",
3075
+ "label": null,
3076
+ "config_key": null,
3077
+ "registry_index": null,
3078
+ "aliases": [],
3079
+ "lsp": false,
3080
+ "filter_flag": null,
3081
+ "result_key": null,
3082
+ "summary_label": null,
3083
+ "summary_docs_anchor": null,
3084
+ "sarif_rule_ids": null,
3085
+ "codeclimate_check_names": null,
3086
+ "ts_alias": null,
3087
+ "counts_in_total": false,
3088
+ "fixable": false,
3089
+ "suppressible": true,
3090
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3091
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3092
+ "license": "free",
3093
+ "license_note": null,
3094
+ "docs_url": "https://docs.fallow.tools/cli/security"
3095
+ },
3096
+ {
3097
+ "id": "tainted-sink",
3098
+ "rule_id": "security/tainted-sink",
3099
+ "command": "security",
3100
+ "category": "Security",
3101
+ "description": "Syntactic security sink candidates require verification",
3102
+ "label": null,
3103
+ "config_key": null,
3104
+ "registry_index": null,
3105
+ "aliases": [],
3106
+ "lsp": false,
3107
+ "filter_flag": null,
3108
+ "result_key": null,
3109
+ "summary_label": null,
3110
+ "summary_docs_anchor": null,
3111
+ "sarif_rule_ids": null,
3112
+ "codeclimate_check_names": null,
3113
+ "ts_alias": null,
3114
+ "counts_in_total": false,
3115
+ "fixable": false,
3116
+ "suppressible": true,
3117
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3118
+ "note": null,
3119
+ "license": "free",
3120
+ "license_note": null,
3121
+ "docs_url": "https://docs.fallow.tools/cli/security"
3122
+ },
3123
+ {
3124
+ "id": "template-escape-bypass",
3125
+ "rule_id": "security/template-escape-bypass",
3126
+ "command": "security",
3127
+ "category": "Security",
3128
+ "description": "Catalogue security candidate for CWE-79",
3129
+ "label": null,
3130
+ "config_key": null,
3131
+ "registry_index": null,
3132
+ "aliases": [],
3133
+ "lsp": false,
3134
+ "filter_flag": null,
3135
+ "result_key": null,
3136
+ "summary_label": null,
3137
+ "summary_docs_anchor": null,
3138
+ "sarif_rule_ids": null,
3139
+ "codeclimate_check_names": null,
3140
+ "ts_alias": null,
3141
+ "counts_in_total": false,
3142
+ "fixable": false,
3143
+ "suppressible": true,
3144
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3145
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3146
+ "license": "free",
3147
+ "license_note": null,
3148
+ "docs_url": "https://docs.fallow.tools/cli/security"
3149
+ },
3150
+ {
3151
+ "id": "tls-validation-disabled",
3152
+ "rule_id": "security/tls-validation-disabled",
3153
+ "command": "security",
3154
+ "category": "Security",
3155
+ "description": "Catalogue security candidate for CWE-295",
3156
+ "label": null,
3157
+ "config_key": null,
3158
+ "registry_index": null,
3159
+ "aliases": [],
3160
+ "lsp": false,
3161
+ "filter_flag": null,
3162
+ "result_key": null,
3163
+ "summary_label": null,
3164
+ "summary_docs_anchor": null,
3165
+ "sarif_rule_ids": null,
3166
+ "codeclimate_check_names": null,
3167
+ "ts_alias": null,
3168
+ "counts_in_total": false,
3169
+ "fixable": false,
3170
+ "suppressible": true,
3171
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3172
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3173
+ "license": "free",
3174
+ "license_note": null,
3175
+ "docs_url": "https://docs.fallow.tools/cli/security"
3176
+ },
3177
+ {
3178
+ "id": "unsafe-buffer-alloc",
3179
+ "rule_id": "security/unsafe-buffer-alloc",
3180
+ "command": "security",
3181
+ "category": "Security",
3182
+ "description": "Catalogue security candidate for CWE-1188",
3183
+ "label": null,
3184
+ "config_key": null,
3185
+ "registry_index": null,
3186
+ "aliases": [],
3187
+ "lsp": false,
3188
+ "filter_flag": null,
3189
+ "result_key": null,
3190
+ "summary_label": null,
3191
+ "summary_docs_anchor": null,
3192
+ "sarif_rule_ids": null,
3193
+ "codeclimate_check_names": null,
3194
+ "ts_alias": null,
3195
+ "counts_in_total": false,
3196
+ "fixable": false,
3197
+ "suppressible": true,
3198
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3199
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3200
+ "license": "free",
3201
+ "license_note": null,
3202
+ "docs_url": "https://docs.fallow.tools/cli/security"
3203
+ },
3204
+ {
3205
+ "id": "unsafe-deserialization",
3206
+ "rule_id": "security/unsafe-deserialization",
3207
+ "command": "security",
3208
+ "category": "Security",
3209
+ "description": "Catalogue security candidate for CWE-502",
3210
+ "label": null,
3211
+ "config_key": null,
3212
+ "registry_index": null,
3213
+ "aliases": [],
3214
+ "lsp": false,
3215
+ "filter_flag": null,
3216
+ "result_key": null,
3217
+ "summary_label": null,
3218
+ "summary_docs_anchor": null,
3219
+ "sarif_rule_ids": null,
3220
+ "codeclimate_check_names": null,
3221
+ "ts_alias": null,
3222
+ "counts_in_total": false,
3223
+ "fixable": false,
3224
+ "suppressible": true,
3225
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3226
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3227
+ "license": "free",
3228
+ "license_note": null,
3229
+ "docs_url": "https://docs.fallow.tools/cli/security"
3230
+ },
3231
+ {
3232
+ "id": "untested-export",
3233
+ "rule_id": "fallow/untested-export",
3234
+ "command": "health",
3235
+ "category": "Health",
3236
+ "description": "Runtime-reachable export has no test dependency path",
3237
+ "label": null,
3238
+ "config_key": null,
3239
+ "registry_index": null,
3240
+ "aliases": [],
3241
+ "lsp": false,
3242
+ "filter_flag": "--coverage-gaps",
3243
+ "result_key": null,
3244
+ "summary_label": null,
3245
+ "summary_docs_anchor": null,
3246
+ "sarif_rule_ids": null,
3247
+ "codeclimate_check_names": null,
3248
+ "ts_alias": null,
3249
+ "counts_in_total": false,
3250
+ "fixable": false,
3251
+ "suppressible": true,
3252
+ "suppress_comment": "// fallow-ignore-file coverage-gaps",
3253
+ "note": null,
3254
+ "license": "free",
3255
+ "license_note": null,
3256
+ "docs_url": "https://docs.fallow.tools/explanations/health#coverage-gaps"
3257
+ },
3258
+ {
3259
+ "id": "untested-file",
3260
+ "rule_id": "fallow/untested-file",
3261
+ "command": "health",
3262
+ "category": "Health",
3263
+ "description": "Runtime-reachable file has no test dependency path",
3264
+ "label": null,
3265
+ "config_key": null,
3266
+ "registry_index": null,
3267
+ "aliases": [],
3268
+ "lsp": false,
3269
+ "filter_flag": "--coverage-gaps",
3270
+ "result_key": null,
3271
+ "summary_label": null,
3272
+ "summary_docs_anchor": null,
3273
+ "sarif_rule_ids": null,
3274
+ "codeclimate_check_names": null,
3275
+ "ts_alias": null,
3276
+ "counts_in_total": false,
3277
+ "fixable": false,
3278
+ "suppressible": true,
3279
+ "suppress_comment": "// fallow-ignore-file coverage-gaps",
3280
+ "note": null,
3281
+ "license": "free",
3282
+ "license_note": null,
3283
+ "docs_url": "https://docs.fallow.tools/explanations/health#coverage-gaps"
3284
+ },
3285
+ {
3286
+ "id": "weak-crypto",
3287
+ "rule_id": "security/weak-crypto",
3288
+ "command": "security",
3289
+ "category": "Security",
3290
+ "description": "Catalogue security candidate for CWE-327",
3291
+ "label": null,
3292
+ "config_key": null,
3293
+ "registry_index": null,
3294
+ "aliases": [],
3295
+ "lsp": false,
3296
+ "filter_flag": null,
3297
+ "result_key": null,
3298
+ "summary_label": null,
3299
+ "summary_docs_anchor": null,
3300
+ "sarif_rule_ids": null,
3301
+ "codeclimate_check_names": null,
3302
+ "ts_alias": null,
3303
+ "counts_in_total": false,
3304
+ "fixable": false,
3305
+ "suppressible": true,
3306
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3307
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3308
+ "license": "free",
3309
+ "license_note": null,
3310
+ "docs_url": "https://docs.fallow.tools/cli/security"
3311
+ },
3312
+ {
3313
+ "id": "webview-injection",
3314
+ "rule_id": "security/webview-injection",
3315
+ "command": "security",
3316
+ "category": "Security",
3317
+ "description": "Catalogue security candidate for CWE-94",
3318
+ "label": null,
3319
+ "config_key": null,
3320
+ "registry_index": null,
3321
+ "aliases": [],
3322
+ "lsp": false,
3323
+ "filter_flag": null,
3324
+ "result_key": null,
3325
+ "summary_label": null,
3326
+ "summary_docs_anchor": null,
3327
+ "sarif_rule_ids": null,
3328
+ "codeclimate_check_names": null,
3329
+ "ts_alias": null,
3330
+ "counts_in_total": false,
3331
+ "fixable": false,
3332
+ "suppressible": true,
3333
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3334
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3335
+ "license": "free",
3336
+ "license_note": null,
3337
+ "docs_url": "https://docs.fallow.tools/cli/security"
3338
+ },
3339
+ {
3340
+ "id": "world-writable-permission",
3341
+ "rule_id": "security/world-writable-permission",
3342
+ "command": "security",
3343
+ "category": "Security",
3344
+ "description": "Catalogue security candidate for CWE-732",
3345
+ "label": null,
3346
+ "config_key": null,
3347
+ "registry_index": null,
3348
+ "aliases": [],
3349
+ "lsp": false,
3350
+ "filter_flag": null,
3351
+ "result_key": null,
3352
+ "summary_label": null,
3353
+ "summary_docs_anchor": null,
3354
+ "sarif_rule_ids": null,
3355
+ "codeclimate_check_names": null,
3356
+ "ts_alias": null,
3357
+ "counts_in_total": false,
3358
+ "fixable": false,
3359
+ "suppressible": true,
3360
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3361
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3362
+ "license": "free",
3363
+ "license_note": null,
3364
+ "docs_url": "https://docs.fallow.tools/cli/security"
3365
+ },
3366
+ {
3367
+ "id": "xpath-injection",
3368
+ "rule_id": "security/xpath-injection",
3369
+ "command": "security",
3370
+ "category": "Security",
3371
+ "description": "Catalogue security candidate for CWE-643",
3372
+ "label": null,
3373
+ "config_key": null,
3374
+ "registry_index": null,
3375
+ "aliases": [],
3376
+ "lsp": false,
3377
+ "filter_flag": null,
3378
+ "result_key": null,
3379
+ "summary_label": null,
3380
+ "summary_docs_anchor": null,
3381
+ "sarif_rule_ids": null,
3382
+ "codeclimate_check_names": null,
3383
+ "ts_alias": null,
3384
+ "counts_in_total": false,
3385
+ "fixable": false,
3386
+ "suppressible": true,
3387
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3388
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3389
+ "license": "free",
3390
+ "license_note": null,
3391
+ "docs_url": "https://docs.fallow.tools/cli/security"
3392
+ },
3393
+ {
3394
+ "id": "xxe",
3395
+ "rule_id": "security/xxe",
3396
+ "command": "security",
3397
+ "category": "Security",
3398
+ "description": "Catalogue security candidate for CWE-611",
3399
+ "label": null,
3400
+ "config_key": null,
3401
+ "registry_index": null,
3402
+ "aliases": [],
3403
+ "lsp": false,
3404
+ "filter_flag": null,
3405
+ "result_key": null,
3406
+ "summary_label": null,
3407
+ "summary_docs_anchor": null,
3408
+ "sarif_rule_ids": null,
3409
+ "codeclimate_check_names": null,
3410
+ "ts_alias": null,
3411
+ "counts_in_total": false,
3412
+ "fixable": false,
3413
+ "suppressible": true,
3414
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3415
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3416
+ "license": "free",
3417
+ "license_note": null,
3418
+ "docs_url": "https://docs.fallow.tools/cli/security"
3419
+ },
3420
+ {
3421
+ "id": "zip-slip",
3422
+ "rule_id": "security/zip-slip",
3423
+ "command": "security",
3424
+ "category": "Security",
3425
+ "description": "Catalogue security candidate for CWE-22",
3426
+ "label": null,
3427
+ "config_key": null,
3428
+ "registry_index": null,
3429
+ "aliases": [],
3430
+ "lsp": false,
3431
+ "filter_flag": null,
3432
+ "result_key": null,
3433
+ "summary_label": null,
3434
+ "summary_docs_anchor": null,
3435
+ "sarif_rule_ids": null,
3436
+ "codeclimate_check_names": null,
3437
+ "ts_alias": null,
3438
+ "counts_in_total": false,
3439
+ "fixable": false,
3440
+ "suppressible": true,
3441
+ "suppress_comment": "// fallow-ignore-next-line security-sink",
3442
+ "note": "Tainted-sink catalogue category; the security-sink suppression token covers every category",
3443
+ "license": "free",
3444
+ "license_note": null,
3445
+ "docs_url": "https://docs.fallow.tools/cli/security"
3446
+ }
3447
+ ]
3448
+ }