@stackguide/mcp-server 3.0.0 → 3.2.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/dist/config/types.d.ts +51 -4
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/services/astAnalyzer.d.ts +21 -0
- package/dist/services/astAnalyzer.d.ts.map +1 -0
- package/dist/services/astAnalyzer.js +593 -0
- package/dist/services/astAnalyzer.js.map +1 -0
- package/dist/services/codeAnalyzer.d.ts +54 -14
- package/dist/services/codeAnalyzer.d.ts.map +1 -1
- package/dist/services/codeAnalyzer.js +209 -37
- package/dist/services/codeAnalyzer.js.map +1 -1
- 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/package.json +2 -1
|
@@ -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"}
|