@aiready/consistency 0.21.8 → 0.21.11

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 (136) hide show
  1. package/.turbo/turbo-build.log +23 -24
  2. package/.turbo/turbo-format-check.log +1 -1
  3. package/.turbo/turbo-lint.log +1 -1
  4. package/.turbo/turbo-test.log +18 -19
  5. package/.turbo/turbo-type-check.log +1 -1
  6. package/dist/index.d.mts +3 -3
  7. package/dist/index.d.ts +3 -3
  8. package/dist/index.js +4 -4
  9. package/dist/index.mjs +3 -3
  10. package/package.json +2 -2
  11. package/src/__tests__/provider.test.ts +6 -34
  12. package/src/index.ts +3 -3
  13. package/src/provider.ts +2 -2
  14. package/dist/__tests__/analyzer.test.d.ts +0 -2
  15. package/dist/__tests__/analyzer.test.d.ts.map +0 -1
  16. package/dist/__tests__/analyzer.test.js +0 -157
  17. package/dist/__tests__/analyzer.test.js.map +0 -1
  18. package/dist/__tests__/language-filter.test.d.ts +0 -2
  19. package/dist/__tests__/language-filter.test.d.ts.map +0 -1
  20. package/dist/__tests__/language-filter.test.js +0 -46
  21. package/dist/__tests__/language-filter.test.js.map +0 -1
  22. package/dist/__tests__/scoring.test.d.ts +0 -2
  23. package/dist/__tests__/scoring.test.d.ts.map +0 -1
  24. package/dist/__tests__/scoring.test.js +0 -118
  25. package/dist/__tests__/scoring.test.js.map +0 -1
  26. package/dist/analyzer.d.ts +0 -7
  27. package/dist/analyzer.d.ts.map +0 -1
  28. package/dist/analyzer.js +0 -160
  29. package/dist/analyzer.js.map +0 -1
  30. package/dist/analyzers/naming-ast.d.ts +0 -7
  31. package/dist/analyzers/naming-ast.d.ts.map +0 -1
  32. package/dist/analyzers/naming-ast.js +0 -253
  33. package/dist/analyzers/naming-ast.js.map +0 -1
  34. package/dist/analyzers/naming-constants.d.ts +0 -21
  35. package/dist/analyzers/naming-constants.d.ts.map +0 -1
  36. package/dist/analyzers/naming-constants.js +0 -96
  37. package/dist/analyzers/naming-constants.js.map +0 -1
  38. package/dist/analyzers/naming-python.d.ts +0 -16
  39. package/dist/analyzers/naming-python.d.ts.map +0 -1
  40. package/dist/analyzers/naming-python.js +0 -165
  41. package/dist/analyzers/naming-python.js.map +0 -1
  42. package/dist/analyzers/naming.d.ts +0 -6
  43. package/dist/analyzers/naming.d.ts.map +0 -1
  44. package/dist/analyzers/naming.js +0 -234
  45. package/dist/analyzers/naming.js.map +0 -1
  46. package/dist/analyzers/patterns.d.ts +0 -10
  47. package/dist/analyzers/patterns.d.ts.map +0 -1
  48. package/dist/analyzers/patterns.js +0 -197
  49. package/dist/analyzers/patterns.js.map +0 -1
  50. package/dist/chunk-2BTBNG6X.mjs +0 -814
  51. package/dist/chunk-3ZB6FFRL.mjs +0 -661
  52. package/dist/chunk-5UFRGXSB.mjs +0 -783
  53. package/dist/chunk-66M3TIO7.mjs +0 -837
  54. package/dist/chunk-6BM5MV3S.mjs +0 -719
  55. package/dist/chunk-6H3JHDP7.mjs +0 -832
  56. package/dist/chunk-7PHHJOGC.mjs +0 -1374
  57. package/dist/chunk-AASFXGUR.mjs +0 -1622
  58. package/dist/chunk-AR7DIZLP.mjs +0 -827
  59. package/dist/chunk-BDDMOIU2.mjs +0 -385
  60. package/dist/chunk-BMILMNKJ.mjs +0 -1633
  61. package/dist/chunk-BYY6MD5T.mjs +0 -729
  62. package/dist/chunk-CA4Q5JBK.mjs +0 -1143
  63. package/dist/chunk-CF4LU7KE.mjs +0 -384
  64. package/dist/chunk-CJINEUIH.mjs +0 -1369
  65. package/dist/chunk-CLWNLHDB.mjs +0 -909
  66. package/dist/chunk-CZUJTDNH.mjs +0 -848
  67. package/dist/chunk-DNGW3WQK.mjs +0 -810
  68. package/dist/chunk-DSI3TEO2.mjs +0 -662
  69. package/dist/chunk-EIQ5K6OO.mjs +0 -1579
  70. package/dist/chunk-FEJODRK5.mjs +0 -783
  71. package/dist/chunk-FK56AZ43.mjs +0 -817
  72. package/dist/chunk-H6S7WKSQ.mjs +0 -729
  73. package/dist/chunk-HAOJLJNB.mjs +0 -1290
  74. package/dist/chunk-HJCP36VW.mjs +0 -821
  75. package/dist/chunk-HPG7P6PD.mjs +0 -1372
  76. package/dist/chunk-IVRBV7SE.mjs +0 -1295
  77. package/dist/chunk-IXBC6GVT.mjs +0 -832
  78. package/dist/chunk-J5IFYDVU.mjs +0 -1579
  79. package/dist/chunk-KWQVBF7K.mjs +0 -831
  80. package/dist/chunk-LD3CHHU2.mjs +0 -1297
  81. package/dist/chunk-LMOXGPCM.mjs +0 -722
  82. package/dist/chunk-LSXZH6X6.mjs +0 -810
  83. package/dist/chunk-LUAREV6A.mjs +0 -508
  84. package/dist/chunk-MAPVFXBP.mjs +0 -708
  85. package/dist/chunk-MM2PLUCH.mjs +0 -1376
  86. package/dist/chunk-NPWCJZUG.mjs +0 -708
  87. package/dist/chunk-ON73WHHU.mjs +0 -1310
  88. package/dist/chunk-P6NVKUBB.mjs +0 -831
  89. package/dist/chunk-Q3KTWDSL.mjs +0 -808
  90. package/dist/chunk-Q5XMWG33.mjs +0 -661
  91. package/dist/chunk-QOIPVP6P.mjs +0 -1607
  92. package/dist/chunk-RMEQWG52.mjs +0 -1633
  93. package/dist/chunk-S6BZVTWN.mjs +0 -731
  94. package/dist/chunk-TE6JYZD3.mjs +0 -810
  95. package/dist/chunk-TLVLM3M5.mjs +0 -771
  96. package/dist/chunk-TXHPUU7A.mjs +0 -863
  97. package/dist/chunk-UMBBTNQN.mjs +0 -787
  98. package/dist/chunk-V2UPXL7L.mjs +0 -842
  99. package/dist/chunk-VODCPPET.mjs +0 -1292
  100. package/dist/chunk-W6UGMKRV.mjs +0 -1310
  101. package/dist/chunk-WGH4TGZ3.mjs +0 -1288
  102. package/dist/chunk-WTBDNCEN.mjs +0 -1352
  103. package/dist/chunk-XVW5DKJQ.mjs +0 -1619
  104. package/dist/chunk-YCDCIOJN.mjs +0 -842
  105. package/dist/chunk-YEHXYHGY.mjs +0 -1497
  106. package/dist/chunk-YHHXE2JX.mjs +0 -912
  107. package/dist/chunk-ZB6UK276.mjs +0 -662
  108. package/dist/chunk-ZG3KFSD3.mjs +0 -1142
  109. package/dist/cli.d.ts.map +0 -1
  110. package/dist/cli.js.map +0 -1
  111. package/dist/index.d.ts.map +0 -1
  112. package/dist/index.js.map +0 -1
  113. package/dist/scoring.d.ts +0 -12
  114. package/dist/scoring.d.ts.map +0 -1
  115. package/dist/scoring.js +0 -110
  116. package/dist/scoring.js.map +0 -1
  117. package/dist/types.d.ts +0 -53
  118. package/dist/types.d.ts.map +0 -1
  119. package/dist/types.js +0 -2
  120. package/dist/types.js.map +0 -1
  121. package/dist/utils/ast-parser.d.ts +0 -46
  122. package/dist/utils/ast-parser.d.ts.map +0 -1
  123. package/dist/utils/ast-parser.js +0 -157
  124. package/dist/utils/ast-parser.js.map +0 -1
  125. package/dist/utils/config-loader.d.ts +0 -19
  126. package/dist/utils/config-loader.d.ts.map +0 -1
  127. package/dist/utils/config-loader.js +0 -31
  128. package/dist/utils/config-loader.js.map +0 -1
  129. package/dist/utils/context-detector.d.ts +0 -40
  130. package/dist/utils/context-detector.d.ts.map +0 -1
  131. package/dist/utils/context-detector.js +0 -225
  132. package/dist/utils/context-detector.js.map +0 -1
  133. package/dist/utils/scope-tracker.d.ts +0 -87
  134. package/dist/utils/scope-tracker.d.ts.map +0 -1
  135. package/dist/utils/scope-tracker.js +0 -161
  136. package/dist/utils/scope-tracker.js.map +0 -1
@@ -1,118 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { calculateConsistencyScore } from '../scoring';
3
- describe('Consistency Scoring', () => {
4
- describe('calculateConsistencyScore', () => {
5
- it('should return perfect score for no issues', () => {
6
- const result = calculateConsistencyScore([], 100);
7
- expect(result.score).toBe(100);
8
- expect(result.toolName).toBe('consistency');
9
- expect(result.rawMetrics.totalIssues).toBe(0);
10
- expect(result.recommendations).toHaveLength(0);
11
- });
12
- it('should penalize high issue density', () => {
13
- const issues = Array(50).fill({
14
- severity: 'minor',
15
- category: 'naming',
16
- message: 'Test issue',
17
- location: { file: 'test.ts', line: 1 },
18
- });
19
- // 50 issues / 10 files = 5 issues per file
20
- // densityPenalty = min(50, 5 * 15) = 50
21
- const result = calculateConsistencyScore(issues, 10);
22
- expect(result.score).toBeLessThan(60);
23
- expect(result.rawMetrics.issuesPerFile).toBe(5);
24
- });
25
- it('should heavily penalize critical issues', () => {
26
- const issues = [
27
- {
28
- severity: 'critical',
29
- category: 'naming',
30
- message: 'Critical naming issue',
31
- location: { file: 'test.ts', line: 1 },
32
- },
33
- {
34
- severity: 'critical',
35
- category: 'naming',
36
- message: 'Another critical issue',
37
- location: { file: 'test.ts', line: 10 },
38
- },
39
- ];
40
- const result = calculateConsistencyScore(issues, 10);
41
- // 2 issues / 10 files = 0.2 issues/file → densityPenalty = 3
42
- // weightedCount = 2*10 = 20, avgWeighted = 2.0 → severityPenalty = 4
43
- // score = 100 - 3 - 4 = 93
44
- expect(result.score).toBe(93);
45
- expect(result.rawMetrics.criticalIssues).toBe(2);
46
- expect(result.factors.some(f => f.name === 'Critical Issues')).toBe(true);
47
- expect(result.recommendations.some(r => r.priority === 'high')).toBe(true);
48
- });
49
- it('should apply weighted severity penalties', () => {
50
- const issues = [
51
- ...Array(5).fill({ severity: 'critical' }),
52
- ...Array(10).fill({ severity: 'major' }),
53
- ...Array(20).fill({ severity: 'minor' }),
54
- ];
55
- const result = calculateConsistencyScore(issues.map((i, idx) => ({
56
- ...i,
57
- category: 'naming',
58
- message: 'test',
59
- location: { file: 'test.ts', line: idx },
60
- })), 50);
61
- expect(result.rawMetrics.criticalIssues).toBe(5);
62
- expect(result.rawMetrics.majorIssues).toBe(10);
63
- expect(result.rawMetrics.minorIssues).toBe(20);
64
- // 35 issues / 50 files = 0.7 issues/file → densityPenalty = 10.5
65
- // weightedCount = 50+30+10 = 90, avgWeighted = 1.8 → severityPenalty = 3.6
66
- // score = 100 - 10.5 - 3.6 = 85.9 → 86
67
- expect(result.score).toBe(86);
68
- });
69
- it('should generate appropriate recommendations', () => {
70
- const issues = [
71
- ...Array(3).fill({ severity: 'critical', category: 'naming' }),
72
- ...Array(10).fill({ severity: 'major', category: 'patterns' }),
73
- ];
74
- const result = calculateConsistencyScore(issues.map((i, idx) => ({
75
- ...i,
76
- message: 'test',
77
- location: { file: 'test.ts', line: idx },
78
- })), 5);
79
- expect(result.recommendations.length).toBeGreaterThan(0);
80
- expect(result.recommendations.some(r => r.action.includes('critical'))).toBe(true);
81
- expect(result.recommendations.some(r => r.action.includes('naming'))).toBe(true);
82
- });
83
- it('should handle edge case of zero files', () => {
84
- const issues = [];
85
- const result = calculateConsistencyScore(issues, 0);
86
- expect(result.score).toBe(100);
87
- expect(result.rawMetrics.issuesPerFile).toBe(0);
88
- });
89
- it('should recommend linter for many minor issues', () => {
90
- const issues = Array(30).fill({
91
- severity: 'minor',
92
- category: 'naming',
93
- message: 'Minor style issue',
94
- location: { file: 'test.ts', line: 1 },
95
- });
96
- const result = calculateConsistencyScore(issues, 10);
97
- expect(result.recommendations.some(r => r.action.includes('linter'))).toBe(true);
98
- });
99
- it('should combine all penalty types', () => {
100
- const issues = [
101
- ...Array(10).fill({ severity: 'critical', category: 'naming' }),
102
- ...Array(20).fill({ severity: 'major', category: 'patterns' }),
103
- ...Array(40).fill({ severity: 'minor', category: 'naming' }),
104
- ];
105
- const result = calculateConsistencyScore(issues.map((i, idx) => ({
106
- ...i,
107
- message: 'test',
108
- location: { file: 'test.ts', line: idx },
109
- })), 10);
110
- // 70 issues / 10 files = 7 issues/file
111
- // High density + critical issues + weighted severity
112
- expect(result.score).toBeLessThan(30);
113
- expect(result.factors.length).toBeGreaterThan(2);
114
- expect(result.recommendations.length).toBeGreaterThan(0);
115
- });
116
- });
117
- });
118
- //# sourceMappingURL=scoring.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scoring.test.js","sourceRoot":"","sources":["../../src/__tests__/scoring.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { ConsistencyOptions, ConsistencyReport } from './types';
2
- /**
3
- * Main consistency analyzer that orchestrates all analysis types
4
- * Supports: TypeScript, JavaScript, Python
5
- */
6
- export declare function analyzeConsistency(options: ConsistencyOptions): Promise<ConsistencyReport>;
7
- //# sourceMappingURL=analyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAoB,MAAM,SAAS,CAAC;AAKvF;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAyI5B"}
package/dist/analyzer.js DELETED
@@ -1,160 +0,0 @@
1
- import { scanFiles } from '@aiready/core';
2
- import { analyzeNamingAST } from './analyzers/naming-ast';
3
- import { analyzePythonNaming } from './analyzers/naming-python';
4
- import { analyzePatterns } from './analyzers/patterns';
5
- /**
6
- * Main consistency analyzer that orchestrates all analysis types
7
- * Supports: TypeScript, JavaScript, Python
8
- */
9
- export async function analyzeConsistency(options) {
10
- const { checkNaming = true, checkPatterns = true, checkArchitecture = false, // Not implemented yet
11
- minSeverity = 'info', ...scanOptions } = options;
12
- // Scan files
13
- const filePaths = await scanFiles(scanOptions);
14
- // Separate files by language
15
- const tsJsFiles = filePaths.filter(f => /\.(ts|tsx|js|jsx)$/i.test(f));
16
- const pythonFiles = filePaths.filter(f => /\.py$/i.test(f));
17
- // Collect issues by category - now handles multiple languages
18
- let namingIssues = [];
19
- if (checkNaming) {
20
- const tsJsNamingIssues = tsJsFiles.length > 0 ? await analyzeNamingAST(tsJsFiles) : [];
21
- const pythonNamingIssues = pythonFiles.length > 0 ? await analyzePythonNaming(pythonFiles) : [];
22
- namingIssues = [...tsJsNamingIssues, ...pythonNamingIssues];
23
- }
24
- const patternIssues = checkPatterns ? await analyzePatterns(filePaths) : [];
25
- // Convert to AnalysisResult format
26
- const results = [];
27
- const fileIssuesMap = new Map();
28
- // Process naming issues
29
- for (const issue of namingIssues) {
30
- if (!shouldIncludeSeverity(issue.severity, minSeverity)) {
31
- continue;
32
- }
33
- const consistencyIssue = {
34
- type: issue.type === 'convention-mix' ? 'naming-inconsistency' : 'naming-quality',
35
- category: 'naming',
36
- severity: issue.severity,
37
- message: `${issue.type}: ${issue.identifier}`,
38
- location: {
39
- file: issue.file,
40
- line: issue.line,
41
- column: issue.column
42
- },
43
- suggestion: issue.suggestion
44
- };
45
- if (!fileIssuesMap.has(issue.file)) {
46
- fileIssuesMap.set(issue.file, []);
47
- }
48
- fileIssuesMap.get(issue.file).push(consistencyIssue);
49
- }
50
- // Process pattern issues
51
- for (const issue of patternIssues) {
52
- if (!shouldIncludeSeverity(issue.severity, minSeverity)) {
53
- continue;
54
- }
55
- const consistencyIssue = {
56
- type: 'pattern-inconsistency',
57
- category: 'patterns',
58
- severity: issue.severity,
59
- message: issue.description,
60
- location: {
61
- file: issue.files[0] || 'multiple files',
62
- line: 1
63
- },
64
- examples: issue.examples,
65
- suggestion: `Standardize ${issue.type} patterns across ${issue.files.length} files`
66
- };
67
- // Add to first file in the pattern
68
- const firstFile = issue.files[0];
69
- if (firstFile && !fileIssuesMap.has(firstFile)) {
70
- fileIssuesMap.set(firstFile, []);
71
- }
72
- if (firstFile) {
73
- fileIssuesMap.get(firstFile).push(consistencyIssue);
74
- }
75
- }
76
- // Convert to AnalysisResult format
77
- for (const [fileName, issues] of fileIssuesMap) {
78
- results.push({
79
- fileName,
80
- issues: issues,
81
- metrics: {
82
- consistencyScore: calculateConsistencyScore(issues)
83
- }
84
- });
85
- }
86
- // Sort results by severity first, then by issue count per file
87
- results.sort((fileResultA, fileResultB) => {
88
- const severityOrder = { critical: 0, major: 1, minor: 2, info: 3 };
89
- // Get highest severity in each file
90
- const maxSeverityA = Math.min(...fileResultA.issues.map(i => severityOrder[i.severity]));
91
- const maxSeverityB = Math.min(...fileResultB.issues.map(i => severityOrder[i.severity]));
92
- // Sort by severity first
93
- if (maxSeverityA !== maxSeverityB) {
94
- return maxSeverityA - maxSeverityB;
95
- }
96
- // Then by issue count (descending)
97
- return fileResultB.issues.length - fileResultA.issues.length;
98
- });
99
- // Generate recommendations
100
- const recommendations = generateRecommendations(namingIssues, patternIssues);
101
- // Compute filtered counts (respecting minSeverity) to report accurate summary
102
- const namingCountFiltered = namingIssues.filter(i => shouldIncludeSeverity(i.severity, minSeverity)).length;
103
- const patternCountFiltered = patternIssues.filter(i => shouldIncludeSeverity(i.severity, minSeverity)).length;
104
- // Detect naming conventions (TODO: re-implement for AST version)
105
- // const conventionAnalysis = detectNamingConventions(filePaths, namingIssues);
106
- return {
107
- summary: {
108
- totalIssues: namingCountFiltered + patternCountFiltered,
109
- namingIssues: namingCountFiltered,
110
- patternIssues: patternCountFiltered,
111
- architectureIssues: 0,
112
- filesAnalyzed: filePaths.length
113
- },
114
- results,
115
- recommendations
116
- };
117
- }
118
- function shouldIncludeSeverity(severity, minSeverity) {
119
- const severityLevels = { info: 0, minor: 1, major: 2, critical: 3 };
120
- return severityLevels[severity] >= severityLevels[minSeverity];
121
- }
122
- function calculateConsistencyScore(issues) {
123
- // Higher score = more consistent (fewer issues)
124
- const weights = { critical: 10, major: 5, minor: 2, info: 1 };
125
- const totalWeight = issues.reduce((sum, issue) => sum + weights[issue.severity], 0);
126
- // Score from 0-1, where 1 is perfect
127
- return Math.max(0, 1 - totalWeight / 100);
128
- }
129
- function generateRecommendations(namingIssues, patternIssues) {
130
- const recommendations = [];
131
- if (namingIssues.length > 0) {
132
- const conventionMixCount = namingIssues.filter(i => i.type === 'convention-mix').length;
133
- if (conventionMixCount > 0) {
134
- recommendations.push(`Standardize naming conventions: Found ${conventionMixCount} snake_case variables in TypeScript/JavaScript (use camelCase)`);
135
- }
136
- const poorNamingCount = namingIssues.filter(i => i.type === 'poor-naming').length;
137
- if (poorNamingCount > 0) {
138
- recommendations.push(`Improve variable naming: Found ${poorNamingCount} single-letter or unclear variable names`);
139
- }
140
- }
141
- if (patternIssues.length > 0) {
142
- const errorHandlingIssues = patternIssues.filter(i => i.type === 'error-handling');
143
- if (errorHandlingIssues.length > 0) {
144
- recommendations.push('Standardize error handling strategy across the codebase (prefer try-catch with typed errors)');
145
- }
146
- const asyncIssues = patternIssues.filter(i => i.type === 'async-style');
147
- if (asyncIssues.length > 0) {
148
- recommendations.push('Use async/await consistently instead of mixing with promise chains or callbacks');
149
- }
150
- const importIssues = patternIssues.filter(i => i.type === 'import-style');
151
- if (importIssues.length > 0) {
152
- recommendations.push('Use ES modules consistently across the project (avoid mixing with CommonJS)');
153
- }
154
- }
155
- if (recommendations.length === 0) {
156
- recommendations.push('No major consistency issues found! Your codebase follows good practices.');
157
- }
158
- return recommendations;
159
- }
160
- //# sourceMappingURL=analyzer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { NamingIssue } from '../types';
2
- /**
3
- * AST-based naming analyzer
4
- * Only supports TypeScript/JavaScript files (.ts, .tsx, .js, .jsx)
5
- */
6
- export declare function analyzeNamingAST(files: string[]): Promise<NamingIssue[]>;
7
- //# sourceMappingURL=naming-ast.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"naming-ast.d.ts","sourceRoot":"","sources":["../../src/analyzers/naming-ast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAmB5C;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA8B9E"}
@@ -1,253 +0,0 @@
1
- import { parseFile, traverseAST, getFunctionName, getLineNumber, isCoverageContext, isLoopStatement, } from '../utils/ast-parser';
2
- import { ScopeTracker } from '../utils/scope-tracker';
3
- import { buildCodeContext, adjustSeverity, isAcceptableInContext, calculateComplexity, } from '../utils/context-detector';
4
- import { loadNamingConfig } from '../utils/config-loader';
5
- /**
6
- * AST-based naming analyzer
7
- * Only supports TypeScript/JavaScript files (.ts, .tsx, .js, .jsx)
8
- */
9
- export async function analyzeNamingAST(files) {
10
- const issues = [];
11
- // Load and merge configuration
12
- const { allAbbreviations, allShortWords, disabledChecks } = await loadNamingConfig(files);
13
- // Filter to only JS/TS files that the TypeScript parser can handle
14
- const supportedFiles = files.filter(file => /\.(js|jsx|ts|tsx)$/i.test(file));
15
- for (const file of supportedFiles) {
16
- try {
17
- const ast = parseFile(file);
18
- if (!ast)
19
- continue; // Skip files that fail to parse
20
- const fileIssues = analyzeFileNamingAST(file, ast, allAbbreviations, allShortWords, disabledChecks);
21
- issues.push(...fileIssues);
22
- }
23
- catch (error) {
24
- console.warn(`Skipping ${file} due to parse error:`, error);
25
- }
26
- }
27
- return issues;
28
- }
29
- function analyzeFileNamingAST(file, ast, allAbbreviations, allShortWords, disabledChecks) {
30
- const issues = [];
31
- const scopeTracker = new ScopeTracker(ast);
32
- const context = buildCodeContext(file, ast);
33
- const ancestors = [];
34
- // First pass: Build scope tree and track all variables
35
- traverseAST(ast, {
36
- enter: (node, parent) => {
37
- ancestors.push(node);
38
- // Enter scopes
39
- if (node.type === 'FunctionDeclaration' || node.type === 'FunctionExpression' || node.type === 'ArrowFunctionExpression') {
40
- scopeTracker.enterScope('function', node);
41
- // Track parameters
42
- if ('params' in node) {
43
- for (const param of node.params) {
44
- if (param.type === 'Identifier') {
45
- scopeTracker.declareVariable(param.name, param, getLineNumber(param), {
46
- isParameter: true,
47
- });
48
- }
49
- else if (param.type === 'ObjectPattern' || param.type === 'ArrayPattern') {
50
- // Handle destructured parameters
51
- extractIdentifiersFromPattern(param, scopeTracker, true);
52
- }
53
- }
54
- }
55
- }
56
- else if (node.type === 'BlockStatement') {
57
- scopeTracker.enterScope('block', node);
58
- }
59
- else if (isLoopStatement(node)) {
60
- scopeTracker.enterScope('loop', node);
61
- }
62
- else if (node.type === 'ClassDeclaration') {
63
- scopeTracker.enterScope('class', node);
64
- }
65
- // Track variable declarations
66
- if (node.type === 'VariableDeclarator') {
67
- if (node.id.type === 'Identifier') {
68
- const isInCoverage = isCoverageContext(node, ancestors);
69
- scopeTracker.declareVariable(node.id.name, node.id, getLineNumber(node.id), {
70
- type: ('typeAnnotation' in node.id) ? node.id.typeAnnotation : null,
71
- isDestructured: false,
72
- isLoopVariable: scopeTracker.getCurrentScopeType() === 'loop',
73
- });
74
- }
75
- else if (node.id.type === 'ObjectPattern' || node.id.type === 'ArrayPattern') {
76
- extractIdentifiersFromPattern(node.id, scopeTracker, false, ancestors);
77
- }
78
- }
79
- // Track references
80
- if (node.type === 'Identifier' && parent) {
81
- // Only count as reference if it's not a declaration
82
- if (parent.type !== 'VariableDeclarator' || parent.id !== node) {
83
- if (parent.type !== 'FunctionDeclaration' || parent.id !== node) {
84
- scopeTracker.addReference(node.name, node);
85
- }
86
- }
87
- }
88
- },
89
- leave: (node) => {
90
- ancestors.pop();
91
- // Exit scopes
92
- if (node.type === 'FunctionDeclaration' ||
93
- node.type === 'FunctionExpression' ||
94
- node.type === 'ArrowFunctionExpression' ||
95
- node.type === 'BlockStatement' ||
96
- isLoopStatement(node) ||
97
- node.type === 'ClassDeclaration') {
98
- scopeTracker.exitScope();
99
- }
100
- },
101
- });
102
- // Second pass: Analyze all variables
103
- const allVariables = scopeTracker.getAllVariables();
104
- for (const varInfo of allVariables) {
105
- const name = varInfo.name;
106
- const line = varInfo.declarationLine;
107
- // Skip if checks are disabled
108
- if (disabledChecks.has('single-letter') && name.length === 1)
109
- continue;
110
- if (disabledChecks.has('abbreviation') && name.length <= 3)
111
- continue;
112
- // Check coverage context
113
- const isInCoverage = ['s', 'b', 'f', 'l'].includes(name) && varInfo.isDestructured;
114
- if (isInCoverage)
115
- continue;
116
- // Check if acceptable in context
117
- const functionComplexity = varInfo.node.type === 'Identifier' && 'parent' in varInfo.node
118
- ? calculateComplexity(varInfo.node)
119
- : context.complexity;
120
- if (isAcceptableInContext(name, context, {
121
- isLoopVariable: varInfo.isLoopVariable || allAbbreviations.has(name),
122
- isParameter: varInfo.isParameter,
123
- isDestructured: varInfo.isDestructured,
124
- complexity: functionComplexity,
125
- })) {
126
- continue;
127
- }
128
- // Single letter check
129
- if (name.length === 1 && !allAbbreviations.has(name) && !allShortWords.has(name)) {
130
- // Check if short-lived
131
- const isShortLived = scopeTracker.isShortLived(varInfo, 5);
132
- if (!isShortLived) {
133
- issues.push({
134
- file,
135
- line,
136
- type: 'poor-naming',
137
- identifier: name,
138
- severity: adjustSeverity('minor', context, 'poor-naming'),
139
- suggestion: `Use descriptive variable name instead of single letter '${name}'`,
140
- });
141
- }
142
- continue;
143
- }
144
- // Abbreviation check (2-3 letters)
145
- if (name.length >= 2 && name.length <= 3) {
146
- if (!allShortWords.has(name.toLowerCase()) && !allAbbreviations.has(name.toLowerCase())) {
147
- // Check if short-lived for abbreviations too
148
- const isShortLived = scopeTracker.isShortLived(varInfo, 5);
149
- if (!isShortLived) {
150
- issues.push({
151
- file,
152
- line,
153
- type: 'abbreviation',
154
- identifier: name,
155
- severity: adjustSeverity('info', context, 'abbreviation'),
156
- suggestion: `Consider using full word instead of abbreviation '${name}'`,
157
- });
158
- }
159
- }
160
- continue;
161
- }
162
- // Snake_case check for TypeScript/JavaScript
163
- if (!disabledChecks.has('convention-mix') && file.match(/\.(ts|tsx|js|jsx)$/)) {
164
- if (name.includes('_') && !name.startsWith('_') && name.toLowerCase() === name) {
165
- const camelCase = name.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
166
- issues.push({
167
- file,
168
- line,
169
- type: 'convention-mix',
170
- identifier: name,
171
- severity: adjustSeverity('minor', context, 'convention-mix'),
172
- suggestion: `Use camelCase '${camelCase}' instead of snake_case in TypeScript/JavaScript`,
173
- });
174
- }
175
- }
176
- }
177
- // Third pass: Analyze function names
178
- if (!disabledChecks.has('unclear')) {
179
- traverseAST(ast, {
180
- enter: (node) => {
181
- if (node.type === 'FunctionDeclaration' || node.type === 'MethodDefinition') {
182
- const name = getFunctionName(node);
183
- if (!name)
184
- return;
185
- const line = getLineNumber(node);
186
- // Skip entry points
187
- if (['main', 'init', 'setup', 'bootstrap'].includes(name))
188
- return;
189
- // Check for action verbs and patterns
190
- const hasActionVerb = name.match(/^(get|set|is|has|can|should|create|update|delete|fetch|load|save|process|handle|validate|check|find|search|filter|map|reduce|make|do|run|start|stop|build|parse|format|render|calculate|compute|generate|transform|convert|normalize|sanitize|encode|decode|compress|extract|merge|split|join|sort|compare|test|verify|ensure|apply|execute|invoke|call|emit|dispatch|trigger|listen|subscribe|unsubscribe|add|remove|clear|reset|toggle|enable|disable|open|close|connect|disconnect|send|receive|read|write|import|export|register|unregister|mount|unmount|track|store|persist|upsert|derive|classify|combine|discover|activate|require|assert|expect|mask|escape|sign|put|list|complete|page|safe|mock|pick|pluralize|text|count|detect|select)/);
191
- const isFactoryPattern = name.match(/(Factory|Builder|Creator|Generator|Provider|Adapter|Mock)$/);
192
- const isEventHandler = name.match(/^on[A-Z]/);
193
- const isDescriptiveLong = name.length > 15;
194
- const isReactHook = name.match(/^use[A-Z]/);
195
- const isHelperPattern = name.match(/^(to|from|with|without|for|as|into)\w+/) ||
196
- name.match(/^\w+(To|From|With|Without|For|As|Into)\w*$/); // xForY, xToY patterns
197
- const isUtilityName = ['cn', 'proxy', 'sitemap', 'robots', 'gtag'].includes(name);
198
- const isLanguageKeyword = ['constructor', 'toString', 'valueOf', 'toJSON'].includes(name);
199
- const isFrameworkPattern = name.match(/^(goto|fill|click|select|submit|wait|expect)\w*/); // Page Object Model, test framework patterns
200
- // Descriptive patterns: countX, totalX, etc.
201
- const isDescriptivePattern = name.match(/^(default|total|count|sum|avg|max|min|initial|current|previous|next)\w+/) ||
202
- name.match(/\w+(Count|Total|Sum|Average|List|Map|Set|Config|Settings|Options|Props|Data|Info|Details|State|Status|Response|Result)$/);
203
- // Count capital letters for compound detection
204
- const capitalCount = (name.match(/[A-Z]/g) || []).length;
205
- const isCompoundWord = capitalCount >= 3; // daysSinceLastCommit has 4 capitals
206
- if (!hasActionVerb && !isFactoryPattern && !isEventHandler && !isDescriptiveLong && !isReactHook && !isHelperPattern && !isUtilityName && !isDescriptivePattern && !isCompoundWord && !isLanguageKeyword && !isFrameworkPattern) {
207
- issues.push({
208
- file,
209
- line,
210
- type: 'unclear',
211
- identifier: name,
212
- severity: adjustSeverity('info', context, 'unclear'),
213
- suggestion: `Function '${name}' should start with an action verb (get, set, create, etc.)`,
214
- });
215
- }
216
- }
217
- },
218
- });
219
- }
220
- return issues;
221
- }
222
- /**
223
- * Extract all identifiers from a destructuring pattern
224
- */
225
- function extractIdentifiersFromPattern(pattern, scopeTracker, isParameter, ancestors) {
226
- if (pattern.type === 'ObjectPattern') {
227
- for (const prop of pattern.properties) {
228
- if (prop.type === 'Property' && prop.value.type === 'Identifier') {
229
- scopeTracker.declareVariable(prop.value.name, prop.value, getLineNumber(prop.value), {
230
- isParameter,
231
- isDestructured: true,
232
- });
233
- }
234
- else if (prop.type === 'RestElement' && prop.argument.type === 'Identifier') {
235
- scopeTracker.declareVariable(prop.argument.name, prop.argument, getLineNumber(prop.argument), {
236
- isParameter,
237
- isDestructured: true,
238
- });
239
- }
240
- }
241
- }
242
- else if (pattern.type === 'ArrayPattern') {
243
- for (const element of pattern.elements) {
244
- if (element && element.type === 'Identifier') {
245
- scopeTracker.declareVariable(element.name, element, getLineNumber(element), {
246
- isParameter,
247
- isDestructured: true,
248
- });
249
- }
250
- }
251
- }
252
- }
253
- //# sourceMappingURL=naming-ast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"naming-ast.js","sourceRoot":"","sources":["../../src/analyzers/naming-ast.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Shared constants and utilities for naming analysis
3
- * Extracted from naming.ts and naming-ast.ts to reduce duplication
4
- */
5
- export declare const COMMON_SHORT_WORDS: Set<string>;
6
- export declare const ACCEPTABLE_ABBREVIATIONS: Set<string>;
7
- /**
8
- * Convert snake_case to camelCase
9
- */
10
- export declare function snakeCaseToCamelCase(str: string): string;
11
- /**
12
- * Detect naming convention patterns across the codebase
13
- */
14
- export declare function detectNamingConventions(files: string[], allIssues: Array<{
15
- type: string;
16
- [key: string]: any;
17
- }>): {
18
- dominantConvention: 'camelCase' | 'snake_case' | 'PascalCase' | 'mixed';
19
- conventionScore: number;
20
- };
21
- //# sourceMappingURL=naming-constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"naming-constants.d.ts","sourceRoot":"","sources":["../../src/analyzers/naming-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,kBAAkB,aAiB7B,CAAC;AAGH,eAAO,MAAM,wBAAwB,aAmDnC,CAAC;AAEH;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC,GACrD;IACD,kBAAkB,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB,CAWA"}