thailint 0.16.0__py3-none-any.whl → 0.17.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- src/cli/linters/__init__.py +8 -1
- src/cli/linters/rust.py +177 -0
- src/core/base.py +30 -0
- src/core/constants.py +1 -0
- src/core/linter_utils.py +42 -1
- src/linters/blocking_async/__init__.py +31 -0
- src/linters/blocking_async/config.py +67 -0
- src/linters/blocking_async/linter.py +183 -0
- src/linters/blocking_async/rust_analyzer.py +419 -0
- src/linters/blocking_async/violation_builder.py +97 -0
- src/linters/clone_abuse/__init__.py +31 -0
- src/linters/clone_abuse/config.py +65 -0
- src/linters/clone_abuse/linter.py +183 -0
- src/linters/clone_abuse/rust_analyzer.py +356 -0
- src/linters/clone_abuse/violation_builder.py +94 -0
- src/linters/magic_numbers/linter.py +92 -0
- src/linters/magic_numbers/rust_analyzer.py +148 -0
- src/linters/magic_numbers/violation_builder.py +31 -0
- src/linters/nesting/linter.py +50 -0
- src/linters/nesting/rust_analyzer.py +118 -0
- src/linters/nesting/violation_builder.py +32 -0
- src/linters/srp/class_analyzer.py +49 -0
- src/linters/srp/linter.py +22 -0
- src/linters/srp/rust_analyzer.py +206 -0
- src/linters/unwrap_abuse/__init__.py +30 -0
- src/linters/unwrap_abuse/config.py +59 -0
- src/linters/unwrap_abuse/linter.py +166 -0
- src/linters/unwrap_abuse/rust_analyzer.py +118 -0
- src/linters/unwrap_abuse/violation_builder.py +89 -0
- src/templates/thailint_config_template.yaml +88 -0
- {thailint-0.16.0.dist-info → thailint-0.17.0.dist-info}/METADATA +5 -2
- {thailint-0.16.0.dist-info → thailint-0.17.0.dist-info}/RECORD +35 -16
- {thailint-0.16.0.dist-info → thailint-0.17.0.dist-info}/WHEEL +0 -0
- {thailint-0.16.0.dist-info → thailint-0.17.0.dist-info}/entry_points.txt +0 -0
- {thailint-0.16.0.dist-info → thailint-0.17.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -328,6 +328,94 @@ performance:
|
|
|
328
328
|
# - "tests/**"
|
|
329
329
|
# - "scripts/**"
|
|
330
330
|
|
|
331
|
+
# ============================================================================
|
|
332
|
+
# UNWRAP ABUSE LINTER (Rust)
|
|
333
|
+
# ============================================================================
|
|
334
|
+
# Detects .unwrap() and .expect() calls in Rust code that may panic at runtime
|
|
335
|
+
# Suggests safer alternatives like ?, unwrap_or(), unwrap_or_default()
|
|
336
|
+
#
|
|
337
|
+
unwrap-abuse:
|
|
338
|
+
enabled: true
|
|
339
|
+
|
|
340
|
+
# Allow .unwrap()/.expect() in #[test] functions and #[cfg(test)] modules
|
|
341
|
+
# Default: true
|
|
342
|
+
allow_in_tests: true
|
|
343
|
+
|
|
344
|
+
# Allow .expect() calls (they provide error context unlike bare .unwrap())
|
|
345
|
+
# Default: false
|
|
346
|
+
allow_expect: false
|
|
347
|
+
|
|
348
|
+
# -------------------------------------------------------------------------
|
|
349
|
+
# OPTIONAL: File patterns to ignore
|
|
350
|
+
# -------------------------------------------------------------------------
|
|
351
|
+
# ignore:
|
|
352
|
+
# - "examples/"
|
|
353
|
+
# - "benches/"
|
|
354
|
+
|
|
355
|
+
# ============================================================================
|
|
356
|
+
# CLONE ABUSE LINTER (Rust)
|
|
357
|
+
# ============================================================================
|
|
358
|
+
# Detects .clone() abuse patterns in Rust code: clone in loops, chained clones,
|
|
359
|
+
# and unnecessary clones where the original is not used after cloning
|
|
360
|
+
#
|
|
361
|
+
clone-abuse:
|
|
362
|
+
enabled: true
|
|
363
|
+
|
|
364
|
+
# Allow .clone() in #[test] functions and #[cfg(test)] modules
|
|
365
|
+
# Default: true
|
|
366
|
+
allow_in_tests: true
|
|
367
|
+
|
|
368
|
+
# Toggle detection of .clone() inside loop bodies (for, while, loop)
|
|
369
|
+
# Default: true
|
|
370
|
+
detect_clone_in_loop: true
|
|
371
|
+
|
|
372
|
+
# Toggle detection of chained .clone().clone() calls
|
|
373
|
+
# Default: true
|
|
374
|
+
detect_clone_chain: true
|
|
375
|
+
|
|
376
|
+
# Toggle detection of unnecessary clones (clone before move)
|
|
377
|
+
# Default: true
|
|
378
|
+
detect_unnecessary_clone: true
|
|
379
|
+
|
|
380
|
+
# -------------------------------------------------------------------------
|
|
381
|
+
# OPTIONAL: File patterns to ignore
|
|
382
|
+
# -------------------------------------------------------------------------
|
|
383
|
+
# ignore:
|
|
384
|
+
# - "examples/"
|
|
385
|
+
# - "benches/"
|
|
386
|
+
|
|
387
|
+
# ============================================================================
|
|
388
|
+
# BLOCKING ASYNC LINTER (Rust)
|
|
389
|
+
# ============================================================================
|
|
390
|
+
# Detects blocking operations inside async functions in Rust code:
|
|
391
|
+
# std::fs I/O, std::thread::sleep, and blocking std::net calls
|
|
392
|
+
#
|
|
393
|
+
blocking-async:
|
|
394
|
+
enabled: true
|
|
395
|
+
|
|
396
|
+
# Allow blocking calls in #[test] functions and #[cfg(test)] modules
|
|
397
|
+
# Default: true
|
|
398
|
+
allow_in_tests: true
|
|
399
|
+
|
|
400
|
+
# Toggle detection of std::fs operations in async functions
|
|
401
|
+
# Default: true
|
|
402
|
+
detect_fs_in_async: true
|
|
403
|
+
|
|
404
|
+
# Toggle detection of std::thread::sleep in async functions
|
|
405
|
+
# Default: true
|
|
406
|
+
detect_sleep_in_async: true
|
|
407
|
+
|
|
408
|
+
# Toggle detection of std::net blocking calls in async functions
|
|
409
|
+
# Default: true
|
|
410
|
+
detect_net_in_async: true
|
|
411
|
+
|
|
412
|
+
# -------------------------------------------------------------------------
|
|
413
|
+
# OPTIONAL: File patterns to ignore
|
|
414
|
+
# -------------------------------------------------------------------------
|
|
415
|
+
# ignore:
|
|
416
|
+
# - "examples/"
|
|
417
|
+
# - "benches/"
|
|
418
|
+
|
|
331
419
|
# ============================================================================
|
|
332
420
|
# GLOBAL SETTINGS
|
|
333
421
|
# ============================================================================
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: thailint
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.0
|
|
4
4
|
Summary: The AI Linter - Enterprise-grade linting and governance for AI-generated code across multiple languages
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -44,7 +44,7 @@ Description-Content-Type: text/markdown
|
|
|
44
44
|
|
|
45
45
|
**The AI Linter** - Catch the mistakes AI coding assistants keep making.
|
|
46
46
|
|
|
47
|
-
thailint detects anti-patterns that AI tools frequently introduce: duplicate code, excessive nesting, magic numbers, SRP violations, and more. It works across Python, TypeScript, and
|
|
47
|
+
thailint detects anti-patterns that AI tools frequently introduce: duplicate code, excessive nesting, magic numbers, SRP violations, and more. It works across Python, TypeScript, JavaScript, and Rust with unified rules - filling gaps that existing linters miss.
|
|
48
48
|
|
|
49
49
|
## Installation
|
|
50
50
|
|
|
@@ -87,6 +87,9 @@ That's it. See violations, fix them, ship better code.
|
|
|
87
87
|
| **Improper Logging** | Print statements and conditional verbose patterns | `thailint improper-logging src/` | [Guide](https://thai-lint.readthedocs.io/en/latest/improper-logging-linter/) |
|
|
88
88
|
| **Stringly Typed** | Strings that should be enums | `thailint stringly-typed src/` | [Guide](https://thai-lint.readthedocs.io/en/latest/stringly-typed-linter/) |
|
|
89
89
|
| **LBYL** | Look Before You Leap anti-patterns | `thailint lbyl src/` | [Guide](https://thai-lint.readthedocs.io/en/latest/lbyl-linter/) |
|
|
90
|
+
| **Unwrap Abuse** | `.unwrap()`/`.expect()` that panic at runtime (Rust) | `thailint unwrap-abuse src/` | [Guide](https://thai-lint.readthedocs.io/en/latest/unwrap-abuse-linter/) |
|
|
91
|
+
| **Clone Abuse** | `.clone()` abuse: loops, chains, unnecessary (Rust) | `thailint clone-abuse src/` | [Guide](https://thai-lint.readthedocs.io/en/latest/clone-abuse-linter/) |
|
|
92
|
+
| **Blocking Async** | Blocking std:: calls in async functions (Rust) | `thailint blocking-async src/` | [Guide](https://thai-lint.readthedocs.io/en/latest/blocking-async-linter/) |
|
|
90
93
|
|
|
91
94
|
## Configuration
|
|
92
95
|
|
|
@@ -9,11 +9,12 @@ src/cli/__init__.py,sha256=nMxKv4D0t09LwUm4Z5w-b7vIuyn24SFzv78BKzE3AOQ,1272
|
|
|
9
9
|
src/cli/__main__.py,sha256=xIKI57yqB1NOw9eXnGXfU8rC2UwcAJYjDxlZbt9eP0w,671
|
|
10
10
|
src/cli/config.py,sha256=uAcc1NMe4uvC5619wyGIrSJtOWeOWT3No8_qBvowqXk,14293
|
|
11
11
|
src/cli/config_merge.py,sha256=A1eCthiLwjj0SEhOcxa6t2hYwWMapGJpL9sCmYvUFw4,8464
|
|
12
|
-
src/cli/linters/__init__.py,sha256=
|
|
12
|
+
src/cli/linters/__init__.py,sha256=7Kk209UZlbFBBhtr89NH827P-mP4F6KnHsT1-2tmbCo,2714
|
|
13
13
|
src/cli/linters/code_patterns.py,sha256=0ajlHI9kesHryBjF_YBHltMi2gjkPPacMxYoJ1h0Qck,11463
|
|
14
14
|
src/cli/linters/code_smells.py,sha256=9J_CPdCFDv6fHQwfLP01PgBnF1c8DwioeIICLA-N7Zo,11608
|
|
15
15
|
src/cli/linters/documentation.py,sha256=bvrW4OfgeKOYlzzHv3Zl-XjGjItviX_zLlP94btlUkI,3211
|
|
16
16
|
src/cli/linters/performance.py,sha256=TZoe8hs-5j68tUiiKRwnhdGEKm432QlmwAG4eAqgcVo,9747
|
|
17
|
+
src/cli/linters/rust.py,sha256=ePfPb5sR58sroBn70i17-NtugifWdvyWTEQpDumbo5E,7447
|
|
17
18
|
src/cli/linters/shared.py,sha256=dC8SS8UxJR3WvQr1SkWJAf-AZalN-u-eDrM-FXmKqtw,10043
|
|
18
19
|
src/cli/linters/structure.py,sha256=4SxM2ekq2OPDQfEXxKuQAEn7pqt6cGrLgHLqZ4S57eQ,10636
|
|
19
20
|
src/cli/linters/structure_quality.py,sha256=5cCPz9Jmtvzr3hZZjac3aVFmUIH7HLlkshv_rvs12xI,10627
|
|
@@ -22,11 +23,11 @@ src/cli/utils.py,sha256=5IYu9KltZEg76wgbW-qfKwcXzCK3qsEuvgnr4i_UkqY,12437
|
|
|
22
23
|
src/cli_main.py,sha256=C0Ey7YNlG3ipqb3KsJZ8rL8PJ4ueVp_45IUirGidvHI,1618
|
|
23
24
|
src/config.py,sha256=O3ixzsYekGjlggmIsawCU1bctOa0MyG2IczHpg3mGyw,12753
|
|
24
25
|
src/core/__init__.py,sha256=1iGdoUB15Hi7xT7jwxUybP3e5IbQ6yiM34IbFNJRCaE,703
|
|
25
|
-
src/core/base.py,sha256=
|
|
26
|
+
src/core/base.py,sha256=H_eomk-V4ZK4N2H0x8nx75C7tdsZIsPL8TpSl6EW4oo,9019
|
|
26
27
|
src/core/cli_utils.py,sha256=o7lWPSlic96lRyfcsmBf8S1ej25M1-wlclx8_Eup20g,7446
|
|
27
28
|
src/core/config_parser.py,sha256=CRHV2-csxag6yQzx_4IYYz57QSUYjPkeSb0XvOyshRI,4272
|
|
28
|
-
src/core/constants.py,sha256=
|
|
29
|
-
src/core/linter_utils.py,sha256=
|
|
29
|
+
src/core/constants.py,sha256=2RGlojy0z0_SLhU9bbLtXpl6DM6JMtcW3wNfoMCyXj4,1602
|
|
30
|
+
src/core/linter_utils.py,sha256=HJ4SBCCqx7WgdLaFt35qj-nGSG_vTWV5kVyom4Bv9nU,9714
|
|
30
31
|
src/core/python_lint_rule.py,sha256=OpdIDLPV1MDtmjy6GPrrOA3_rRV2_x14keHAQQtI_pc,3516
|
|
31
32
|
src/core/registry.py,sha256=yRA8mQLiZwjmgxl1wSTgdj1cuo_QXuRdrXt3NpCBUgE,3285
|
|
32
33
|
src/core/rule_aliases.py,sha256=EEPrI2syrK18Zg1oHZBMNiU1Z-zIdORJjXTAN738h1A,2570
|
|
@@ -43,6 +44,16 @@ src/linter_config/loader.py,sha256=K6mKRkP2jgwar-pwBoJGWgwynLVjqdez-l3Nd6bUCMk,3
|
|
|
43
44
|
src/linter_config/pattern_utils.py,sha256=BjV95SySST3HqZBwF1Og8yoHqFxuqQ16VPCacE21ks0,2056
|
|
44
45
|
src/linter_config/rule_matcher.py,sha256=5q-cO9S2JbIB3Hr1BU4yAPmbS89eE7y7leiMfaMCKVk,4555
|
|
45
46
|
src/linters/__init__.py,sha256=-nnNsL8E5-2p9qlLKp_TaShHAjPH-NacOEU1sXmAR9k,77
|
|
47
|
+
src/linters/blocking_async/__init__.py,sha256=nO9brw2svlDkKez3LjfesweZ_ytL01ea-W6b1P3uWY0,1303
|
|
48
|
+
src/linters/blocking_async/config.py,sha256=0b7XIQlVMYPOmFG3alWQLo5qyoUVlmiiTB1bYNGLgEI,2474
|
|
49
|
+
src/linters/blocking_async/linter.py,sha256=17vJXy0zPq5XLtLb1dSv4eboFVDH75b7NwDvpgtGmbw,6117
|
|
50
|
+
src/linters/blocking_async/rust_analyzer.py,sha256=oDm6vcTpU2mT4MaaBpQn6wD8u8Q01ryRw2OL1VAl_v4,12749
|
|
51
|
+
src/linters/blocking_async/violation_builder.py,sha256=DA9mIyWBLor_vMBCCc6xrGu8RPkJrZrQyZPT-UdhiC8,3188
|
|
52
|
+
src/linters/clone_abuse/__init__.py,sha256=lkNBqe_fW7cf5_n-iuH_p-covCtWD_MfcyW-r7dbzQo,1214
|
|
53
|
+
src/linters/clone_abuse/config.py,sha256=_QkaVtyXBPVkY2JV1nu3x3gfAKDzw4IRv1tezdYsrF4,2382
|
|
54
|
+
src/linters/clone_abuse/linter.py,sha256=GoCYc_UhwSl7mR5z5JAo94229SkD9M7CD9tO5WZvbMU,5901
|
|
55
|
+
src/linters/clone_abuse/rust_analyzer.py,sha256=L9TCRvISf2_ccCJc7pcvRg_eETPWhlU7cpNp2Z2XSiE,11434
|
|
56
|
+
src/linters/clone_abuse/violation_builder.py,sha256=DV5KI1crvMqhPpMa-kT0dNbD25mp2L169atTFTddDfk,2980
|
|
46
57
|
src/linters/collection_pipeline/__init__.py,sha256=BcnbY3wgJB1XLfZ9J9qfUJQ1_yCo_THjGDTppxJEMZY,3231
|
|
47
58
|
src/linters/collection_pipeline/any_all_analyzer.py,sha256=u8NGIYrJTuP3U6je5rkeEUV2Bh1yePC12vl-czAU5GU,7554
|
|
48
59
|
src/linters/collection_pipeline/ast_utils.py,sha256=JZsJeel9BzVIOfnENgVcZR8wMNoQ-RJoxuBx-J7w9Uk,1227
|
|
@@ -145,11 +156,12 @@ src/linters/magic_numbers/__init__.py,sha256=17dkCUf0uiYLvpOZF01VDojj92NzxXZMtRh
|
|
|
145
156
|
src/linters/magic_numbers/config.py,sha256=l18AO6XY6zkrX6_aumn3CZLpCsw185sfy5B_v2nY-OA,4233
|
|
146
157
|
src/linters/magic_numbers/context_analyzer.py,sha256=EgDyxxjvEqyD3FX0Fnxj5RcOPyvyVs_rYFxj2HOxYdg,7309
|
|
147
158
|
src/linters/magic_numbers/definition_detector.py,sha256=brENrT17ofYzZUpFjAq05DeG4DS2pKdWAWm4DyGTrDY,6156
|
|
148
|
-
src/linters/magic_numbers/linter.py,sha256=
|
|
159
|
+
src/linters/magic_numbers/linter.py,sha256=ML-DOeBShEXwt0VUVHr6uwS8ssJ2FhR7BGkJQ8q8Hu8,19984
|
|
149
160
|
src/linters/magic_numbers/python_analyzer.py,sha256=Ba-EODvAkUIOhqMFv86MxMlXqF20ngvgubiWN_U_IUk,2446
|
|
161
|
+
src/linters/magic_numbers/rust_analyzer.py,sha256=WTQ6NICZRoC48pITaS2OjKIt41BWSTahh9OFb0_G-SM,4934
|
|
150
162
|
src/linters/magic_numbers/typescript_analyzer.py,sha256=-2YPmNWXHJN8R2siV3pJk_3Baj-A9nnvQRpU35YBKgs,7519
|
|
151
163
|
src/linters/magic_numbers/typescript_ignore_checker.py,sha256=9JWqtXd8KU_GCc_66KSZT2X7uQhNGpxE2ikOyjcLyao,2847
|
|
152
|
-
src/linters/magic_numbers/violation_builder.py,sha256=
|
|
164
|
+
src/linters/magic_numbers/violation_builder.py,sha256=ao366b7KiVthWTBzdQlBiCk-5hXjXVqgrsG3KTE-xhs,4188
|
|
153
165
|
src/linters/method_property/__init__.py,sha256=t0C6zD5WLm-McgmvVajQJg4HQfOi7_4YzNLhKNA484w,1415
|
|
154
166
|
src/linters/method_property/config.py,sha256=_TbUc0piC1FeW3qsw4hYryzWPUOq_laia_QNLe1Y0aw,5529
|
|
155
167
|
src/linters/method_property/linter.py,sha256=9pgUEIK7ASZVwtsRVOg3U0k-GR0lHSLpUv_1TnIcZPA,12700
|
|
@@ -157,11 +169,12 @@ src/linters/method_property/python_analyzer.py,sha256=uyNUJHxACw01Z1Uz6lRUPe753M
|
|
|
157
169
|
src/linters/method_property/violation_builder.py,sha256=A7SwZWlVG_7W5pJiHOvIroI2q4UuOQNryOYvmX3APLs,4251
|
|
158
170
|
src/linters/nesting/__init__.py,sha256=tszmyCEQMpEwB5H84WcAUfRYDQl7jpsn04es5DtAHsM,3200
|
|
159
171
|
src/linters/nesting/config.py,sha256=PfPA2wJn3i6HHXeM0qu6Qx-v1KJdRwlRkFOdpf7NhS8,2405
|
|
160
|
-
src/linters/nesting/linter.py,sha256=
|
|
172
|
+
src/linters/nesting/linter.py,sha256=ybNcwIYFGHnvXlMUrgSs0NVtno_L0F7R1OLkOpDc0rc,8491
|
|
161
173
|
src/linters/nesting/python_analyzer.py,sha256=ZaZuFErwpyEG3G0O5LqYwWn7Kmae9mqB8GCSRHSkjmU,5344
|
|
174
|
+
src/linters/nesting/rust_analyzer.py,sha256=fDGNlNioTF02Q5M2DaCzF-78ztKjUjPCjTR07uCu0kQ,3917
|
|
162
175
|
src/linters/nesting/typescript_analyzer.py,sha256=70TsjP3EJWiHJ1ncMaveFE0e9_HdukWZr9LM0_MDXr8,3639
|
|
163
176
|
src/linters/nesting/typescript_function_extractor.py,sha256=dDB1otJnFMCo-Pj4mTr4gekKe7V4ArOAtX6gV0dBDc4,4494
|
|
164
|
-
src/linters/nesting/violation_builder.py,sha256=
|
|
177
|
+
src/linters/nesting/violation_builder.py,sha256=mKEv52D9an5-mw1-sNlkECn0MaEdLNyIYX-6sGI0u5Y,5912
|
|
165
178
|
src/linters/performance/__init__.py,sha256=UXJwfTk2ZCBqdy0Rtqcn2rMffWXXauq14oNMPtJDO3o,3118
|
|
166
179
|
src/linters/performance/config.py,sha256=TmOdKtbrYx8POzFx_7fkgWfHcri2oBIXsm4V9FqkAek,1458
|
|
167
180
|
src/linters/performance/constants.py,sha256=WBiSCOMGNd01o5D0M95Lyx_liZAd3zBkIPu7ZXzcW3M,1127
|
|
@@ -180,12 +193,13 @@ src/linters/print_statements/python_analyzer.py,sha256=48IDRQEv861B90qCl5w8ASxcX
|
|
|
180
193
|
src/linters/print_statements/typescript_analyzer.py,sha256=EFE3bjRENvCPEYmNNxZ4jiq1VCA-rEUAJ_VFWJApLqY,4935
|
|
181
194
|
src/linters/print_statements/violation_builder.py,sha256=Vs5m3AnWjrQqQHf6JJDaPP5B1V3YNl5pepG_oiTJnx4,3333
|
|
182
195
|
src/linters/srp/__init__.py,sha256=GbhaSB2_AYY-mWgG_ThbyAcDXoVZuB5eLzguoShf38w,3367
|
|
183
|
-
src/linters/srp/class_analyzer.py,sha256=
|
|
196
|
+
src/linters/srp/class_analyzer.py,sha256=7qYxjGT3zDyVNmW9ide-w6iVBLeIyFVhQK4rLQNth_8,5820
|
|
184
197
|
src/linters/srp/config.py,sha256=hTxrM21HIOmg0sM6eJ_h3hRnuxqRZEgs13Ie97-PDr4,3397
|
|
185
198
|
src/linters/srp/heuristics.py,sha256=hMWRdTJoIY-T0s7ruB6ju27RPBJCATMiUvLZXzQvTsY,4229
|
|
186
|
-
src/linters/srp/linter.py,sha256=
|
|
199
|
+
src/linters/srp/linter.py,sha256=t0QuSrmQDxoKPDLPFk9ezbk5oY2Z-5TfVNT5VeipUp0,8512
|
|
187
200
|
src/linters/srp/metrics_evaluator.py,sha256=Prk_dPacas_dX7spAzV0g734srmzT5u0t5d4mTG9g2o,1606
|
|
188
201
|
src/linters/srp/python_analyzer.py,sha256=PH27l38BFPNmj22Z10QDBioLDCZ4xpJFzBfTh_4XMZ4,3585
|
|
202
|
+
src/linters/srp/rust_analyzer.py,sha256=QsA9DzjxYJd1azeclyIgyCCtKq-0Bb8RZxc9VPQh0OE,7049
|
|
189
203
|
src/linters/srp/typescript_analyzer.py,sha256=Wi0P_G1v5AnZYtMN3sNm1iHva84-8Kep2LZ5RmAS4c4,2885
|
|
190
204
|
src/linters/srp/typescript_metrics_calculator.py,sha256=cDaHlnzMgFSTd2Sn5-tldR2HS6P8GMv4Qptep6PJozw,4093
|
|
191
205
|
src/linters/srp/violation_builder.py,sha256=jaIjVtRYWUTs1SVJVwd0FxCojo0DxhPzfhyfMKmAroM,3881
|
|
@@ -217,14 +231,19 @@ src/linters/stringly_typed/typescript/analyzer.py,sha256=iNEk6wQJJfmJoRTXx29GEeq
|
|
|
217
231
|
src/linters/stringly_typed/typescript/call_tracker.py,sha256=NPRpjqTe-Owi3_qJk_baojAazqaL6EsH4E2SIOsUAjU,11299
|
|
218
232
|
src/linters/stringly_typed/typescript/comparison_tracker.py,sha256=TiEldIqppu6i2XYd9a040HK0U4cy7IFf6Qjjlb93wAA,12573
|
|
219
233
|
src/linters/stringly_typed/violation_generator.py,sha256=g1dTc6EvjvTYmW3zdfTydmLaTCnqWDq4Q5UIntYxF1A,15336
|
|
234
|
+
src/linters/unwrap_abuse/__init__.py,sha256=ykT2V55ztzU7KwAle-ETBjJMQsTedGszffCpW6SC-C4,1154
|
|
235
|
+
src/linters/unwrap_abuse/config.py,sha256=rpf7j-YXR7jL0rb8kM-iryW2zyeZnJB73a5Siak-B4g,2210
|
|
236
|
+
src/linters/unwrap_abuse/linter.py,sha256=8Wgx4ul84_ywrCnlKR2T6y6_FlY0wNzaukziffG39II,5625
|
|
237
|
+
src/linters/unwrap_abuse/rust_analyzer.py,sha256=RRL7Sed07aO9hUGFZOraH4miruxalTEWwNJFo3iQDbc,4131
|
|
238
|
+
src/linters/unwrap_abuse/violation_builder.py,sha256=5IgvsK642AluT89Cd2QS43fV6ZsH70lZRxohoEjHoUQ,2623
|
|
220
239
|
src/orchestrator/__init__.py,sha256=XXLDJq2oaB-TpP2Y97GRnde9EkITGuFCmuLrDfxI9nY,245
|
|
221
240
|
src/orchestrator/core.py,sha256=rt3h-YFgF1aAFeKvTa0PP7k_8zfwpeGIqrIxKuyckxY,17683
|
|
222
241
|
src/orchestrator/language_detector.py,sha256=ALt2BEZKXQM2dWr1ChF9lZVj83YF4Bl9xwrB9ezfmMc,2799
|
|
223
|
-
src/templates/thailint_config_template.yaml,sha256=
|
|
242
|
+
src/templates/thailint_config_template.yaml,sha256=THQCYMMyjOERkGReb3G_KXtLNULW3eaI88BelHgONbo,14975
|
|
224
243
|
src/utils/__init__.py,sha256=NiBtKeQ09Y3kuUzeN4O1JNfUIYPQDS2AP1l5ODq-Dec,125
|
|
225
244
|
src/utils/project_root.py,sha256=aaxUM-LQ1okrPClmZWPFd_D09W3V1ArgJiidEEp_eU8,6262
|
|
226
|
-
thailint-0.
|
|
227
|
-
thailint-0.
|
|
228
|
-
thailint-0.
|
|
229
|
-
thailint-0.
|
|
230
|
-
thailint-0.
|
|
245
|
+
thailint-0.17.0.dist-info/METADATA,sha256=lDQImp9sIhDaLVPjdFgedYSVWlAaLdBg0ePMVK6ow50,7929
|
|
246
|
+
thailint-0.17.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
247
|
+
thailint-0.17.0.dist-info/entry_points.txt,sha256=DNoGUlxpaMFqxQDgHp1yeGqohOjdFR-kH19uHYi3OUY,72
|
|
248
|
+
thailint-0.17.0.dist-info/licenses/LICENSE,sha256=kxh1J0Sb62XvhNJ6MZsVNe8PqNVJ7LHRn_EWa-T3djw,1070
|
|
249
|
+
thailint-0.17.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|