@aiready/consistency 0.20.18 → 0.20.20
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 +24 -23
- package/.turbo/turbo-lint.log +5 -24
- package/.turbo/turbo-test.log +35 -28
- package/coverage/clover.xml +562 -565
- package/coverage/coverage-final.json +12 -12
- package/coverage/index.html +36 -36
- package/coverage/src/analyzer.ts.html +263 -368
- package/coverage/src/analyzers/index.html +55 -55
- package/coverage/src/analyzers/naming-ast.ts.html +305 -164
- package/coverage/src/analyzers/naming-constants.ts.html +42 -36
- package/coverage/src/analyzers/naming-generalized.ts.html +312 -33
- package/coverage/src/analyzers/naming.ts.html +58 -52
- package/coverage/src/analyzers/patterns.ts.html +43 -52
- package/coverage/src/index.html +22 -22
- package/coverage/src/index.ts.html +1 -1
- package/coverage/src/provider.ts.html +22 -49
- package/coverage/src/scoring.ts.html +39 -45
- package/coverage/src/utils/ast-parser.ts.html +33 -33
- package/coverage/src/utils/config-loader.ts.html +1 -1
- package/coverage/src/utils/context-detector.ts.html +92 -92
- package/coverage/src/utils/index.html +14 -14
- package/coverage/src/utils/scope-tracker.ts.html +52 -52
- package/dist/chunk-KWQVBF7K.mjs +831 -0
- package/dist/chunk-P6NVKUBB.mjs +831 -0
- package/dist/cli.js +6 -7
- package/dist/cli.mjs +1 -1
- package/dist/index.js +6 -7
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
- package/src/__tests__/naming.test.ts +88 -0
- package/src/__tests__/scope-tracker.test.ts +184 -0
- package/src/__tests__/scoring.test.ts +9 -9
- package/src/analyzers/naming-ast.ts +10 -8
- package/src/analyzers/naming-generalized.ts +1 -1
|
@@ -23,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">78.43% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>40/51</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">67.14% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>47/70</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">90.69% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>39/43</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line medium'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -152,7 +152,140 @@
|
|
|
152
152
|
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
153
|
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
154
|
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
249
|
+
<span class="cline-any cline-neutral"> </span>
|
|
250
|
+
<span class="cline-any cline-neutral"> </span>
|
|
251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
254
|
+
<span class="cline-any cline-neutral"> </span>
|
|
255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
257
|
+
<span class="cline-any cline-neutral"> </span>
|
|
258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
260
|
+
<span class="cline-any cline-yes">2x</span>
|
|
261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
156
289
|
<span class="cline-any cline-neutral"> </span>
|
|
157
290
|
<span class="cline-any cline-neutral"> </span>
|
|
158
291
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -177,28 +310,68 @@
|
|
|
177
310
|
<span class="cline-any cline-neutral"> </span>
|
|
178
311
|
<span class="cline-any cline-yes">46x</span>
|
|
179
312
|
<span class="cline-any cline-yes">46x</span>
|
|
180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
181
313
|
<span class="cline-any cline-yes">46x</span>
|
|
314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-yes">45x</span>
|
|
317
|
+
<span class="cline-any cline-yes">45x</span>
|
|
182
318
|
<span class="cline-any cline-yes">45x</span>
|
|
183
319
|
<span class="cline-any cline-yes">45x</span>
|
|
184
320
|
<span class="cline-any cline-neutral"> </span>
|
|
185
321
|
<span class="cline-any cline-neutral"> </span>
|
|
186
|
-
<span class="cline-any cline-yes">
|
|
322
|
+
<span class="cline-any cline-yes">46x</span>
|
|
323
|
+
<span class="cline-any cline-yes">126x</span>
|
|
324
|
+
<span class="cline-any cline-yes">126x</span>
|
|
325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
187
326
|
<span class="cline-any cline-neutral"> </span>
|
|
188
327
|
<span class="cline-any cline-yes">126x</span>
|
|
189
328
|
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
190
331
|
<span class="cline-any cline-yes">126x</span>
|
|
191
332
|
<span class="cline-any cline-yes">3x</span>
|
|
192
333
|
<span class="cline-any cline-yes">123x</span>
|
|
334
|
+
<span class="cline-any cline-yes">30x</span>
|
|
335
|
+
<span class="cline-any cline-yes">93x</span>
|
|
336
|
+
<span class="cline-any cline-yes">9x</span>
|
|
337
|
+
<span class="cline-any cline-yes">84x</span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
193
339
|
<span class="cline-any cline-yes">75x</span>
|
|
194
|
-
<span class="cline-any cline-
|
|
340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-no"> </span>
|
|
344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
345
|
+
<span class="cline-any cline-yes">75x</span>
|
|
346
|
+
<span class="cline-any cline-yes">9x</span>
|
|
347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
348
|
+
<span class="cline-any cline-yes">9x</span>
|
|
349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
351
|
+
<span class="cline-any cline-neutral"> </span>
|
|
352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
|
+
<span class="cline-any cline-no"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
195
365
|
<span class="cline-any cline-yes">9x</span>
|
|
196
366
|
<span class="cline-any cline-neutral"> </span>
|
|
197
|
-
<span class="cline-any cline-
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
369
|
+
<span class="cline-any cline-no"> </span>
|
|
198
370
|
<span class="cline-any cline-neutral"> </span>
|
|
199
371
|
<span class="cline-any cline-neutral"> </span>
|
|
200
372
|
<span class="cline-any cline-yes">126x</span>
|
|
201
|
-
<span class="cline-any cline-yes">
|
|
373
|
+
<span class="cline-any cline-yes">9x</span>
|
|
374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
202
375
|
<span class="cline-any cline-neutral"> </span>
|
|
203
376
|
<span class="cline-any cline-neutral"> </span>
|
|
204
377
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -214,14 +387,22 @@
|
|
|
214
387
|
<span class="cline-any cline-neutral"> </span>
|
|
215
388
|
<span class="cline-any cline-yes">45x</span>
|
|
216
389
|
<span class="cline-any cline-yes">138x</span>
|
|
217
|
-
<span class="cline-any cline-yes">
|
|
390
|
+
<span class="cline-any cline-yes">222x</span>
|
|
391
|
+
<span class="cline-any cline-yes">219x</span>
|
|
392
|
+
<span class="cline-any cline-yes">219x</span>
|
|
218
393
|
<span class="cline-any cline-neutral"> </span>
|
|
219
|
-
<span class="cline-any cline-yes">
|
|
394
|
+
<span class="cline-any cline-yes">219x</span>
|
|
220
395
|
<span class="cline-any cline-neutral"> </span>
|
|
221
396
|
<span class="cline-any cline-neutral"> </span>
|
|
222
397
|
<span class="cline-any cline-neutral"> </span>
|
|
223
398
|
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-
|
|
399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-no"> </span>
|
|
225
406
|
<span class="cline-any cline-neutral"> </span>
|
|
226
407
|
<span class="cline-any cline-neutral"> </span>
|
|
227
408
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -235,10 +416,15 @@
|
|
|
235
416
|
<span class="cline-any cline-neutral"> </span>
|
|
236
417
|
<span class="cline-any cline-neutral"> </span>
|
|
237
418
|
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-yes">1x</span>
|
|
238
422
|
<span class="cline-any cline-yes">1x</span>
|
|
239
423
|
<span class="cline-any cline-neutral"> </span>
|
|
240
424
|
<span class="cline-any cline-neutral"> </span>
|
|
241
425
|
<span class="cline-any cline-neutral"> </span>
|
|
426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
242
428
|
<span class="cline-any cline-yes">4x</span>
|
|
243
429
|
<span class="cline-any cline-neutral"> </span>
|
|
244
430
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
@@ -248,10 +434,50 @@
|
|
|
248
434
|
* naming conventions across all supported languages.
|
|
249
435
|
*/
|
|
250
436
|
|
|
251
|
-
import { getParser, Severity
|
|
437
|
+
import { getParser, Severity } from '@aiready/core';
|
|
252
438
|
import type { NamingIssue } from '../types';
|
|
253
439
|
import { readFileSync } from 'fs';
|
|
254
440
|
|
|
441
|
+
// Common abbreviations to whitelist
|
|
442
|
+
const COMMON_ABBREVIATIONS = new Set([
|
|
443
|
+
'id',
|
|
444
|
+
'db',
|
|
445
|
+
'fs',
|
|
446
|
+
'os',
|
|
447
|
+
'ip',
|
|
448
|
+
'ui',
|
|
449
|
+
'ux',
|
|
450
|
+
'api',
|
|
451
|
+
'env',
|
|
452
|
+
'url',
|
|
453
|
+
'req',
|
|
454
|
+
'res',
|
|
455
|
+
'err',
|
|
456
|
+
'ctx',
|
|
457
|
+
'cb',
|
|
458
|
+
'idx',
|
|
459
|
+
'src',
|
|
460
|
+
'dir',
|
|
461
|
+
'app',
|
|
462
|
+
'dev',
|
|
463
|
+
'qa',
|
|
464
|
+
'dto',
|
|
465
|
+
'dao',
|
|
466
|
+
'ref',
|
|
467
|
+
'ast',
|
|
468
|
+
'dom',
|
|
469
|
+
'log',
|
|
470
|
+
'msg',
|
|
471
|
+
'pkg',
|
|
472
|
+
'css',
|
|
473
|
+
'html',
|
|
474
|
+
'xml',
|
|
475
|
+
'jsx',
|
|
476
|
+
'tsx',
|
|
477
|
+
'ts',
|
|
478
|
+
'js',
|
|
479
|
+
]);
|
|
480
|
+
|
|
255
481
|
/**
|
|
256
482
|
* Analyzes naming conventions using generalized LanguageParser metadata
|
|
257
483
|
*/
|
|
@@ -266,34 +492,74 @@ export async function analyzeNamingGeneralized(
|
|
|
266
492
|
|
|
267
493
|
try {
|
|
268
494
|
const code = readFileSync(file, 'utf-8');
|
|
495
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!code.trim()) <span class="cstat-no" title="statement not covered" >continue; // Skip empty files</span>
|
|
496
|
+
|
|
269
497
|
// Ensure parser is initialized (e.g. WASM loaded)
|
|
270
498
|
await parser.initialize();
|
|
271
499
|
const result = parser.parse(code, file);
|
|
272
500
|
const conventions = parser.getNamingConventions();
|
|
501
|
+
const exceptions = new Set(conventions.exceptions || []);
|
|
273
502
|
|
|
274
503
|
// 1. Check Exports
|
|
275
504
|
for (const exp of result.exports) {
|
|
505
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!exp.name || exp.name === 'default') <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
506
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (exceptions.has(exp.name)) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
507
|
+
|
|
508
|
+
// Skip common abbreviations
|
|
509
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (COMMON_ABBREVIATIONS.has(exp.name.toLowerCase())) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
510
|
+
|
|
276
511
|
let pattern: RegExp | undefined;
|
|
277
|
-
let typeName = exp.type;
|
|
278
512
|
|
|
279
513
|
if (exp.type === 'class') {
|
|
280
514
|
pattern = conventions.classPattern;
|
|
515
|
+
} else if (exp.type === 'interface' && conventions.interfacePattern) {
|
|
516
|
+
pattern = conventions.interfacePattern;
|
|
517
|
+
} else if (exp.type === 'type' && conventions.typePattern) {
|
|
518
|
+
pattern = conventions.typePattern;
|
|
281
519
|
} else if (exp.type === 'function') {
|
|
520
|
+
// Allow PascalCase (React components) or UPPER_CASE (HTTP methods) for exported functions
|
|
521
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
522
|
+
/^[A-Z][a-zA-Z0-9]*$/.test(exp.name) ||
|
|
523
|
+
/^[A-Z][A-Z0-9_]*$/.test(exp.name)
|
|
524
|
+
) {
|
|
525
|
+
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
526
|
+
}
|
|
282
527
|
pattern = conventions.functionPattern;
|
|
283
528
|
} else if (exp.type === 'const') {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
529
|
+
// Exempt standard Next.js / API names
|
|
530
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
531
|
+
[
|
|
532
|
+
'handler',
|
|
533
|
+
'GET',
|
|
534
|
+
'POST',
|
|
535
|
+
'PUT',
|
|
536
|
+
'DELETE',
|
|
537
|
+
'PATCH',
|
|
538
|
+
'OPTIONS',
|
|
539
|
+
'HEAD',
|
|
540
|
+
].includes(exp.name)
|
|
541
|
+
)
|
|
542
|
+
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
543
|
+
|
|
544
|
+
// Only enforce SCREAMING_SNAKE_CASE for primitive constants (strings, numbers,
|
|
545
|
+
// booleans). Object literals, class instances, and tool definitions are
|
|
546
|
+
// camelCase by convention (e.g. `logger`, `githubTools`, `RemediationSwarm`).
|
|
547
|
+
pattern = exp.isPrimitive
|
|
548
|
+
? <span class="branch-0 cbranch-no" title="branch not covered" >conventions.constantPattern</span>
|
|
549
|
+
: conventions.variablePattern;
|
|
550
|
+
} else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
551
|
+
<span class="cstat-no" title="statement not covered" > pattern = conventions.variablePattern;</span>
|
|
287
552
|
}
|
|
288
553
|
|
|
289
554
|
if (pattern && !pattern.test(exp.name)) {
|
|
290
555
|
issues.push({
|
|
291
|
-
type: '
|
|
556
|
+
type: 'naming-inconsistency',
|
|
292
557
|
identifier: exp.name,
|
|
293
558
|
file,
|
|
294
559
|
line: exp.loc?.start.line || <span class="branch-1 cbranch-no" title="branch not covered" >1,</span>
|
|
295
|
-
column: exp.loc?.start.column ||
|
|
296
|
-
|
|
560
|
+
column: exp.loc?.start.column || 0,
|
|
561
|
+
// Recalibrate naming issues to Minor to differentiate from structural/architectural issues
|
|
562
|
+
severity: Severity.Minor,
|
|
297
563
|
category: 'naming',
|
|
298
564
|
suggestion: `Follow ${parser.language} ${exp.type} naming convention: ${pattern.toString()}`,
|
|
299
565
|
});
|
|
@@ -303,20 +569,28 @@ export async function analyzeNamingGeneralized(
|
|
|
303
569
|
// 2. Check Imports (basic check for specifier consistency)
|
|
304
570
|
for (const imp of result.imports) {
|
|
305
571
|
for (const spec of imp.specifiers) {
|
|
306
|
-
if (spec === '*' || spec === 'default') continue;
|
|
572
|
+
if (!spec || spec === '*' || spec === 'default') continue;
|
|
573
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (exceptions.has(spec)) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
574
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (COMMON_ABBREVIATIONS.has(spec.toLowerCase())) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
307
575
|
|
|
308
|
-
if (
|
|
576
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
309
577
|
!conventions.variablePattern.test(spec) &&
|
|
310
|
-
!conventions.classPattern.test(spec)
|
|
578
|
+
!conventions.classPattern.test(spec) &&
|
|
579
|
+
(!conventions.constantPattern ||
|
|
580
|
+
!conventions.constantPattern.test(spec)) &&
|
|
581
|
+
(<span class="branch-4 cbranch-no" title="branch not covered" >!conventions.typePattern || <span class="branch-5 cbranch-no" title="branch not covered" >!</span>conventions.typePattern.test(spec)) &&</span>
|
|
582
|
+
(<span class="branch-6 cbranch-no" title="branch not covered" >!conventions.interfacePattern ||</span>
|
|
583
|
+
<span class="branch-7 cbranch-no" title="branch not covered" > !conventions.interfacePattern.test(spec)) &&</span>
|
|
584
|
+
<span class="branch-8 cbranch-no" title="branch not covered" > !/^[A-Z][A-Z0-9_]*$/.test(spec)</span>
|
|
311
585
|
) {
|
|
312
586
|
// This is often a 'convention-mix' issue (e.g. importing snake_case into camelCase project)
|
|
313
|
-
issues.push({
|
|
314
|
-
type: '
|
|
587
|
+
<span class="cstat-no" title="statement not covered" > issues.push({</span>
|
|
588
|
+
type: 'naming-inconsistency',
|
|
315
589
|
identifier: spec,
|
|
316
590
|
file,
|
|
317
|
-
line: imp.loc?.start.line ||
|
|
591
|
+
line: imp.loc?.start.line || 1,
|
|
318
592
|
column: imp.loc?.start.column || 0,
|
|
319
|
-
severity: Severity.Minor
|
|
593
|
+
severity: Severity.Info, // Reduced from Minor to Info for imports
|
|
320
594
|
category: 'naming',
|
|
321
595
|
suggestion: `Imported identifier '${spec}' may not follow standard conventions for this language.`,
|
|
322
596
|
});
|
|
@@ -324,7 +598,12 @@ export async function analyzeNamingGeneralized(
|
|
|
324
598
|
}
|
|
325
599
|
}
|
|
326
600
|
} catch (error) {
|
|
327
|
-
|
|
601
|
+
// Improved error handling
|
|
602
|
+
const errorMessage =
|
|
603
|
+
error instanceof Error ? error.message : <span class="branch-1 cbranch-no" title="branch not covered" >String(error);</span>
|
|
604
|
+
console.debug(
|
|
605
|
+
`Consistency: Skipping unparseable file ${file}: ${errorMessage.split('\\n')[0]}`
|
|
606
|
+
);
|
|
328
607
|
}
|
|
329
608
|
}
|
|
330
609
|
|
|
@@ -337,7 +616,7 @@ export async function analyzeNamingGeneralized(
|
|
|
337
616
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
338
617
|
Code coverage generated by
|
|
339
618
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
340
|
-
at 2026-03-
|
|
619
|
+
at 2026-03-21T12:56:00.785Z
|
|
341
620
|
</div>
|
|
342
621
|
<script src="../../prettify.js"></script>
|
|
343
622
|
<script>
|