@stackguide/mcp-server 3.1.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -2
- package/dist/config/types.d.ts +1 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/handlers/analyze.d.ts +11 -0
- package/dist/handlers/analyze.d.ts.map +1 -0
- package/dist/handlers/analyze.js +274 -0
- package/dist/handlers/analyze.js.map +1 -0
- package/dist/handlers/index.d.ts +1 -0
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers/index.js +1 -0
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/setup.d.ts +1 -0
- package/dist/handlers/setup.d.ts.map +1 -1
- package/dist/handlers/setup.js +42 -0
- package/dist/handlers/setup.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/services/codeAnalyzer.d.ts +5 -1
- package/dist/services/codeAnalyzer.d.ts.map +1 -1
- package/dist/services/codeAnalyzer.js +39 -2
- package/dist/services/codeAnalyzer.js.map +1 -1
- package/dist/services/intelligence/configGenerator.d.ts +28 -0
- package/dist/services/intelligence/configGenerator.d.ts.map +1 -0
- package/dist/services/intelligence/configGenerator.js +404 -0
- package/dist/services/intelligence/configGenerator.js.map +1 -0
- package/dist/services/intelligence/dependencyAdvisor.d.ts +24 -0
- package/dist/services/intelligence/dependencyAdvisor.d.ts.map +1 -0
- package/dist/services/intelligence/dependencyAdvisor.js +404 -0
- package/dist/services/intelligence/dependencyAdvisor.js.map +1 -0
- package/dist/services/intelligence/index.d.ts +12 -0
- package/dist/services/intelligence/index.d.ts.map +1 -0
- package/dist/services/intelligence/index.js +16 -0
- package/dist/services/intelligence/index.js.map +1 -0
- package/dist/services/intelligence/projectIntelligence.d.ts +26 -0
- package/dist/services/intelligence/projectIntelligence.d.ts.map +1 -0
- package/dist/services/intelligence/projectIntelligence.js +344 -0
- package/dist/services/intelligence/projectIntelligence.js.map +1 -0
- package/dist/services/intelligence/structureAnalyzer.d.ts +27 -0
- package/dist/services/intelligence/structureAnalyzer.d.ts.map +1 -0
- package/dist/services/intelligence/structureAnalyzer.js +286 -0
- package/dist/services/intelligence/structureAnalyzer.js.map +1 -0
- package/dist/services/intelligence/templates.d.ts +22 -0
- package/dist/services/intelligence/templates.d.ts.map +1 -0
- package/dist/services/intelligence/templates.js +521 -0
- package/dist/services/intelligence/templates.js.map +1 -0
- package/dist/services/intelligence/types.d.ts +222 -0
- package/dist/services/intelligence/types.d.ts.map +1 -0
- package/dist/services/intelligence/types.js +7 -0
- package/dist/services/intelligence/types.js.map +1 -0
- package/dist/services/parsers/baseParser.d.ts +44 -0
- package/dist/services/parsers/baseParser.d.ts.map +1 -0
- package/dist/services/parsers/baseParser.js +177 -0
- package/dist/services/parsers/baseParser.js.map +1 -0
- package/dist/services/parsers/goParser.d.ts +28 -0
- package/dist/services/parsers/goParser.d.ts.map +1 -0
- package/dist/services/parsers/goParser.js +590 -0
- package/dist/services/parsers/goParser.js.map +1 -0
- package/dist/services/parsers/index.d.ts +62 -0
- package/dist/services/parsers/index.d.ts.map +1 -0
- package/dist/services/parsers/index.js +121 -0
- package/dist/services/parsers/index.js.map +1 -0
- package/dist/services/parsers/pythonParser.d.ts +28 -0
- package/dist/services/parsers/pythonParser.d.ts.map +1 -0
- package/dist/services/parsers/pythonParser.js +663 -0
- package/dist/services/parsers/pythonParser.js.map +1 -0
- package/dist/services/parsers/rustParser.d.ts +28 -0
- package/dist/services/parsers/rustParser.d.ts.map +1 -0
- package/dist/services/parsers/rustParser.js +654 -0
- package/dist/services/parsers/rustParser.js.map +1 -0
- package/dist/services/parsers/types.d.ts +241 -0
- package/dist/services/parsers/types.d.ts.map +1 -0
- package/dist/services/parsers/types.js +47 -0
- package/dist/services/parsers/types.js.map +1 -0
- package/dist/tools/definitions.d.ts +87 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +34 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/utils/validation.d.ts +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for Project Intelligence System
|
|
3
|
+
* Auto-Configuration Intelligence - Phase 4
|
|
4
|
+
* @version 3.3.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Project structure analysis result
|
|
8
|
+
*/
|
|
9
|
+
export interface StructureAnalysis {
|
|
10
|
+
/** Root directory of the project */
|
|
11
|
+
rootPath: string;
|
|
12
|
+
/** Detected project type */
|
|
13
|
+
projectType: string;
|
|
14
|
+
/** Overall structure health score (0-100) */
|
|
15
|
+
structureScore: number;
|
|
16
|
+
/** Existing directories */
|
|
17
|
+
existingDirs: string[];
|
|
18
|
+
/** Missing recommended directories */
|
|
19
|
+
missingDirs: DirectorySuggestion[];
|
|
20
|
+
/** Existing key files */
|
|
21
|
+
existingFiles: string[];
|
|
22
|
+
/** Missing recommended files */
|
|
23
|
+
missingFiles: FileSuggestion[];
|
|
24
|
+
/** Structure improvements */
|
|
25
|
+
improvements: StructureImprovement[];
|
|
26
|
+
}
|
|
27
|
+
export interface DirectorySuggestion {
|
|
28
|
+
path: string;
|
|
29
|
+
purpose: string;
|
|
30
|
+
priority: 'high' | 'medium' | 'low';
|
|
31
|
+
template?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface FileSuggestion {
|
|
34
|
+
path: string;
|
|
35
|
+
purpose: string;
|
|
36
|
+
priority: 'high' | 'medium' | 'low';
|
|
37
|
+
template?: string;
|
|
38
|
+
content?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface StructureImprovement {
|
|
41
|
+
type: 'reorganize' | 'create' | 'rename' | 'move';
|
|
42
|
+
description: string;
|
|
43
|
+
priority: 'high' | 'medium' | 'low';
|
|
44
|
+
from?: string;
|
|
45
|
+
to?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Configuration analysis and generation
|
|
49
|
+
*/
|
|
50
|
+
export interface ConfigAnalysis {
|
|
51
|
+
/** Existing configuration files */
|
|
52
|
+
existingConfigs: ConfigFile[];
|
|
53
|
+
/** Recommended configurations */
|
|
54
|
+
recommendedConfigs: ConfigRecommendation[];
|
|
55
|
+
/** Configuration issues found */
|
|
56
|
+
issues: ConfigIssue[];
|
|
57
|
+
/** Overall config health score */
|
|
58
|
+
configScore: number;
|
|
59
|
+
}
|
|
60
|
+
export interface ConfigFile {
|
|
61
|
+
path: string;
|
|
62
|
+
type: ConfigType;
|
|
63
|
+
isValid: boolean;
|
|
64
|
+
settings: Record<string, unknown>;
|
|
65
|
+
issues?: string[];
|
|
66
|
+
}
|
|
67
|
+
export type ConfigType = 'eslint' | 'prettier' | 'tsconfig' | 'jest' | 'vitest' | 'babel' | 'webpack' | 'vite' | 'rollup' | 'docker' | 'github-actions' | 'editorconfig' | 'gitignore' | 'env' | 'package-json' | 'pyproject' | 'cargo' | 'go-mod' | 'other';
|
|
68
|
+
export interface ConfigRecommendation {
|
|
69
|
+
type: ConfigType;
|
|
70
|
+
filename: string;
|
|
71
|
+
description: string;
|
|
72
|
+
priority: 'critical' | 'high' | 'medium' | 'low';
|
|
73
|
+
suggestedContent: string;
|
|
74
|
+
reason: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ConfigIssue {
|
|
77
|
+
file: string;
|
|
78
|
+
type: ConfigType;
|
|
79
|
+
severity: 'error' | 'warning' | 'info';
|
|
80
|
+
message: string;
|
|
81
|
+
suggestion: string;
|
|
82
|
+
autoFixable: boolean;
|
|
83
|
+
fix?: ConfigFix;
|
|
84
|
+
}
|
|
85
|
+
export interface ConfigFix {
|
|
86
|
+
type: 'add' | 'remove' | 'modify';
|
|
87
|
+
path: string;
|
|
88
|
+
key?: string;
|
|
89
|
+
value?: unknown;
|
|
90
|
+
description: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Dependency analysis
|
|
94
|
+
*/
|
|
95
|
+
export interface DependencyAnalysis {
|
|
96
|
+
/** Package manager detected */
|
|
97
|
+
packageManager: 'npm' | 'yarn' | 'pnpm' | 'pip' | 'poetry' | 'cargo' | 'go' | 'bundler' | 'composer' | 'unknown';
|
|
98
|
+
/** Total dependencies count */
|
|
99
|
+
totalDependencies: number;
|
|
100
|
+
/** Direct dependencies */
|
|
101
|
+
directDependencies: DependencyInfo[];
|
|
102
|
+
/** Dev dependencies */
|
|
103
|
+
devDependencies: DependencyInfo[];
|
|
104
|
+
/** Outdated packages */
|
|
105
|
+
outdatedPackages: OutdatedPackage[];
|
|
106
|
+
/** Security vulnerabilities (if detectable) */
|
|
107
|
+
vulnerabilities: VulnerabilityInfo[];
|
|
108
|
+
/** Missing recommended dependencies */
|
|
109
|
+
recommendedAdditions: DependencyRecommendation[];
|
|
110
|
+
/** Unnecessary dependencies */
|
|
111
|
+
unnecessaryDependencies: string[];
|
|
112
|
+
/** Dependency health score */
|
|
113
|
+
dependencyScore: number;
|
|
114
|
+
}
|
|
115
|
+
export interface DependencyInfo {
|
|
116
|
+
name: string;
|
|
117
|
+
version: string;
|
|
118
|
+
type: 'production' | 'dev' | 'peer' | 'optional';
|
|
119
|
+
isLocal?: boolean;
|
|
120
|
+
}
|
|
121
|
+
export interface OutdatedPackage {
|
|
122
|
+
name: string;
|
|
123
|
+
currentVersion: string;
|
|
124
|
+
latestVersion: string;
|
|
125
|
+
type: 'major' | 'minor' | 'patch';
|
|
126
|
+
breaking: boolean;
|
|
127
|
+
}
|
|
128
|
+
export interface VulnerabilityInfo {
|
|
129
|
+
package: string;
|
|
130
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
131
|
+
title: string;
|
|
132
|
+
fixedIn?: string;
|
|
133
|
+
url?: string;
|
|
134
|
+
}
|
|
135
|
+
export interface DependencyRecommendation {
|
|
136
|
+
name: string;
|
|
137
|
+
version?: string;
|
|
138
|
+
reason: string;
|
|
139
|
+
category: 'linting' | 'testing' | 'security' | 'performance' | 'dx' | 'types';
|
|
140
|
+
priority: 'high' | 'medium' | 'low';
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Full project intelligence report
|
|
144
|
+
*/
|
|
145
|
+
export interface IntelligenceReport {
|
|
146
|
+
/** Analysis timestamp */
|
|
147
|
+
timestamp: string;
|
|
148
|
+
/** Project path */
|
|
149
|
+
projectPath: string;
|
|
150
|
+
/** Detected project type */
|
|
151
|
+
projectType: string;
|
|
152
|
+
/** Detection confidence */
|
|
153
|
+
confidence: 'high' | 'medium' | 'low';
|
|
154
|
+
/** Overall intelligence score (0-100) */
|
|
155
|
+
overallScore: number;
|
|
156
|
+
/** Grade based on score */
|
|
157
|
+
grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
158
|
+
/** Structure analysis */
|
|
159
|
+
structure: StructureAnalysis;
|
|
160
|
+
/** Configuration analysis */
|
|
161
|
+
configuration: ConfigAnalysis;
|
|
162
|
+
/** Dependency analysis */
|
|
163
|
+
dependencies: DependencyAnalysis;
|
|
164
|
+
/** Top priority actions */
|
|
165
|
+
priorityActions: PriorityAction[];
|
|
166
|
+
/** Suggested workflow */
|
|
167
|
+
suggestedWorkflow: WorkflowStep[];
|
|
168
|
+
/** Estimated effort to achieve optimal state */
|
|
169
|
+
estimatedEffort: 'minimal' | 'moderate' | 'significant';
|
|
170
|
+
}
|
|
171
|
+
export interface PriorityAction {
|
|
172
|
+
id: string;
|
|
173
|
+
category: 'structure' | 'config' | 'dependencies' | 'security';
|
|
174
|
+
priority: 'critical' | 'high' | 'medium' | 'low';
|
|
175
|
+
title: string;
|
|
176
|
+
description: string;
|
|
177
|
+
command?: string;
|
|
178
|
+
autoApplicable: boolean;
|
|
179
|
+
}
|
|
180
|
+
export interface WorkflowStep {
|
|
181
|
+
order: number;
|
|
182
|
+
title: string;
|
|
183
|
+
description: string;
|
|
184
|
+
command?: string;
|
|
185
|
+
estimatedTime: string;
|
|
186
|
+
optional: boolean;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Smart configuration templates
|
|
190
|
+
*/
|
|
191
|
+
export interface SmartConfig {
|
|
192
|
+
type: ConfigType;
|
|
193
|
+
filename: string;
|
|
194
|
+
content: string;
|
|
195
|
+
description: string;
|
|
196
|
+
customizations: ConfigCustomization[];
|
|
197
|
+
}
|
|
198
|
+
export interface ConfigCustomization {
|
|
199
|
+
key: string;
|
|
200
|
+
description: string;
|
|
201
|
+
options: ConfigOption[];
|
|
202
|
+
default: string | boolean | number;
|
|
203
|
+
}
|
|
204
|
+
export interface ConfigOption {
|
|
205
|
+
value: string | boolean | number;
|
|
206
|
+
label: string;
|
|
207
|
+
description: string;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Framework-specific template definitions
|
|
211
|
+
*/
|
|
212
|
+
export interface FrameworkTemplate {
|
|
213
|
+
projectType: string;
|
|
214
|
+
name: string;
|
|
215
|
+
requiredDirs: string[];
|
|
216
|
+
optionalDirs: string[];
|
|
217
|
+
requiredFiles: string[];
|
|
218
|
+
optionalFiles: string[];
|
|
219
|
+
recommendedDependencies: DependencyRecommendation[];
|
|
220
|
+
configTemplates: SmartConfig[];
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/intelligence/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/intelligence/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Language Parser
|
|
3
|
+
* Abstract base class for language-specific parsers
|
|
4
|
+
* @version 3.2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CodeIssue } from '../../config/types.js';
|
|
7
|
+
import type { LanguageParser, LanguageRule, ParseResult, ParseContext, CommentInfo, SupportedLanguage } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Abstract base class for language parsers
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class BaseLanguageParser implements LanguageParser {
|
|
12
|
+
abstract readonly language: SupportedLanguage;
|
|
13
|
+
abstract readonly extensions: string[];
|
|
14
|
+
protected rules: LanguageRule[];
|
|
15
|
+
/**
|
|
16
|
+
* Parse source code into structured data
|
|
17
|
+
*/
|
|
18
|
+
abstract parse(code: string, filePath: string): ParseResult;
|
|
19
|
+
/**
|
|
20
|
+
* Get language-specific rules
|
|
21
|
+
*/
|
|
22
|
+
getRules(): LanguageRule[];
|
|
23
|
+
/**
|
|
24
|
+
* Check if parser can handle this file
|
|
25
|
+
*/
|
|
26
|
+
canHandle(filePath: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Analyze code using language-specific rules
|
|
29
|
+
*/
|
|
30
|
+
analyze(code: string, filePath: string): CodeIssue[];
|
|
31
|
+
/**
|
|
32
|
+
* Create parse context for rules
|
|
33
|
+
*/
|
|
34
|
+
protected createContext(code: string, filePath: string, parseResult: ParseResult): ParseContext;
|
|
35
|
+
/**
|
|
36
|
+
* Helper: Extract comments from code
|
|
37
|
+
*/
|
|
38
|
+
protected extractComments(code: string, lineCommentPrefix: string, blockStart?: string, blockEnd?: string): CommentInfo[];
|
|
39
|
+
/**
|
|
40
|
+
* Helper: Count complexity (basic cyclomatic)
|
|
41
|
+
*/
|
|
42
|
+
protected calculateComplexity(code: string): number;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=baseParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseParser.d.ts","sourceRoot":"","sources":["../../../src/services/parsers/baseParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,WAAW,EACX,YAAY,EAMZ,WAAW,EAEX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,8BAAsB,kBAAmB,YAAW,cAAc;IAChE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAEvC,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,CAAM;IAErC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAE3D;;OAEG;IACH,QAAQ,IAAI,YAAY,EAAE;IAI1B;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKpC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IA0CpD;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,YAAY;IA4C/F;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAiDzH;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAyBpD"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Language Parser
|
|
3
|
+
* Abstract base class for language-specific parsers
|
|
4
|
+
* @version 3.2.0
|
|
5
|
+
*/
|
|
6
|
+
import { logger } from '../../utils/logger.js';
|
|
7
|
+
/**
|
|
8
|
+
* Abstract base class for language parsers
|
|
9
|
+
*/
|
|
10
|
+
export class BaseLanguageParser {
|
|
11
|
+
rules = [];
|
|
12
|
+
/**
|
|
13
|
+
* Get language-specific rules
|
|
14
|
+
*/
|
|
15
|
+
getRules() {
|
|
16
|
+
return this.rules.filter(r => r.enabled);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check if parser can handle this file
|
|
20
|
+
*/
|
|
21
|
+
canHandle(filePath) {
|
|
22
|
+
const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
|
|
23
|
+
return this.extensions.includes(ext);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Analyze code using language-specific rules
|
|
27
|
+
*/
|
|
28
|
+
analyze(code, filePath) {
|
|
29
|
+
const startTime = Date.now();
|
|
30
|
+
const issues = [];
|
|
31
|
+
try {
|
|
32
|
+
const parseResult = this.parse(code, filePath);
|
|
33
|
+
const context = this.createContext(code, filePath, parseResult);
|
|
34
|
+
for (const rule of this.getRules()) {
|
|
35
|
+
try {
|
|
36
|
+
const result = rule.check(context);
|
|
37
|
+
if (result?.hasIssue) {
|
|
38
|
+
issues.push({
|
|
39
|
+
severity: rule.severity,
|
|
40
|
+
rule: rule.id,
|
|
41
|
+
category: rule.category,
|
|
42
|
+
message: result.message,
|
|
43
|
+
line: result.line,
|
|
44
|
+
column: result.column,
|
|
45
|
+
source: 'builtin',
|
|
46
|
+
suggestion: result.suggestion,
|
|
47
|
+
details: result.details
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger.warn(`Rule ${rule.id} failed`, { error, filePath });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
logger.debug(`${this.language} analysis complete`, {
|
|
56
|
+
filePath,
|
|
57
|
+
issues: issues.length,
|
|
58
|
+
duration: Date.now() - startTime
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
logger.error(`${this.language} parsing failed`, { error, filePath });
|
|
63
|
+
}
|
|
64
|
+
return issues;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create parse context for rules
|
|
68
|
+
*/
|
|
69
|
+
createContext(code, filePath, parseResult) {
|
|
70
|
+
const lines = code.split('\n');
|
|
71
|
+
return {
|
|
72
|
+
code,
|
|
73
|
+
filePath,
|
|
74
|
+
language: this.language,
|
|
75
|
+
symbols: parseResult.symbols,
|
|
76
|
+
imports: parseResult.imports,
|
|
77
|
+
functions: parseResult.functions,
|
|
78
|
+
classes: parseResult.classes,
|
|
79
|
+
variables: parseResult.variables,
|
|
80
|
+
comments: parseResult.comments,
|
|
81
|
+
getLine: (lineNumber) => lines[lineNumber - 1] || '',
|
|
82
|
+
getLines: (start, end) => lines.slice(start - 1, end),
|
|
83
|
+
containsPattern: (pattern) => pattern.test(code),
|
|
84
|
+
findPatternMatches: (pattern) => {
|
|
85
|
+
const matches = [];
|
|
86
|
+
const globalPattern = new RegExp(pattern.source, 'gm');
|
|
87
|
+
let match;
|
|
88
|
+
while ((match = globalPattern.exec(code)) !== null) {
|
|
89
|
+
const beforeMatch = code.substring(0, match.index);
|
|
90
|
+
const lineNumber = beforeMatch.split('\n').length;
|
|
91
|
+
const lastNewline = beforeMatch.lastIndexOf('\n');
|
|
92
|
+
const column = match.index - lastNewline;
|
|
93
|
+
matches.push({
|
|
94
|
+
match: match[0],
|
|
95
|
+
line: lineNumber,
|
|
96
|
+
column,
|
|
97
|
+
groups: match.groups
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return matches;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Helper: Extract comments from code
|
|
106
|
+
*/
|
|
107
|
+
extractComments(code, lineCommentPrefix, blockStart, blockEnd) {
|
|
108
|
+
const comments = [];
|
|
109
|
+
const lines = code.split('\n');
|
|
110
|
+
// Line comments
|
|
111
|
+
const lineCommentRegex = new RegExp(`${escapeRegex(lineCommentPrefix)}(.*)$`, 'gm');
|
|
112
|
+
let match;
|
|
113
|
+
while ((match = lineCommentRegex.exec(code)) !== null) {
|
|
114
|
+
const beforeMatch = code.substring(0, match.index);
|
|
115
|
+
const lineNumber = beforeMatch.split('\n').length;
|
|
116
|
+
const text = match[1].trim();
|
|
117
|
+
comments.push({
|
|
118
|
+
text,
|
|
119
|
+
line: lineNumber,
|
|
120
|
+
type: 'line',
|
|
121
|
+
isTodo: /\bTODO\b/i.test(text),
|
|
122
|
+
isFixme: /\bFIXME\b/i.test(text)
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Block comments
|
|
126
|
+
if (blockStart && blockEnd) {
|
|
127
|
+
const blockRegex = new RegExp(`${escapeRegex(blockStart)}([\\s\\S]*?)${escapeRegex(blockEnd)}`, 'gm');
|
|
128
|
+
while ((match = blockRegex.exec(code)) !== null) {
|
|
129
|
+
const beforeMatch = code.substring(0, match.index);
|
|
130
|
+
const startLine = beforeMatch.split('\n').length;
|
|
131
|
+
const endLine = startLine + match[0].split('\n').length - 1;
|
|
132
|
+
const text = match[1].trim();
|
|
133
|
+
comments.push({
|
|
134
|
+
text,
|
|
135
|
+
line: startLine,
|
|
136
|
+
endLine,
|
|
137
|
+
type: text.startsWith('*') ? 'doc' : 'block',
|
|
138
|
+
isTodo: /\bTODO\b/i.test(text),
|
|
139
|
+
isFixme: /\bFIXME\b/i.test(text)
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return comments;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Helper: Count complexity (basic cyclomatic)
|
|
147
|
+
*/
|
|
148
|
+
calculateComplexity(code) {
|
|
149
|
+
// Count decision points
|
|
150
|
+
const decisionPatterns = [
|
|
151
|
+
/\bif\b/g,
|
|
152
|
+
/\belse\s+if\b/g,
|
|
153
|
+
/\bwhile\b/g,
|
|
154
|
+
/\bfor\b/g,
|
|
155
|
+
/\bcase\b/g,
|
|
156
|
+
/\bcatch\b/g,
|
|
157
|
+
/\b\?\s*:/g, // ternary
|
|
158
|
+
/\&\&/g,
|
|
159
|
+
/\|\|/g
|
|
160
|
+
];
|
|
161
|
+
let complexity = 1; // Base complexity
|
|
162
|
+
for (const pattern of decisionPatterns) {
|
|
163
|
+
const matches = code.match(pattern);
|
|
164
|
+
if (matches) {
|
|
165
|
+
complexity += matches.length;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return complexity;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Escape special regex characters
|
|
173
|
+
*/
|
|
174
|
+
function escapeRegex(str) {
|
|
175
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=baseParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseParser.js","sourceRoot":"","sources":["../../../src/services/parsers/baseParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go Language Parser
|
|
3
|
+
* Semantic analysis for Go code
|
|
4
|
+
* @version 3.2.0
|
|
5
|
+
*/
|
|
6
|
+
import { BaseLanguageParser } from './baseParser.js';
|
|
7
|
+
import type { ParseResult, LanguageRule } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Go-specific parser with semantic rules
|
|
10
|
+
*/
|
|
11
|
+
export declare class GoParser extends BaseLanguageParser {
|
|
12
|
+
readonly language: "go";
|
|
13
|
+
readonly extensions: string[];
|
|
14
|
+
constructor();
|
|
15
|
+
parse(code: string, filePath: string): ParseResult;
|
|
16
|
+
private extractImports;
|
|
17
|
+
private extractFunctions;
|
|
18
|
+
private parseGoParams;
|
|
19
|
+
private splitGoParams;
|
|
20
|
+
private extractStructs;
|
|
21
|
+
private extractVariables;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Go-specific semantic rules
|
|
25
|
+
*/
|
|
26
|
+
declare const GO_RULES: LanguageRule[];
|
|
27
|
+
export { GO_RULES };
|
|
28
|
+
//# sourceMappingURL=goParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goParser.d.ts","sourceRoot":"","sources":["../../../src/services/parsers/goParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EACV,WAAW,EASX,YAAY,EAEb,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,QAAS,SAAQ,kBAAkB;IAC9C,QAAQ,CAAC,QAAQ,EAAG,IAAI,CAAU;IAClC,QAAQ,CAAC,UAAU,WAAW;;IAO9B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAwElD,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,gBAAgB;IAuDxB,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,cAAc;IAkDtB,OAAO,CAAC,gBAAgB;CAyBzB;AAED;;GAEG;AACH,QAAA,MAAM,QAAQ,EAAE,YAAY,EA2T3B,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|