@shakibkhatri/idiolect-core 0.0.1 → 0.1.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.
Files changed (47) hide show
  1. package/dist/analyzer-go.js +3 -5
  2. package/dist/analyzer-go.js.map +1 -1
  3. package/dist/analyzer-py.js +3 -5
  4. package/dist/analyzer-py.js.map +1 -1
  5. package/dist/analyzer.d.ts +3 -1
  6. package/dist/analyzer.js +10 -5
  7. package/dist/analyzer.js.map +1 -1
  8. package/dist/baseline.js +3 -2
  9. package/dist/baseline.js.map +1 -1
  10. package/dist/check.d.ts +5 -0
  11. package/dist/check.js +6 -5
  12. package/dist/check.js.map +1 -1
  13. package/dist/collector.d.ts +1 -0
  14. package/dist/collector.js +18 -7
  15. package/dist/collector.js.map +1 -1
  16. package/dist/config.d.ts +21 -0
  17. package/dist/config.js +13 -0
  18. package/dist/config.js.map +1 -1
  19. package/dist/index.d.ts +5 -3
  20. package/dist/index.js +5 -3
  21. package/dist/index.js.map +1 -1
  22. package/dist/llm.js +46 -29
  23. package/dist/llm.js.map +1 -1
  24. package/dist/metrics.js +1 -0
  25. package/dist/metrics.js.map +1 -1
  26. package/dist/profile.d.ts +10 -0
  27. package/dist/profile.js +16 -2
  28. package/dist/profile.js.map +1 -1
  29. package/dist/render.d.ts +1 -0
  30. package/dist/render.js +55 -9
  31. package/dist/render.js.map +1 -1
  32. package/dist/served.d.ts +8 -0
  33. package/dist/served.js +39 -0
  34. package/dist/served.js.map +1 -0
  35. package/dist/styles.d.ts +39 -0
  36. package/dist/styles.js +76 -0
  37. package/dist/styles.js.map +1 -0
  38. package/dist/unbot.js +2 -2
  39. package/dist/unbot.js.map +1 -1
  40. package/dist/writer.d.ts +4 -3
  41. package/dist/writer.js +14 -5
  42. package/dist/writer.js.map +1 -1
  43. package/package.json +2 -1
  44. package/styles/go-caddy.json +1368 -0
  45. package/styles/kotlin-tivi.json +1505 -0
  46. package/styles/python-httpx.json +1052 -0
  47. package/styles/typescript-vue.json +1473 -0
@@ -0,0 +1,1505 @@
1
+ {
2
+ "version": 1,
3
+ "id": "kotlin-tivi",
4
+ "title": "Tivi",
5
+ "language": "kotlin",
6
+ "source": {
7
+ "project": "github.com/chrisbanes/tivi",
8
+ "license": "Apache-2.0",
9
+ "commit": "92cd468cc7fc0c25d2b29ab61104ca7b22c0e0e4",
10
+ "snapshot": "2023-12-30T12:38:44Z",
11
+ "lines": 25584
12
+ },
13
+ "stats": {
14
+ "files": 640,
15
+ "loc": 25584,
16
+ "functions": {
17
+ "count": 1324,
18
+ "blockBody": 721,
19
+ "expressionBody": 427,
20
+ "lengthLines": {
21
+ "1": 2,
22
+ "3": 172,
23
+ "4": 67,
24
+ "5": 58,
25
+ "6": 29,
26
+ "7": 42,
27
+ "8": 30,
28
+ "9": 31,
29
+ "10": 9,
30
+ "11": 11,
31
+ "12": 15,
32
+ "13": 14,
33
+ "14": 10,
34
+ "15": 9,
35
+ "16": 11,
36
+ "17": 15,
37
+ "18": 11,
38
+ "19": 11,
39
+ "20": 9,
40
+ "21": 8,
41
+ "22": 8,
42
+ "23": 6,
43
+ "24": 11,
44
+ "25": 7,
45
+ "26": 11,
46
+ "27": 7,
47
+ "28": 4,
48
+ "29": 7,
49
+ "30": 2,
50
+ "31": 4,
51
+ "32": 3,
52
+ "33": 6,
53
+ "34": 4,
54
+ "35": 1,
55
+ "36": 4,
56
+ "37": 3,
57
+ "38": 3,
58
+ "39": 3,
59
+ "40": 3,
60
+ "41": 4,
61
+ "42": 2,
62
+ "43": 2,
63
+ "44": 1,
64
+ "45": 2,
65
+ "47": 3,
66
+ "48": 1,
67
+ "49": 1,
68
+ "51": 1,
69
+ "52": 1,
70
+ "54": 2,
71
+ "57": 1,
72
+ "58": 3,
73
+ "60": 2,
74
+ "61": 2,
75
+ "62": 1,
76
+ "64": 1,
77
+ "65": 1,
78
+ "66": 3,
79
+ "72": 2,
80
+ "73": 1,
81
+ "76": 2,
82
+ "77": 1,
83
+ "81": 1,
84
+ "88": 1,
85
+ "90": 1,
86
+ "92": 1,
87
+ "95": 2,
88
+ "98": 1,
89
+ "103": 1,
90
+ "104": 1,
91
+ "107": 1,
92
+ "113": 1,
93
+ "121": 1,
94
+ "130": 1,
95
+ "142": 1,
96
+ "152": 1,
97
+ "155": 1,
98
+ "159": 1,
99
+ "160": 1,
100
+ "167": 1,
101
+ "168": 1
102
+ },
103
+ "params": {
104
+ "0": 295,
105
+ "1": 664,
106
+ "2": 219,
107
+ "3": 51,
108
+ "4": 32,
109
+ "5": 23,
110
+ "6": 10,
111
+ "7": 7,
112
+ "8": 5,
113
+ "9": 4,
114
+ "10": 4,
115
+ "11": 4,
116
+ "12": 2,
117
+ "14": 2,
118
+ "16": 1,
119
+ "26": 1
120
+ },
121
+ "maxNesting": {
122
+ "0": 358,
123
+ "1": 173,
124
+ "2": 87,
125
+ "3": 55,
126
+ "4": 33,
127
+ "5": 10,
128
+ "6": 3,
129
+ "7": 2
130
+ },
131
+ "earlyReturn": 27
132
+ },
133
+ "naming": {
134
+ "casing": {
135
+ "function": {
136
+ "camel": 1080,
137
+ "pascal": 142,
138
+ "snake": 0,
139
+ "screaming": 0,
140
+ "backtick": 0,
141
+ "other": 0
142
+ },
143
+ "class": {
144
+ "camel": 0,
145
+ "pascal": 712,
146
+ "snake": 0,
147
+ "screaming": 0,
148
+ "backtick": 0,
149
+ "other": 0
150
+ },
151
+ "property": {
152
+ "camel": 303,
153
+ "pascal": 29,
154
+ "snake": 2,
155
+ "screaming": 15,
156
+ "backtick": 0,
157
+ "other": 0
158
+ },
159
+ "local": {
160
+ "camel": 638,
161
+ "pascal": 0,
162
+ "snake": 0,
163
+ "screaming": 0,
164
+ "backtick": 0,
165
+ "other": 0
166
+ },
167
+ "parameter": {
168
+ "camel": 2809,
169
+ "pascal": 0,
170
+ "snake": 12,
171
+ "screaming": 0,
172
+ "backtick": 0,
173
+ "other": 45
174
+ },
175
+ "constant": {
176
+ "camel": 5,
177
+ "pascal": 0,
178
+ "snake": 5,
179
+ "screaming": 33,
180
+ "backtick": 0,
181
+ "other": 0
182
+ }
183
+ },
184
+ "nameLength": {
185
+ "function": {
186
+ "1": 28,
187
+ "3": 48,
188
+ "4": 29,
189
+ "5": 20,
190
+ "6": 178,
191
+ "7": 41,
192
+ "8": 32,
193
+ "9": 66,
194
+ "10": 48,
195
+ "11": 45,
196
+ "12": 63,
197
+ "13": 38,
198
+ "14": 30,
199
+ "15": 77,
200
+ "16": 72,
201
+ "17": 64,
202
+ "18": 49,
203
+ "19": 27,
204
+ "20": 40,
205
+ "21": 28,
206
+ "22": 24,
207
+ "23": 29,
208
+ "24": 10,
209
+ "25": 15,
210
+ "26": 17,
211
+ "27": 23,
212
+ "28": 16,
213
+ "29": 12,
214
+ "30": 3,
215
+ "31": 10,
216
+ "32": 7,
217
+ "33": 4,
218
+ "34": 10,
219
+ "35": 5,
220
+ "36": 4,
221
+ "37": 2,
222
+ "38": 3,
223
+ "40": 3,
224
+ "46": 2
225
+ },
226
+ "class": {
227
+ "4": 2,
228
+ "5": 4,
229
+ "6": 47,
230
+ "7": 12,
231
+ "8": 6,
232
+ "9": 12,
233
+ "10": 29,
234
+ "11": 20,
235
+ "12": 31,
236
+ "13": 27,
237
+ "14": 26,
238
+ "15": 57,
239
+ "16": 32,
240
+ "17": 43,
241
+ "18": 36,
242
+ "19": 24,
243
+ "20": 44,
244
+ "21": 36,
245
+ "22": 31,
246
+ "23": 36,
247
+ "24": 23,
248
+ "25": 25,
249
+ "26": 21,
250
+ "27": 15,
251
+ "28": 16,
252
+ "29": 16,
253
+ "30": 10,
254
+ "31": 6,
255
+ "32": 4,
256
+ "33": 3,
257
+ "34": 7,
258
+ "35": 6,
259
+ "36": 3,
260
+ "37": 1,
261
+ "38": 1
262
+ },
263
+ "property": {
264
+ "2": 5,
265
+ "4": 13,
266
+ "5": 15,
267
+ "6": 24,
268
+ "7": 14,
269
+ "8": 27,
270
+ "9": 22,
271
+ "10": 30,
272
+ "11": 28,
273
+ "12": 23,
274
+ "13": 25,
275
+ "14": 15,
276
+ "15": 12,
277
+ "16": 7,
278
+ "17": 7,
279
+ "18": 17,
280
+ "19": 9,
281
+ "20": 14,
282
+ "21": 4,
283
+ "22": 12,
284
+ "23": 11,
285
+ "24": 5,
286
+ "26": 5,
287
+ "27": 3,
288
+ "30": 1,
289
+ "31": 1
290
+ },
291
+ "local": {
292
+ "1": 8,
293
+ "2": 6,
294
+ "3": 10,
295
+ "4": 37,
296
+ "5": 54,
297
+ "6": 47,
298
+ "7": 79,
299
+ "8": 32,
300
+ "9": 53,
301
+ "10": 95,
302
+ "11": 52,
303
+ "12": 30,
304
+ "13": 26,
305
+ "14": 30,
306
+ "15": 14,
307
+ "16": 18,
308
+ "17": 15,
309
+ "18": 6,
310
+ "19": 3,
311
+ "20": 15,
312
+ "22": 3,
313
+ "24": 1,
314
+ "25": 2,
315
+ "27": 1,
316
+ "29": 1
317
+ },
318
+ "parameter": {
319
+ "1": 3,
320
+ "2": 71,
321
+ "3": 43,
322
+ "4": 213,
323
+ "5": 255,
324
+ "6": 369,
325
+ "7": 607,
326
+ "8": 348,
327
+ "9": 213,
328
+ "10": 90,
329
+ "11": 78,
330
+ "12": 84,
331
+ "13": 87,
332
+ "14": 62,
333
+ "15": 66,
334
+ "16": 56,
335
+ "17": 52,
336
+ "18": 50,
337
+ "19": 22,
338
+ "20": 19,
339
+ "21": 16,
340
+ "22": 6,
341
+ "23": 9,
342
+ "24": 3,
343
+ "25": 12,
344
+ "26": 6,
345
+ "27": 7,
346
+ "28": 5,
347
+ "29": 3,
348
+ "30": 1,
349
+ "31": 2,
350
+ "32": 1,
351
+ "33": 2,
352
+ "34": 2,
353
+ "35": 1,
354
+ "36": 1,
355
+ "38": 1
356
+ },
357
+ "constant": {
358
+ "2": 1,
359
+ "3": 1,
360
+ "5": 3,
361
+ "6": 1,
362
+ "7": 4,
363
+ "8": 1,
364
+ "9": 5,
365
+ "10": 2,
366
+ "11": 1,
367
+ "14": 5,
368
+ "15": 2,
369
+ "16": 4,
370
+ "17": 2,
371
+ "18": 1,
372
+ "19": 2,
373
+ "20": 1,
374
+ "22": 1,
375
+ "24": 2,
376
+ "26": 2,
377
+ "27": 1,
378
+ "30": 1
379
+ }
380
+ },
381
+ "functionVerb": {
382
+ "standard": 1,
383
+ "on": 18,
384
+ "from": 2,
385
+ "handle": 5,
386
+ "finish": 1,
387
+ "startup": 1,
388
+ "provide": 101,
389
+ "get": 100,
390
+ "select": 1,
391
+ "initialize": 10,
392
+ "refresh": 6,
393
+ "log": 5,
394
+ "create": 59,
395
+ "bind": 51,
396
+ "intercept": 5,
397
+ "is": 12,
398
+ "as": 5,
399
+ "find": 3,
400
+ "build": 4,
401
+ "map": 32,
402
+ "content": 2,
403
+ "show": 16,
404
+ "report": 4,
405
+ "color": 4,
406
+ "entry": 19,
407
+ "haze": 1,
408
+ "body": 1,
409
+ "item": 2,
410
+ "gutter": 2,
411
+ "full": 1,
412
+ "append": 1,
413
+ "prepend": 1,
414
+ "remember": 4,
415
+ "then": 1,
416
+ "nested": 1,
417
+ "tivi": 4,
418
+ "should": 5,
419
+ "auto": 1,
420
+ "backdrop": 4,
421
+ "placeholder": 2,
422
+ "date": 5,
423
+ "time": 4,
424
+ "clickable": 1,
425
+ "empty": 2,
426
+ "expanding": 1,
427
+ "draw": 3,
428
+ "scrimmed": 1,
429
+ "scrim": 1,
430
+ "async": 1,
431
+ "result": 1,
432
+ "size": 1,
433
+ "measure": 1,
434
+ "set": 12,
435
+ "to": 8,
436
+ "align": 1,
437
+ "update": 31,
438
+ "loading": 1,
439
+ "copy": 2,
440
+ "plus": 1,
441
+ "minus": 1,
442
+ "coerce": 1,
443
+ "poster": 4,
444
+ "checkbox": 1,
445
+ "preference": 3,
446
+ "search": 11,
447
+ "sort": 2,
448
+ "label": 1,
449
+ "user": 2,
450
+ "ui": 3,
451
+ "emit": 1,
452
+ "clear": 8,
453
+ "view": 2,
454
+ "add": 13,
455
+ "action": 5,
456
+ "font": 4,
457
+ "read": 2,
458
+ "fmt": 4,
459
+ "format": 28,
460
+ "airs": 5,
461
+ "followed": 1,
462
+ "season": 14,
463
+ "episode": 25,
464
+ "genre": 2,
465
+ "track": 3,
466
+ "lerp": 2,
467
+ "combine": 5,
468
+ "fluent": 1,
469
+ "parallel": 1,
470
+ "v": 5,
471
+ "d": 5,
472
+ "i": 6,
473
+ "e": 6,
474
+ "w": 6,
475
+ "invoke": 28,
476
+ "composite": 1,
477
+ "send": 1,
478
+ "trace": 2,
479
+ "observe": 39,
480
+ "toggle": 2,
481
+ "decode": 11,
482
+ "encode": 11,
483
+ "insert": 17,
484
+ "upsert": 6,
485
+ "episodes": 2,
486
+ "delete": 65,
487
+ "mapper": 1,
488
+ "watches": 4,
489
+ "watch": 3,
490
+ "entries": 46,
491
+ "last": 2,
492
+ "request": 2,
493
+ "paged": 4,
494
+ "seasons": 5,
495
+ "trakt": 3,
496
+ "image": 2,
497
+ "save": 11,
498
+ "remove": 10,
499
+ "has": 2,
500
+ "sync": 6,
501
+ "need": 6,
502
+ "mark": 6,
503
+ "fetch": 3,
504
+ "process": 4,
505
+ "merge": 3,
506
+ "pull": 1,
507
+ "invalidate": 2,
508
+ "pair": 2,
509
+ "parse": 2,
510
+ "syncer": 2,
511
+ "filter": 2,
512
+ "store": 1,
513
+ "using": 1,
514
+ "reader": 1,
515
+ "write": 1,
516
+ "shows": 1,
517
+ "register": 6,
518
+ "serialize": 4,
519
+ "login": 1,
520
+ "logout": 1,
521
+ "cache": 1,
522
+ "main": 1,
523
+ "do": 26,
524
+ "unfollow": 1,
525
+ "follow": 1,
526
+ "load": 2,
527
+ "configure": 4,
528
+ "apply": 2,
529
+ "compose": 1,
530
+ "determine": 1,
531
+ "name": 1,
532
+ "schedule": 1,
533
+ "run": 1,
534
+ "next": 3,
535
+ "swipeable": 1,
536
+ "reset": 3,
537
+ "swipe": 2,
538
+ "animate": 1,
539
+ "present": 15,
540
+ "account": 2,
541
+ "app": 1,
542
+ "preview": 3,
543
+ "dev": 2,
544
+ "event": 14,
545
+ "discover": 2,
546
+ "carousel": 1,
547
+ "header": 2,
548
+ "info": 3,
549
+ "library": 4,
550
+ "popular": 1,
551
+ "recommended": 1,
552
+ "home": 5,
553
+ "for": 1,
554
+ "previous": 1,
555
+ "go": 1,
556
+ "pop": 1,
557
+ "settings": 1,
558
+ "theme": 2,
559
+ "network": 1,
560
+ "runtime": 1,
561
+ "certificate": 1,
562
+ "genres": 1,
563
+ "related": 1,
564
+ "pager": 1,
565
+ "trending": 1,
566
+ "up": 4
567
+ },
568
+ "booleanPrefix": {
569
+ "is": 19,
570
+ "should": 2,
571
+ "use": 4,
572
+ "library": 4,
573
+ "up": 2,
574
+ "ignore": 2,
575
+ "report": 4,
576
+ "developer": 2,
577
+ "get": 1,
578
+ "need": 6,
579
+ "process": 2,
580
+ "has": 2,
581
+ "refreshing": 1,
582
+ "dynamic": 4,
583
+ "open": 1
584
+ },
585
+ "abbreviated": 279,
586
+ "identifiers": 5830,
587
+ "testNames": {
588
+ "camel": 54,
589
+ "camelSentence": 28,
590
+ "snake": 20
591
+ },
592
+ "genericNames": 0
593
+ },
594
+ "tests": {
595
+ "files": 24,
596
+ "loc": 1329,
597
+ "functions": 102
598
+ },
599
+ "comments": {
600
+ "line": 1613,
601
+ "block": 3,
602
+ "doc": 35,
603
+ "chars": 88075,
604
+ "lowercaseStart": 85,
605
+ "trailingPeriod": 47,
606
+ "todo": {
607
+ "TODO:": 4,
608
+ "TODO": 6,
609
+ "FIXME": 1
610
+ },
611
+ "tells": {},
612
+ "publicDecls": 2020,
613
+ "publicDocumented": 22,
614
+ "privateDecls": 394,
615
+ "privateDocumented": 9
616
+ },
617
+ "errors": {
618
+ "tryCatch": 29,
619
+ "runCatching": 13,
620
+ "resultType": 23,
621
+ "forceUnwrap": 58
622
+ },
623
+ "kotlin": {
624
+ "when3": 63,
625
+ "ifElseChain3": 2,
626
+ "sealedInterface": 15,
627
+ "sealedClass": 2,
628
+ "extensionFunctions": 91,
629
+ "dataClasses": 146,
630
+ "composables": 167,
631
+ "modifierParamFirst": 7,
632
+ "modifierParamLater": 96,
633
+ "remember": 171
634
+ },
635
+ "typescript": {
636
+ "arrowFunctions": 0,
637
+ "functionDeclarations": 0,
638
+ "typeAliases": 0,
639
+ "interfaces": 0,
640
+ "optionalChains": 0,
641
+ "anyTypes": 0
642
+ },
643
+ "python": {
644
+ "typeHinted": 0,
645
+ "fStrings": 0,
646
+ "formatCalls": 0,
647
+ "comprehensions": 0,
648
+ "bareExcepts": 0,
649
+ "dataclasses": 0
650
+ },
651
+ "go": {
652
+ "errChecks": 0,
653
+ "namedReturns": 0,
654
+ "structs": 0,
655
+ "interfaces": 0,
656
+ "panics": 0
657
+ }
658
+ },
659
+ "commitStats": {
660
+ "count": 3110,
661
+ "subjectLength": {
662
+ "4": 1,
663
+ "6": 2,
664
+ "7": 1,
665
+ "8": 4,
666
+ "9": 11,
667
+ "10": 4,
668
+ "11": 19,
669
+ "12": 14,
670
+ "13": 17,
671
+ "14": 29,
672
+ "15": 20,
673
+ "16": 25,
674
+ "17": 37,
675
+ "18": 36,
676
+ "19": 73,
677
+ "20": 58,
678
+ "21": 71,
679
+ "22": 68,
680
+ "23": 78,
681
+ "24": 81,
682
+ "25": 89,
683
+ "26": 86,
684
+ "27": 114,
685
+ "28": 95,
686
+ "29": 91,
687
+ "30": 97,
688
+ "31": 92,
689
+ "32": 107,
690
+ "33": 115,
691
+ "34": 121,
692
+ "35": 114,
693
+ "36": 96,
694
+ "37": 118,
695
+ "38": 99,
696
+ "39": 98,
697
+ "40": 90,
698
+ "41": 83,
699
+ "42": 75,
700
+ "43": 89,
701
+ "44": 73,
702
+ "45": 50,
703
+ "46": 58,
704
+ "47": 62,
705
+ "48": 38,
706
+ "49": 46,
707
+ "50": 39,
708
+ "51": 32,
709
+ "52": 24,
710
+ "53": 31,
711
+ "54": 17,
712
+ "55": 17,
713
+ "56": 17,
714
+ "57": 19,
715
+ "58": 6,
716
+ "59": 11,
717
+ "60": 7,
718
+ "61": 5,
719
+ "62": 6,
720
+ "63": 5,
721
+ "64": 3,
722
+ "65": 6,
723
+ "66": 6,
724
+ "68": 5,
725
+ "70": 2,
726
+ "71": 1,
727
+ "72": 1,
728
+ "73": 1,
729
+ "75": 2,
730
+ "77": 1,
731
+ "78": 1
732
+ },
733
+ "lowercaseStart": 13,
734
+ "conventionalPrefix": 0,
735
+ "trailingPeriod": 4,
736
+ "withBody": 570,
737
+ "bodyLines": 1556,
738
+ "bodyLinesWrapped": 1528,
739
+ "tense": {
740
+ "imperative": 3070,
741
+ "thirdPerson": 25,
742
+ "past": 15
743
+ }
744
+ },
745
+ "rules": [
746
+ {
747
+ "id": "kotlin.functions.length-p50.value",
748
+ "scope": "personal",
749
+ "language": "kotlin",
750
+ "category": "structure",
751
+ "kind": "voice",
752
+ "text": "Keep functions short. Typical length is 7 lines, 90% are under 36 lines.",
753
+ "evidence": {
754
+ "metric": {
755
+ "name": "functions.length-p50",
756
+ "value": 7,
757
+ "sampleSize": 721
758
+ },
759
+ "examples": []
760
+ },
761
+ "confidence": 0.8,
762
+ "status": "auto"
763
+ },
764
+ {
765
+ "id": "kotlin.functions.params-p90.value",
766
+ "scope": "personal",
767
+ "language": "kotlin",
768
+ "category": "structure",
769
+ "kind": "voice",
770
+ "text": "Functions take at most 3 parameters in 90% of cases.",
771
+ "evidence": {
772
+ "metric": {
773
+ "name": "functions.params-p90",
774
+ "value": 3,
775
+ "sampleSize": 1324
776
+ },
777
+ "examples": []
778
+ },
779
+ "confidence": 0.8,
780
+ "status": "auto"
781
+ },
782
+ {
783
+ "id": "kotlin.functions.nesting-p90.value",
784
+ "scope": "personal",
785
+ "language": "kotlin",
786
+ "category": "structure",
787
+ "kind": "voice",
788
+ "text": "Keep nesting shallow. 90% of functions nest at most 3 levels deep.",
789
+ "evidence": {
790
+ "metric": {
791
+ "name": "functions.nesting-p90",
792
+ "value": 3,
793
+ "sampleSize": 721
794
+ },
795
+ "examples": []
796
+ },
797
+ "confidence": 0.8,
798
+ "status": "auto"
799
+ },
800
+ {
801
+ "id": "kotlin.naming.constant-screaming-ratio.high",
802
+ "scope": "personal",
803
+ "language": "kotlin",
804
+ "category": "naming",
805
+ "kind": "voice",
806
+ "text": "Constants are SCREAMING_SNAKE_CASE.",
807
+ "evidence": {
808
+ "metric": {
809
+ "name": "naming.constant-screaming-ratio",
810
+ "value": 0.868,
811
+ "sampleSize": 38
812
+ },
813
+ "examples": []
814
+ },
815
+ "confidence": 0.73,
816
+ "status": "auto"
817
+ },
818
+ {
819
+ "id": "kotlin.naming.abbreviation-ratio.low",
820
+ "scope": "personal",
821
+ "language": "kotlin",
822
+ "category": "naming",
823
+ "kind": "voice",
824
+ "text": "Spell names out. Avoid abbreviations.",
825
+ "evidence": {
826
+ "metric": {
827
+ "name": "naming.abbreviation-ratio",
828
+ "value": 0.048,
829
+ "sampleSize": 5830
830
+ },
831
+ "examples": []
832
+ },
833
+ "confidence": 0.95,
834
+ "status": "auto"
835
+ },
836
+ {
837
+ "id": "kotlin.comments.per-100-loc.value",
838
+ "scope": "personal",
839
+ "language": "kotlin",
840
+ "category": "comments",
841
+ "kind": "voice",
842
+ "text": "Comment sparingly. About 6.5 comments per 100 lines of code.",
843
+ "evidence": {
844
+ "metric": {
845
+ "name": "comments.per-100-loc",
846
+ "value": 6.453,
847
+ "sampleSize": 25584
848
+ },
849
+ "examples": []
850
+ },
851
+ "confidence": 0.8,
852
+ "status": "auto"
853
+ },
854
+ {
855
+ "id": "kotlin.comments.doc-ratio.low",
856
+ "scope": "personal",
857
+ "language": "kotlin",
858
+ "category": "comments",
859
+ "kind": "voice",
860
+ "text": "Use short inline comments. Doc comments are rare.",
861
+ "evidence": {
862
+ "metric": {
863
+ "name": "comments.doc-ratio",
864
+ "value": 0.021,
865
+ "sampleSize": 1651
866
+ },
867
+ "examples": []
868
+ },
869
+ "confidence": 0.97,
870
+ "status": "auto"
871
+ },
872
+ {
873
+ "id": "kotlin.comments.lowercase-start-ratio.low",
874
+ "scope": "personal",
875
+ "language": "kotlin",
876
+ "category": "comments",
877
+ "kind": "voice",
878
+ "text": "Start comments with a capital letter.",
879
+ "evidence": {
880
+ "metric": {
881
+ "name": "comments.lowercase-start-ratio",
882
+ "value": 0.051,
883
+ "sampleSize": 1651
884
+ },
885
+ "examples": []
886
+ },
887
+ "confidence": 0.94,
888
+ "status": "auto"
889
+ },
890
+ {
891
+ "id": "kotlin.comments.trailing-period-ratio.low",
892
+ "scope": "personal",
893
+ "language": "kotlin",
894
+ "category": "comments",
895
+ "kind": "voice",
896
+ "text": "No trailing period on comments.",
897
+ "evidence": {
898
+ "metric": {
899
+ "name": "comments.trailing-period-ratio",
900
+ "value": 0.028,
901
+ "sampleSize": 1651
902
+ },
903
+ "examples": []
904
+ },
905
+ "confidence": 0.96,
906
+ "status": "auto"
907
+ },
908
+ {
909
+ "id": "kotlin.comments.avg-chars.value",
910
+ "scope": "personal",
911
+ "language": "kotlin",
912
+ "category": "comments",
913
+ "kind": "voice",
914
+ "text": "Comments average 53 characters.",
915
+ "evidence": {
916
+ "metric": {
917
+ "name": "comments.avg-chars",
918
+ "value": 53,
919
+ "sampleSize": 1651
920
+ },
921
+ "examples": []
922
+ },
923
+ "confidence": 0.8,
924
+ "status": "auto"
925
+ },
926
+ {
927
+ "id": "kotlin.comments.public-doc-ratio.low",
928
+ "scope": "personal",
929
+ "language": "kotlin",
930
+ "category": "comments",
931
+ "kind": "voice",
932
+ "text": "Do not add doc comments to public declarations by default. The name should carry the meaning.",
933
+ "evidence": {
934
+ "metric": {
935
+ "name": "comments.public-doc-ratio",
936
+ "value": 0.011,
937
+ "sampleSize": 2020
938
+ },
939
+ "examples": []
940
+ },
941
+ "confidence": 0.98,
942
+ "status": "auto"
943
+ },
944
+ {
945
+ "id": "kotlin.kotlin.when-ratio.high",
946
+ "scope": "personal",
947
+ "language": "kotlin",
948
+ "category": "structure",
949
+ "kind": "idiom",
950
+ "text": "Use when instead of if/else chains with three or more branches.",
951
+ "evidence": {
952
+ "metric": {
953
+ "name": "kotlin.when-ratio",
954
+ "value": 0.969,
955
+ "sampleSize": 65
956
+ },
957
+ "examples": []
958
+ },
959
+ "confidence": 0.89,
960
+ "status": "auto"
961
+ },
962
+ {
963
+ "id": "kotlin.kotlin.extension-per-kloc.value",
964
+ "scope": "personal",
965
+ "language": "kotlin",
966
+ "category": "structure",
967
+ "kind": "idiom",
968
+ "text": "Extension functions are common, about 3.6 per 1000 lines.",
969
+ "evidence": {
970
+ "metric": {
971
+ "name": "kotlin.extension-per-kloc",
972
+ "value": 3.557,
973
+ "sampleSize": 25584
974
+ },
975
+ "examples": []
976
+ },
977
+ "confidence": 0.8,
978
+ "status": "auto"
979
+ },
980
+ {
981
+ "id": "avoid.kotlin.comments.buzzwords",
982
+ "scope": "personal",
983
+ "language": "kotlin",
984
+ "category": "avoid",
985
+ "kind": "voice",
986
+ "text": "Do not use words like robust, seamless, leverage, comprehensive, utilize, streamline, crucial or delve in comments.",
987
+ "evidence": {
988
+ "metric": {
989
+ "name": "comments.buzzword-ratio",
990
+ "value": 0,
991
+ "sampleSize": 1651
992
+ },
993
+ "examples": []
994
+ },
995
+ "confidence": 1,
996
+ "status": "auto"
997
+ },
998
+ {
999
+ "id": "avoid.kotlin.comments.restating",
1000
+ "scope": "personal",
1001
+ "language": "kotlin",
1002
+ "category": "avoid",
1003
+ "kind": "voice",
1004
+ "text": "Do not start comments with \"This function\", \"This method\" or \"This class\". Say what is not obvious from the code, or write nothing.",
1005
+ "evidence": {
1006
+ "metric": {
1007
+ "name": "comments.restates-ratio",
1008
+ "value": 0,
1009
+ "sampleSize": 1651
1010
+ },
1011
+ "examples": []
1012
+ },
1013
+ "confidence": 1,
1014
+ "status": "auto"
1015
+ },
1016
+ {
1017
+ "id": "avoid.kotlin.comments.emoji",
1018
+ "scope": "personal",
1019
+ "language": "kotlin",
1020
+ "category": "avoid",
1021
+ "kind": "voice",
1022
+ "text": "No emoji in comments.",
1023
+ "evidence": {
1024
+ "metric": {
1025
+ "name": "comments.emoji-ratio",
1026
+ "value": 0,
1027
+ "sampleSize": 1651
1028
+ },
1029
+ "examples": []
1030
+ },
1031
+ "confidence": 1,
1032
+ "status": "auto"
1033
+ },
1034
+ {
1035
+ "id": "avoid.kotlin.comments.private-docblocks",
1036
+ "scope": "personal",
1037
+ "language": "kotlin",
1038
+ "category": "avoid",
1039
+ "kind": "voice",
1040
+ "text": "Do not write doc comments on private functions and properties.",
1041
+ "evidence": {
1042
+ "metric": {
1043
+ "name": "comments.private-doc-ratio",
1044
+ "value": 0.023,
1045
+ "sampleSize": 394
1046
+ },
1047
+ "examples": []
1048
+ },
1049
+ "confidence": 0.96,
1050
+ "status": "auto"
1051
+ },
1052
+ {
1053
+ "id": "avoid.kotlin.naming.generic",
1054
+ "scope": "personal",
1055
+ "language": "kotlin",
1056
+ "category": "avoid",
1057
+ "kind": "voice",
1058
+ "text": "No generic names like handleData, processItem, result2 or helper. Name the thing after what it is.",
1059
+ "evidence": {
1060
+ "metric": {
1061
+ "name": "naming.generic-ratio",
1062
+ "value": 0,
1063
+ "sampleSize": 1222
1064
+ },
1065
+ "examples": []
1066
+ },
1067
+ "confidence": 1,
1068
+ "status": "auto"
1069
+ },
1070
+ {
1071
+ "id": "avoid.kotlin.comments.todo",
1072
+ "scope": "personal",
1073
+ "language": "kotlin",
1074
+ "category": "avoid",
1075
+ "kind": "voice",
1076
+ "text": "Do not leave TODO comments.",
1077
+ "evidence": {
1078
+ "metric": {
1079
+ "name": "comments.todo-ratio",
1080
+ "value": 0.007,
1081
+ "sampleSize": 1651
1082
+ },
1083
+ "examples": []
1084
+ },
1085
+ "confidence": 0.99,
1086
+ "status": "auto"
1087
+ },
1088
+ {
1089
+ "id": "any.commits.conventional-ratio.low",
1090
+ "scope": "personal",
1091
+ "language": "any",
1092
+ "category": "commits",
1093
+ "kind": "voice",
1094
+ "text": "No conventional commit prefixes. Plain sentences.",
1095
+ "evidence": {
1096
+ "metric": {
1097
+ "name": "commits.conventional-ratio",
1098
+ "value": 0,
1099
+ "sampleSize": 3110
1100
+ },
1101
+ "examples": []
1102
+ },
1103
+ "confidence": 1,
1104
+ "status": "auto"
1105
+ },
1106
+ {
1107
+ "id": "any.commits.lowercase-ratio.low",
1108
+ "scope": "personal",
1109
+ "language": "any",
1110
+ "category": "commits",
1111
+ "kind": "voice",
1112
+ "text": "Commit subjects start with a capital letter.",
1113
+ "evidence": {
1114
+ "metric": {
1115
+ "name": "commits.lowercase-ratio",
1116
+ "value": 0.004,
1117
+ "sampleSize": 3110
1118
+ },
1119
+ "examples": []
1120
+ },
1121
+ "confidence": 0.99,
1122
+ "status": "auto"
1123
+ },
1124
+ {
1125
+ "id": "any.commits.imperative-ratio.high",
1126
+ "scope": "personal",
1127
+ "language": "any",
1128
+ "category": "commits",
1129
+ "kind": "voice",
1130
+ "text": "Write commit subjects in the imperative: Add, Fix, Remove.",
1131
+ "evidence": {
1132
+ "metric": {
1133
+ "name": "commits.imperative-ratio",
1134
+ "value": 0.987,
1135
+ "sampleSize": 3110
1136
+ },
1137
+ "examples": []
1138
+ },
1139
+ "confidence": 0.98,
1140
+ "status": "auto"
1141
+ },
1142
+ {
1143
+ "id": "any.commits.trailing-period-ratio.low",
1144
+ "scope": "personal",
1145
+ "language": "any",
1146
+ "category": "commits",
1147
+ "kind": "voice",
1148
+ "text": "No period at the end of a commit subject.",
1149
+ "evidence": {
1150
+ "metric": {
1151
+ "name": "commits.trailing-period-ratio",
1152
+ "value": 0.001,
1153
+ "sampleSize": 3110
1154
+ },
1155
+ "examples": []
1156
+ },
1157
+ "confidence": 1,
1158
+ "status": "auto"
1159
+ },
1160
+ {
1161
+ "id": "any.commits.body-ratio.low",
1162
+ "scope": "personal",
1163
+ "language": "any",
1164
+ "category": "commits",
1165
+ "kind": "voice",
1166
+ "text": "Subject line only. Commit bodies are rare.",
1167
+ "evidence": {
1168
+ "metric": {
1169
+ "name": "commits.body-ratio",
1170
+ "value": 0.183,
1171
+ "sampleSize": 3110
1172
+ },
1173
+ "examples": []
1174
+ },
1175
+ "confidence": 0.8,
1176
+ "status": "auto"
1177
+ },
1178
+ {
1179
+ "id": "any.commits.body-wrap-ratio.high",
1180
+ "scope": "personal",
1181
+ "language": "any",
1182
+ "category": "commits",
1183
+ "kind": "voice",
1184
+ "text": "Hard-wrap commit body lines at 72 characters.",
1185
+ "evidence": {
1186
+ "metric": {
1187
+ "name": "commits.body-wrap-ratio",
1188
+ "value": 0.982,
1189
+ "sampleSize": 1556
1190
+ },
1191
+ "examples": []
1192
+ },
1193
+ "confidence": 0.97,
1194
+ "status": "auto"
1195
+ },
1196
+ {
1197
+ "id": "any.commits.subject-p50.value",
1198
+ "scope": "personal",
1199
+ "language": "any",
1200
+ "category": "commits",
1201
+ "kind": "voice",
1202
+ "text": "Commit subjects are about 34 characters.",
1203
+ "evidence": {
1204
+ "metric": {
1205
+ "name": "commits.subject-p50",
1206
+ "value": 34,
1207
+ "sampleSize": 3110
1208
+ },
1209
+ "examples": []
1210
+ },
1211
+ "confidence": 0.8,
1212
+ "status": "auto"
1213
+ },
1214
+ {
1215
+ "id": "any.commits.we-now-body",
1216
+ "scope": "personal",
1217
+ "language": "any",
1218
+ "category": "commits",
1219
+ "kind": "voice",
1220
+ "text": "When a commit needs a body, write it as one or two first-person-plural sentences stating the new behaviour and the reason: \"We now rely on normal exception handling, which feels clearer\", \"Allows us to enforce that the database is the source of truth\".",
1221
+ "evidence": {
1222
+ "examples": [
1223
+ {
1224
+ "file": "commit:7897692",
1225
+ "line": 0,
1226
+ "snippet": ""
1227
+ },
1228
+ {
1229
+ "file": "commit:64e18b7",
1230
+ "line": 0,
1231
+ "snippet": ""
1232
+ },
1233
+ {
1234
+ "file": "commit:e9f505c",
1235
+ "line": 0,
1236
+ "snippet": ""
1237
+ }
1238
+ ]
1239
+ },
1240
+ "confidence": 0.8,
1241
+ "status": "auto"
1242
+ },
1243
+ {
1244
+ "id": "any.commits.dependency-bumps",
1245
+ "scope": "personal",
1246
+ "language": "any",
1247
+ "category": "commits",
1248
+ "kind": "voice",
1249
+ "text": "Version bumps use the subject \"Update to <Lib> <version>\" or \"Bump <Lib> to <version>\"; a multi-library bump is titled \"Dependency updates\" with a body that is a bare \"- Lib\" list, one library per line.",
1250
+ "evidence": {
1251
+ "examples": [
1252
+ {
1253
+ "file": "commit:753aacc",
1254
+ "line": 0,
1255
+ "snippet": ""
1256
+ },
1257
+ {
1258
+ "file": "commit:61df0a4",
1259
+ "line": 0,
1260
+ "snippet": ""
1261
+ },
1262
+ {
1263
+ "file": "commit:c4e81a1",
1264
+ "line": 0,
1265
+ "snippet": ""
1266
+ }
1267
+ ]
1268
+ },
1269
+ "confidence": 0.9,
1270
+ "status": "auto"
1271
+ },
1272
+ {
1273
+ "id": "any.commits.tidy-up-for-now",
1274
+ "scope": "personal",
1275
+ "language": "any",
1276
+ "category": "commits",
1277
+ "kind": "voice",
1278
+ "text": "Call cleanup commits \"Tidy up <thing>\".",
1279
+ "evidence": {
1280
+ "examples": [
1281
+ {
1282
+ "file": "commit:f06b28d",
1283
+ "line": 0,
1284
+ "snippet": ""
1285
+ },
1286
+ {
1287
+ "file": "commit:3b94a64",
1288
+ "line": 0,
1289
+ "snippet": ""
1290
+ },
1291
+ {
1292
+ "file": "commit:f8971eb",
1293
+ "line": 0,
1294
+ "snippet": ""
1295
+ }
1296
+ ]
1297
+ },
1298
+ "confidence": 0.7,
1299
+ "status": "auto"
1300
+ },
1301
+ {
1302
+ "id": "kotlin.comments.we-voice-with-reason",
1303
+ "scope": "personal",
1304
+ "language": "kotlin",
1305
+ "category": "comments",
1306
+ "kind": "voice",
1307
+ "text": "Write inline comments as first-person-plural narration of the next step, with the reason attached in the same sentence by \", so\" or \", as\": \"We're not logged in, so just update the database\", \"We minus 8.dp off the grid padding, as we use content padding on the items below\".",
1308
+ "evidence": {
1309
+ "examples": [
1310
+ {
1311
+ "file": "data/followedshows/src/commonMain/kotlin/app/tivi/data/followedshows/FollowedShowsRepository.kt",
1312
+ "line": 173,
1313
+ "snippet": ""
1314
+ },
1315
+ {
1316
+ "file": "ui/upnext/src/commonMain/kotlin/app/tivi/home/upnext/UpNext.kt",
1317
+ "line": 226,
1318
+ "snippet": ""
1319
+ },
1320
+ {
1321
+ "file": "data/test/src/commonTest/kotlin/app/tivi/data/repositories/SeasonsEpisodesRepositoryTest.kt",
1322
+ "line": 72,
1323
+ "snippet": ""
1324
+ }
1325
+ ]
1326
+ },
1327
+ "confidence": 0.7,
1328
+ "status": "auto"
1329
+ },
1330
+ {
1331
+ "id": "kotlin.comments.link-bug-url",
1332
+ "scope": "personal",
1333
+ "language": "kotlin",
1334
+ "category": "comments",
1335
+ "kind": "voice",
1336
+ "text": "When code works around an external bug or follows a specific doc, end the comment with the bare URL, optionally after \"See:\", as in \"See: https://issuetracker.google.com/issues/256100927\". Do not paraphrase the issue beyond one line.",
1337
+ "evidence": {
1338
+ "examples": [
1339
+ {
1340
+ "file": "ui/recommended/src/commonMain/kotlin/app/tivi/home/recommended/Recommended.kt",
1341
+ "line": 30,
1342
+ "snippet": ""
1343
+ },
1344
+ {
1345
+ "file": "ui/account/src/commonMain/kotlin/app/tivi/account/AccountUi.kt",
1346
+ "line": 70,
1347
+ "snippet": ""
1348
+ },
1349
+ {
1350
+ "file": "gradle/build-logic/convention/src/main/kotlin/app/tivi/gradle/KotlinMultiplatformConventionPlugin.kt",
1351
+ "line": 63,
1352
+ "snippet": ""
1353
+ }
1354
+ ]
1355
+ },
1356
+ "confidence": 0.8,
1357
+ "status": "auto"
1358
+ },
1359
+ {
1360
+ "id": "kotlin.comments.section-labels",
1361
+ "scope": "personal",
1362
+ "language": "kotlin",
1363
+ "category": "comments",
1364
+ "kind": "voice",
1365
+ "text": "To split a long class or test into regions, use a terse noun-phrase comment as a label, such as \"// Trakt specific stuff\" or \"// Episode details\", not a doc block or banner.",
1366
+ "evidence": {
1367
+ "examples": [
1368
+ {
1369
+ "file": "data/episodes/src/commonMain/kotlin/app/tivi/data/episodes/SeasonsEpisodesRepository.kt",
1370
+ "line": 432,
1371
+ "snippet": ""
1372
+ },
1373
+ {
1374
+ "file": "data/episodes/src/commonMain/kotlin/app/tivi/data/episodes/SeasonsEpisodesRepository.kt",
1375
+ "line": 437,
1376
+ "snippet": ""
1377
+ },
1378
+ {
1379
+ "file": "android-app/common-test/src/main/kotlin/app/tivi/app/test/AppScenarios.kt",
1380
+ "line": 40,
1381
+ "snippet": ""
1382
+ }
1383
+ ]
1384
+ },
1385
+ "confidence": 0.6,
1386
+ "status": "auto"
1387
+ },
1388
+ {
1389
+ "id": "kotlin.structure.block-body-return",
1390
+ "scope": "personal",
1391
+ "language": "kotlin",
1392
+ "category": "structure",
1393
+ "kind": "idiom",
1394
+ "text": "Write single-call functions as a block body with an explicit `return`, even when they are one line (`return db.showQueries.getShowWithId(id, ::TiviShow)...`). Reserve `= ...` expression bodies for functions whose whole body is a `when` or a Modifier/layout expression.",
1395
+ "evidence": {
1396
+ "examples": [
1397
+ {
1398
+ "file": "data/db-sqldelight/src/commonMain/kotlin/app/tivi/data/daos/SqlDelightTiviShowDao.kt",
1399
+ "line": 37,
1400
+ "snippet": ""
1401
+ },
1402
+ {
1403
+ "file": "data/legacy/src/commonMain/kotlin/app/tivi/data/lastrequests/EntityLastRequestStore.kt",
1404
+ "line": 17,
1405
+ "snippet": ""
1406
+ },
1407
+ {
1408
+ "file": "ui/root/src/commonMain/kotlin/app/tivi/home/Home.kt",
1409
+ "line": 250,
1410
+ "snippet": ""
1411
+ }
1412
+ ]
1413
+ },
1414
+ "confidence": 0.7,
1415
+ "status": "auto"
1416
+ },
1417
+ {
1418
+ "id": "kotlin.framework.compose-param-order",
1419
+ "scope": "personal",
1420
+ "language": "kotlin",
1421
+ "category": "framework",
1422
+ "kind": "idiom",
1423
+ "text": "Order composable parameters as: required data and callbacks, then `modifier: Modifier = Modifier`, then optional styling defaults, with the `@Composable` slot lambda (`content`, `icon`) last. Pass every argument to a composable by name with a trailing comma, and break Modifier chains one call per line.",
1424
+ "evidence": {
1425
+ "examples": [
1426
+ {
1427
+ "file": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/LoadingButton.kt",
1428
+ "line": 24,
1429
+ "snippet": ""
1430
+ },
1431
+ {
1432
+ "file": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/IconButtonScrim.kt",
1433
+ "line": 19,
1434
+ "snippet": ""
1435
+ },
1436
+ {
1437
+ "file": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/Preference.kt",
1438
+ "line": 53,
1439
+ "snippet": ""
1440
+ }
1441
+ ]
1442
+ },
1443
+ "confidence": 0.9,
1444
+ "status": "auto"
1445
+ },
1446
+ {
1447
+ "id": "kotlin.naming.lookup-with-for",
1448
+ "scope": "personal",
1449
+ "language": "kotlin",
1450
+ "category": "naming",
1451
+ "kind": "voice",
1452
+ "text": "Name query functions after what they return followed by the lookup key joined with `With` or `For`, no `get` prefix: `episodeWithId`, `entryCountWithShowId`, `episodeTraktIdForId`, `entriesWithDeletePendingActions`.",
1453
+ "evidence": {
1454
+ "examples": [
1455
+ {
1456
+ "file": "data/db-sqldelight/src/commonMain/kotlin/app/tivi/data/daos/SqlDelightFollowedShowsDao.kt",
1457
+ "line": 63,
1458
+ "snippet": ""
1459
+ },
1460
+ {
1461
+ "file": "data/episodes/src/commonMain/kotlin/app/tivi/data/episodes/SeasonsEpisodesRepository.kt",
1462
+ "line": 76,
1463
+ "snippet": ""
1464
+ },
1465
+ {
1466
+ "file": "data/legacy/src/commonMain/kotlin/app/tivi/data/mappers/EpisodeIdToTraktIdMapper.kt",
1467
+ "line": 13,
1468
+ "snippet": ""
1469
+ }
1470
+ ]
1471
+ },
1472
+ "confidence": 0.7,
1473
+ "status": "auto"
1474
+ },
1475
+ {
1476
+ "id": "kotlin.naming.boolean-verb-params",
1477
+ "scope": "personal",
1478
+ "language": "kotlin",
1479
+ "category": "naming",
1480
+ "kind": "voice",
1481
+ "text": "Name boolean UI parameters as imperative verb phrases describing the effect, not is/has: `showProgressIndicator`, `showScrim`, `invertThemeOnScrim`.",
1482
+ "evidence": {
1483
+ "examples": [
1484
+ {
1485
+ "file": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/LoadingButton.kt",
1486
+ "line": 24,
1487
+ "snippet": ""
1488
+ },
1489
+ {
1490
+ "file": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/IconButtonScrim.kt",
1491
+ "line": 19,
1492
+ "snippet": ""
1493
+ },
1494
+ {
1495
+ "file": "common/ui/compose/src/commonMain/kotlin/app/tivi/common/compose/ui/IconButtonScrim.kt",
1496
+ "line": 47,
1497
+ "snippet": ""
1498
+ }
1499
+ ]
1500
+ },
1501
+ "confidence": 0.7,
1502
+ "status": "auto"
1503
+ }
1504
+ ]
1505
+ }