@aiready/consistency 0.6.8 → 0.6.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +9 -9
- package/.turbo/turbo-test.log +276 -46
- package/LANGUAGE-SUPPORT-FIX.md +154 -0
- package/README.md +17 -0
- package/dist/chunk-7PHHJOGC.mjs +1374 -0
- package/dist/cli.js +22 -16
- package/dist/cli.mjs +19 -15
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -2
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
- package/src/__tests__/language-filter.test.ts +52 -0
- package/src/analyzer.ts +2 -0
- package/src/analyzers/naming-ast.ts +7 -1
- package/src/cli.ts +20 -16
- package/src/utils/ast-parser.ts +3 -2
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @aiready/consistency@0.6.
|
|
3
|
+
> @aiready/consistency@0.6.12 build /Users/pengcao/projects/aiready/packages/consistency
|
|
4
4
|
> tsup src/index.ts src/cli.ts --format cjs,esm --dts
|
|
5
5
|
|
|
6
6
|
[34mCLI[39m Building entry: src/cli.ts, src/index.ts
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
[34mCJS[39m Build start
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[32mCJS[39m [1mdist/index.js [22m[32m47.29 KB[39m
|
|
13
|
-
[32mCJS[39m [1mdist/cli.js [22m[32m46.
|
|
14
|
-
[32mCJS[39m ⚡️ Build success in
|
|
15
|
-
[32mESM[39m [1mdist/cli.mjs [22m[32m8.
|
|
13
|
+
[32mCJS[39m [1mdist/cli.js [22m[32m46.80 KB[39m
|
|
14
|
+
[32mCJS[39m ⚡️ Build success in 215ms
|
|
15
|
+
[32mESM[39m [1mdist/cli.mjs [22m[32m8.76 KB[39m
|
|
16
|
+
[32mESM[39m [1mdist/chunk-7PHHJOGC.mjs [22m[32m36.87 KB[39m
|
|
16
17
|
[32mESM[39m [1mdist/index.mjs [22m[32m9.40 KB[39m
|
|
17
|
-
[32mESM[39m
|
|
18
|
-
[32mESM[39m ⚡️ Build success in 99ms
|
|
18
|
+
[32mESM[39m ⚡️ Build success in 215ms
|
|
19
19
|
DTS Build start
|
|
20
|
-
DTS ⚡️ Build success in
|
|
20
|
+
DTS ⚡️ Build success in 1940ms
|
|
21
21
|
DTS dist/cli.d.ts 20.00 B
|
|
22
|
-
DTS dist/index.d.ts 2.
|
|
22
|
+
DTS dist/index.d.ts 2.99 KB
|
|
23
23
|
DTS dist/cli.d.mts 20.00 B
|
|
24
|
-
DTS dist/index.d.mts 2.
|
|
24
|
+
DTS dist/index.d.mts 2.99 KB
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,69 +1,299 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @aiready/consistency@0.6.
|
|
3
|
+
> @aiready/consistency@0.6.12 test /Users/pengcao/projects/aiready/packages/consistency
|
|
4
4
|
> vitest run
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
[1m[7m[36m RUN [39m[27m[22m [36mv2.1.9 [39m[90m/Users/pengcao/projects/aiready/packages/consistency[39m
|
|
8
8
|
|
|
9
|
-
[?25l
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
[?25l [90m·[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
10
|
+
[?25l[2K[1A[2K[G [90m·[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
11
|
+
[90m·[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
12
|
+
[?25l[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
13
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
14
|
+
[33m⠙[39m should analyze naming issues
|
|
15
|
+
[90m·[39m should detect minimum severity filtering
|
|
16
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
13
17
|
[90m·[39m analyzePatterns[2m (3)[22m
|
|
14
|
-
[90m·[39m should detect mixed error handling
|
|
15
|
-
[90m·[39m should detect mixed async patterns
|
|
16
|
-
[90m·[39m should detect mixed import styles
|
|
17
18
|
[90m·[39m consistency scoring[2m (2)[22m
|
|
18
|
-
[90m·[39m should calculate consistency score correctly
|
|
19
|
-
[90m·[39m should weight critical issues more than info
|
|
20
19
|
[90m·[39m recommendations[2m (3)[22m
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
[
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
[90m·[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
21
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
22
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
23
|
+
[33m⠹[39m should analyze naming issues
|
|
24
|
+
[90m·[39m should detect minimum severity filtering
|
|
25
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
26
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
27
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
28
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
29
|
+
[90m·[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
30
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
31
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
32
|
+
[33m⠸[39m should analyze naming issues
|
|
33
|
+
[90m·[39m should detect minimum severity filtering
|
|
34
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
35
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
36
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
37
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
38
|
+
[90m·[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
39
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
40
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
41
|
+
[33m⠼[39m should analyze naming issues
|
|
42
|
+
[90m·[39m should detect minimum severity filtering
|
|
43
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
44
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
45
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
46
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
47
|
+
[90m·[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
48
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
49
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
50
|
+
[33m⠴[39m should analyze naming issues
|
|
51
|
+
[90m·[39m should detect minimum severity filtering
|
|
52
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
53
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
54
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
55
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
56
|
+
[90m·[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
57
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
58
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
59
|
+
[33m⠦[39m should analyze naming issues
|
|
60
|
+
[90m·[39m should detect minimum severity filtering
|
|
61
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
62
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
63
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
64
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
65
|
+
[90m·[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
66
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
67
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
68
|
+
[33m⠧[39m should analyze naming issues
|
|
69
|
+
[90m·[39m should detect minimum severity filtering
|
|
70
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
71
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
72
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
73
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
74
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
75
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
76
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
77
|
+
[33m⠇[39m should analyze naming issues
|
|
78
|
+
[90m·[39m should detect minimum severity filtering
|
|
79
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
80
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
81
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
82
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
83
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
84
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
85
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
86
|
+
[33m⠏[39m should analyze naming issues
|
|
87
|
+
[90m·[39m should detect minimum severity filtering
|
|
88
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
89
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
90
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
91
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
92
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
93
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
94
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
95
|
+
[33m⠋[39m should analyze naming issues
|
|
96
|
+
[90m·[39m should detect minimum severity filtering
|
|
97
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
98
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
99
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
100
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
101
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
102
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
103
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
104
|
+
[33m⠙[39m should analyze naming issues
|
|
105
|
+
[90m·[39m should detect minimum severity filtering
|
|
106
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
107
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
108
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
109
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
110
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
111
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
112
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
113
|
+
[33m⠹[39m should analyze naming issues
|
|
114
|
+
[90m·[39m should detect minimum severity filtering
|
|
115
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
116
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
117
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
118
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
119
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
120
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
121
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
122
|
+
[33m⠸[39m should analyze naming issues
|
|
123
|
+
[90m·[39m should detect minimum severity filtering
|
|
124
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
125
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
126
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
127
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
128
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
129
|
+
[33m⠼[39m should analyze naming issues
|
|
130
|
+
[90m·[39m should detect minimum severity filtering
|
|
131
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
132
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
133
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
134
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
135
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
136
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
137
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
138
|
+
[33m⠴[39m should analyze naming issues
|
|
139
|
+
[90m·[39m should detect minimum severity filtering
|
|
140
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
141
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
142
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
143
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
144
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
145
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
146
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
147
|
+
[33m⠦[39m should analyze naming issues
|
|
148
|
+
[90m·[39m should detect minimum severity filtering
|
|
149
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
150
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
151
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
152
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
153
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
154
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
155
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
156
|
+
[33m⠧[39m should analyze naming issues
|
|
157
|
+
[90m·[39m should detect minimum severity filtering
|
|
158
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
159
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
160
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
161
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
162
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
163
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
164
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
165
|
+
[32m✓[39m should analyze naming issues[33m 312[2mms[22m[39m
|
|
166
|
+
[33m⠙[39m should detect minimum severity filtering
|
|
167
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
168
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
169
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
170
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
171
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
172
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
173
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
174
|
+
[32m✓[39m should analyze naming issues[33m 312[2mms[22m[39m
|
|
175
|
+
[33m⠹[39m should detect minimum severity filtering
|
|
176
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
177
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
178
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
179
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
180
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
181
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
182
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
183
|
+
[32m✓[39m should analyze naming issues[33m 312[2mms[22m[39m
|
|
184
|
+
[33m⠸[39m should detect minimum severity filtering
|
|
185
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
186
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
187
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
188
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
189
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
190
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
191
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
192
|
+
[32m✓[39m should analyze naming issues[33m 312[2mms[22m[39m
|
|
193
|
+
[33m⠼[39m should detect minimum severity filtering
|
|
194
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
195
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
196
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
197
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
198
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
199
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
200
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
201
|
+
[32m✓[39m should analyze naming issues[33m 312[2mms[22m[39m
|
|
202
|
+
[33m⠴[39m should detect minimum severity filtering
|
|
203
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
204
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
205
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
206
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
207
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
208
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
209
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
210
|
+
[32m✓[39m should analyze naming issues[33m 312[2mms[22m[39m
|
|
211
|
+
[33m⠦[39m should detect minimum severity filtering
|
|
212
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
213
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
214
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
215
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
216
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
217
|
+
[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [32m✓[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m[33m 415[2mms[22m[39m
|
|
218
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
219
|
+
|
|
220
|
+
[2m Test Files [22m [1m[32m2 passed[39m[22m[90m (2)[39m
|
|
221
|
+
[2m Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
|
|
222
|
+
[2m Start at [22m 18:01:20
|
|
223
|
+
[2m Duration [22m 2.38s[2m (transform 742ms, setup 0ms, collect 2.26s, tests 425ms, environment 0ms, prepare 531ms)[22m
|
|
224
|
+
|
|
225
|
+
[?25h[?25h
|
|
226
|
+
[2mms[22m[39m
|
|
227
|
+
[32m✓[39m analyzeNaming[2m (8)[22m
|
|
28
228
|
[32m✓[39m analyzePatterns[2m (3)[22m
|
|
29
|
-
[32m✓[39m should detect mixed error handling
|
|
30
|
-
[32m✓[39m should detect mixed async patterns
|
|
31
|
-
[32m✓[39m should detect mixed import styles
|
|
32
229
|
[32m✓[39m consistency scoring[2m (2)[22m
|
|
33
|
-
[32m✓[39m should calculate consistency score correctly
|
|
34
|
-
[32m✓[39m should weight critical issues more than info
|
|
35
230
|
[33m❯[39m recommendations[2m (3)[22m
|
|
36
231
|
[33m⠙[39m should generate relevant recommendations
|
|
37
232
|
[90m·[39m should suggest standardizing error handling
|
|
38
233
|
[90m·[39m should suggest using async/await consistently
|
|
39
|
-
|
|
40
|
-
|
|
234
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
235
|
+
[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [32m✓[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m[33m 451[2mms[22m[39m
|
|
236
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
237
|
+
|
|
238
|
+
[2m Test Files [22m [1m[32m2 passed[39m[22m[90m (2)[39m
|
|
239
|
+
[2m Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
|
|
240
|
+
[2m Start at [22m 18:01:19
|
|
241
|
+
[2m Duration [22m 2.72s[2m (transform 1.07s, setup 0ms, collect 3.76s, tests 456ms, environment 0ms, prepare 214ms)[22m
|
|
242
|
+
|
|
243
|
+
[?25h[?25h
|
|
244
|
+
st.ts[22m[2m (3)[22m
|
|
245
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
246
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
247
|
+
[32m✓[39m should analyze naming issues
|
|
248
|
+
[33m⠹[39m should detect minimum severity filtering
|
|
249
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
250
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
251
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
252
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
253
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
254
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
255
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
256
|
+
[32m✓[39m should analyze naming issues
|
|
257
|
+
[33m⠸[39m should detect minimum severity filtering
|
|
258
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
259
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
260
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
261
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
262
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
263
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
264
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
41
265
|
[32m✓[39m should analyze naming issues
|
|
42
|
-
[
|
|
266
|
+
[33m⠼[39m should detect minimum severity filtering
|
|
267
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
268
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
269
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
270
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
271
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
272
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
273
|
+
[33m❯[39m analyzeConsistency[2m (2)[22m
|
|
274
|
+
[32m✓[39m should analyze naming issues
|
|
275
|
+
[33m⠴[39m should detect minimum severity filtering
|
|
276
|
+
[90m·[39m analyzeNaming[2m (8)[22m
|
|
277
|
+
[90m·[39m analyzePatterns[2m (3)[22m
|
|
278
|
+
[90m·[39m consistency scoring[2m (2)[22m
|
|
279
|
+
[90m·[39m recommendations[2m (3)[22m
|
|
280
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
281
|
+
[?25l[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [33m❯[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m
|
|
282
|
+
[32m✓[39m analyzeConsistency[2m (2)[22m[33m 553[2mms[22m[39m
|
|
43
283
|
[32m✓[39m analyzeNaming[2m (8)[22m
|
|
44
|
-
[32m✓[39m should detect single letter variables
|
|
45
|
-
[32m✓[39m should NOT flag acceptable abbreviations
|
|
46
|
-
[32m✓[39m should NOT flag common short English words
|
|
47
|
-
[32m✓[39m should detect snake_case in TypeScript files
|
|
48
|
-
[32m✓[39m should detect unclear boolean names
|
|
49
|
-
[32m✓[39m should allow common abbreviations
|
|
50
|
-
[32m✓[39m should NOT flag multi-line arrow function parameters (Phase 3)
|
|
51
|
-
[32m✓[39m should NOT flag short-lived comparison variables (Phase 3)
|
|
52
284
|
[32m✓[39m analyzePatterns[2m (3)[22m
|
|
53
|
-
[32m✓[39m should detect mixed error handling
|
|
54
|
-
[32m✓[39m should detect mixed async patterns
|
|
55
|
-
[32m✓[39m should detect mixed import styles
|
|
56
285
|
[32m✓[39m consistency scoring[2m (2)[22m
|
|
57
|
-
|
|
58
|
-
[
|
|
59
|
-
|
|
60
|
-
[
|
|
61
|
-
|
|
62
|
-
|
|
286
|
+
[33m❯[39m recommendations[2m (3)[22m
|
|
287
|
+
[33m⠙[39m should generate relevant recommendations
|
|
288
|
+
[90m·[39m should suggest standardizing error handling
|
|
289
|
+
[90m·[39m should suggest using async/await consistently
|
|
290
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
291
|
+
[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[1A[2K[G [32m✓[39m [2msrc/__tests__/[22manalyzer[2m.test.ts[22m[2m (18)[22m[33m 596[2mms[22m[39m
|
|
292
|
+
[32m✓[39m [2msrc/__tests__/[22mlanguage-filter[2m.test.ts[22m[2m (3)[22m
|
|
63
293
|
|
|
64
|
-
[2m Test Files [22m [1m[
|
|
65
|
-
[2m Tests [22m [1m[
|
|
66
|
-
[2m Start at [22m
|
|
67
|
-
[2m Duration [22m
|
|
294
|
+
[2m Test Files [22m [1m[32m2 passed[39m[22m[90m (2)[39m
|
|
295
|
+
[2m Tests [22m [1m[32m21 passed[39m[22m[90m (21)[39m
|
|
296
|
+
[2m Start at [22m 18:01:19
|
|
297
|
+
[2m Duration [22m 2.68s[2m (transform 1.41s, setup 0ms, collect 2.94s, tests 724ms, environment 0ms, prepare 693ms)[22m
|
|
68
298
|
|
|
69
299
|
[?25h[?25h
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Language Support Fix - Python Files Issue
|
|
2
|
+
|
|
3
|
+
## Issue Report
|
|
4
|
+
|
|
5
|
+
**Date:** 2026-01-20
|
|
6
|
+
**Reporter:** Consumer testing on receiptclaimer project
|
|
7
|
+
**Package:** @aiready/consistency
|
|
8
|
+
|
|
9
|
+
### Problem Description
|
|
10
|
+
|
|
11
|
+
The `@aiready/consistency` tool was attempting to parse **Python files (.py)** using a **TypeScript/JavaScript parser** (`@typescript-eslint/typescript-estree`), causing parse failures with misleading error messages.
|
|
12
|
+
|
|
13
|
+
### Error Messages
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Failed to parse /path/to/compute_weighted_ranking.py: Unterminated string literal.
|
|
17
|
+
Failed to parse /path/to/search_console_to_bq.py: Unterminated string literal.
|
|
18
|
+
Failed to parse /path/to/merge-web-coverage.ts: Invalid character.
|
|
19
|
+
Failed to parse /path/to/merge-all-coverage.ts: '>' expected.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Root Cause Analysis
|
|
23
|
+
|
|
24
|
+
1. **File Scanner:** The core `scanFiles()` utility includes multiple language patterns by default:
|
|
25
|
+
```typescript
|
|
26
|
+
include = ['**/*.{ts,tsx,js,jsx,py,java}']
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
2. **Parser Limitation:** The `@aiready/consistency` tool uses `@typescript-eslint/typescript-estree` which only supports TypeScript/JavaScript syntax.
|
|
30
|
+
|
|
31
|
+
3. **No Language Filter:** The tool was processing all files returned by the scanner without filtering by supported language extensions.
|
|
32
|
+
|
|
33
|
+
### Issue Classification
|
|
34
|
+
|
|
35
|
+
| File Type | Status | Root Cause |
|
|
36
|
+
|-----------|--------|------------|
|
|
37
|
+
| Python files (.py) | **Tool Issue** | Tool tried to parse with wrong parser |
|
|
38
|
+
| TypeScript files (.ts) | **File Issue** | Actual syntax errors in source files |
|
|
39
|
+
|
|
40
|
+
## Fix Implementation
|
|
41
|
+
|
|
42
|
+
### Changes Made
|
|
43
|
+
|
|
44
|
+
#### 1. Added Language Filtering ([naming-ast.ts](packages/consistency/src/analyzers/naming-ast.ts))
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// Filter to only JS/TS files that the TypeScript parser can handle
|
|
48
|
+
const supportedFiles = files.filter(file =>
|
|
49
|
+
/\.(js|jsx|ts|tsx)$/i.test(file)
|
|
50
|
+
);
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### 2. Updated Documentation
|
|
54
|
+
|
|
55
|
+
- **README.md:** Added "Supported Languages" section at the top
|
|
56
|
+
- **README.md:** Added "Language Support" subsection explaining which files are skipped
|
|
57
|
+
- **CLI Help:** Added language support information
|
|
58
|
+
- **Code Comments:** Documented limitations in analyzer and parser functions
|
|
59
|
+
|
|
60
|
+
#### 3. Improved Error Handling ([ast-parser.ts](packages/consistency/src/utils/ast-parser.ts))
|
|
61
|
+
|
|
62
|
+
- Removed noisy `console.warn()` for parse failures
|
|
63
|
+
- Added comments explaining that non-JS/TS files should be filtered upstream
|
|
64
|
+
- Made parse failures silent (returns `null`) since they're now expected for excluded files
|
|
65
|
+
|
|
66
|
+
#### 4. Added Test Coverage ([language-filter.test.ts](packages/consistency/src/__tests__/language-filter.test.ts))
|
|
67
|
+
|
|
68
|
+
- Tests that Python/Java/Ruby files are filtered out
|
|
69
|
+
- Verifies all JS/TS extensions are accepted
|
|
70
|
+
- Ensures no crashes on mixed language projects
|
|
71
|
+
|
|
72
|
+
### Design Decision: Core Scanner vs Tool Filtering
|
|
73
|
+
|
|
74
|
+
**Question:** Should the core scanner exclude Python files, or should each tool filter?
|
|
75
|
+
|
|
76
|
+
**Decision:** **Tool-level filtering** (implemented)
|
|
77
|
+
|
|
78
|
+
**Rationale:**
|
|
79
|
+
- Core scanner is designed for future multi-language support
|
|
80
|
+
- Other tools (e.g., future Python linter) may need `.py` files
|
|
81
|
+
- Each tool knows its language capabilities best
|
|
82
|
+
- Follows separation of concerns principle
|
|
83
|
+
|
|
84
|
+
### Verification
|
|
85
|
+
|
|
86
|
+
✅ Build successful
|
|
87
|
+
✅ Tests passing (3 new tests added)
|
|
88
|
+
✅ Documentation updated
|
|
89
|
+
✅ No breaking changes
|
|
90
|
+
|
|
91
|
+
## For Users
|
|
92
|
+
|
|
93
|
+
### What Changed
|
|
94
|
+
|
|
95
|
+
**Before:** Tool attempted to parse Python/Java files and showed confusing errors
|
|
96
|
+
|
|
97
|
+
**After:** Tool silently skips unsupported languages and only analyzes JS/TS files
|
|
98
|
+
|
|
99
|
+
### Migration Guide
|
|
100
|
+
|
|
101
|
+
No action required. This is a non-breaking improvement.
|
|
102
|
+
|
|
103
|
+
### New Behavior
|
|
104
|
+
|
|
105
|
+
When running on a mixed-language project:
|
|
106
|
+
```bash
|
|
107
|
+
npx @aiready/consistency ./src
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
The tool will:
|
|
111
|
+
1. ✅ Analyze all `.ts`, `.tsx`, `.js`, `.jsx` files
|
|
112
|
+
2. ⏭️ Skip `.py`, `.java`, and other language files
|
|
113
|
+
3. 📊 Report only on supported languages
|
|
114
|
+
4. ❌ No more "Failed to parse" warnings for Python files
|
|
115
|
+
|
|
116
|
+
## Future Enhancements
|
|
117
|
+
|
|
118
|
+
Potential improvements for future versions:
|
|
119
|
+
|
|
120
|
+
1. **Multi-Language Support**
|
|
121
|
+
- Add Python AST parser for Python files
|
|
122
|
+
- Add Java parser for Java files
|
|
123
|
+
- Create language-specific analyzers
|
|
124
|
+
|
|
125
|
+
2. **Better Diagnostics**
|
|
126
|
+
- Count and report skipped files by language
|
|
127
|
+
- Suggest language-specific tools for unsupported files
|
|
128
|
+
|
|
129
|
+
3. **Configuration Option**
|
|
130
|
+
- Allow users to explicitly specify supported languages
|
|
131
|
+
- Add `--strict` mode to error on unsupported files
|
|
132
|
+
|
|
133
|
+
## Related Files
|
|
134
|
+
|
|
135
|
+
- [packages/consistency/src/analyzers/naming-ast.ts](packages/consistency/src/analyzers/naming-ast.ts) - Added filtering
|
|
136
|
+
- [packages/consistency/src/analyzer.ts](packages/consistency/src/analyzer.ts) - Updated docs
|
|
137
|
+
- [packages/consistency/src/cli.ts](packages/consistency/src/cli.ts) - Updated help text
|
|
138
|
+
- [packages/consistency/src/utils/ast-parser.ts](packages/consistency/src/utils/ast-parser.ts) - Improved error handling
|
|
139
|
+
- [packages/consistency/README.md](packages/consistency/README.md) - Added language support section
|
|
140
|
+
- [packages/core/src/utils/file-scanner.ts](packages/core/src/utils/file-scanner.ts) - Documented broad defaults
|
|
141
|
+
|
|
142
|
+
## Testing
|
|
143
|
+
|
|
144
|
+
Run the new tests:
|
|
145
|
+
```bash
|
|
146
|
+
cd packages/consistency
|
|
147
|
+
pnpm test language-filter.test.ts
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Verify on a mixed-language project:
|
|
151
|
+
```bash
|
|
152
|
+
# Should work without Python parse errors
|
|
153
|
+
npx @aiready/consistency /path/to/mixed-project
|
|
154
|
+
```
|
package/README.md
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
Helps teams maintain consistent coding practices across their codebase, making it easier for AI tools to understand and work with your code.
|
|
6
6
|
|
|
7
|
+
**Supported Languages:** TypeScript, JavaScript (`.ts`, `.tsx`, `.js`, `.jsx`)
|
|
8
|
+
|
|
9
|
+
> **Note:** Python, Java, and other language files in your project will be safely ignored during analysis.
|
|
10
|
+
|
|
7
11
|
## 🚀 Quick Start
|
|
8
12
|
|
|
9
13
|
**Zero config, works out of the box:**
|
|
@@ -54,6 +58,19 @@ CRITICAL (2 files)
|
|
|
54
58
|
|
|
55
59
|
Inconsistent code patterns confuse AI models and reduce their effectiveness. This tool analyzes:
|
|
56
60
|
|
|
61
|
+
### 🔧 Language Support
|
|
62
|
+
|
|
63
|
+
**Fully Supported:**
|
|
64
|
+
- TypeScript (`.ts`, `.tsx`)
|
|
65
|
+
- JavaScript (`.js`, `.jsx`)
|
|
66
|
+
|
|
67
|
+
**Not Yet Supported:**
|
|
68
|
+
- Python (`.py`) - Files will be skipped
|
|
69
|
+
- Java (`.java`) - Files will be skipped
|
|
70
|
+
- Other languages - Files will be skipped
|
|
71
|
+
|
|
72
|
+
If you see "Failed to parse" warnings for non-JS/TS files, this is expected behavior and won't affect the analysis of your JavaScript/TypeScript code.
|
|
73
|
+
|
|
57
74
|
### 🏷️ Naming Quality & Conventions
|
|
58
75
|
- **Single-letter variables** - Detects unclear variable names (skips common iterators: i, j, k, l, x, y, z in appropriate contexts)
|
|
59
76
|
- **Abbreviations** - Identifies unclear abbreviations while allowing 60+ standard ones (env, req, res, ctx, max, min, etc.)
|