code-auditor-mcp 1.3.1 → 1.4.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.
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Dependency extraction utilities for function-level dependency tracking
3
+ */
4
+ import * as ts from 'typescript';
5
+ /**
6
+ * Extract all function calls within a given AST node
7
+ */
8
+ export function extractFunctionCalls(node, sourceFile, importMap) {
9
+ const calls = [];
10
+ function visit(node) {
11
+ if (ts.isCallExpression(node)) {
12
+ const callInfo = resolveCallExpression(node, sourceFile, importMap);
13
+ if (callInfo) {
14
+ calls.push(callInfo);
15
+ }
16
+ }
17
+ ts.forEachChild(node, visit);
18
+ }
19
+ visit(node);
20
+ return calls;
21
+ }
22
+ /**
23
+ * Build a map of imports from import statements
24
+ */
25
+ export function buildImportMap(sourceFile) {
26
+ const importMap = new Map();
27
+ function visit(node) {
28
+ if (ts.isImportDeclaration(node)) {
29
+ const moduleSpecifier = node.moduleSpecifier.text;
30
+ const importClause = node.importClause;
31
+ if (importClause) {
32
+ // Default import
33
+ if (importClause.name) {
34
+ const localName = importClause.name.text;
35
+ importMap.set(localName, {
36
+ localName,
37
+ importedName: 'default',
38
+ modulePath: moduleSpecifier,
39
+ importType: 'default',
40
+ isTypeOnly: importClause.isTypeOnly || false
41
+ });
42
+ }
43
+ // Named imports
44
+ if (importClause.namedBindings) {
45
+ if (ts.isNamedImports(importClause.namedBindings)) {
46
+ importClause.namedBindings.elements.forEach(element => {
47
+ const localName = element.name.text;
48
+ const importedName = element.propertyName?.text || localName;
49
+ importMap.set(localName, {
50
+ localName,
51
+ importedName,
52
+ modulePath: moduleSpecifier,
53
+ importType: 'named',
54
+ isTypeOnly: importClause.isTypeOnly || element.isTypeOnly || false
55
+ });
56
+ });
57
+ }
58
+ else if (ts.isNamespaceImport(importClause.namedBindings)) {
59
+ // Namespace import (import * as name from 'module')
60
+ const localName = importClause.namedBindings.name.text;
61
+ importMap.set(localName, {
62
+ localName,
63
+ importedName: '*',
64
+ modulePath: moduleSpecifier,
65
+ importType: 'namespace',
66
+ isTypeOnly: importClause.isTypeOnly || false
67
+ });
68
+ }
69
+ }
70
+ }
71
+ }
72
+ else if (ts.isVariableStatement(node)) {
73
+ // Handle require statements (CommonJS)
74
+ node.declarationList.declarations.forEach(decl => {
75
+ if (ts.isVariableDeclaration(decl) && decl.initializer && ts.isCallExpression(decl.initializer)) {
76
+ const callExpr = decl.initializer;
77
+ if (ts.isIdentifier(callExpr.expression) && callExpr.expression.text === 'require' &&
78
+ callExpr.arguments.length > 0 && ts.isStringLiteral(callExpr.arguments[0])) {
79
+ const modulePath = callExpr.arguments[0].text;
80
+ if (ts.isIdentifier(decl.name)) {
81
+ const localName = decl.name.text;
82
+ importMap.set(localName, {
83
+ localName,
84
+ importedName: 'default',
85
+ modulePath,
86
+ importType: 'default',
87
+ isTypeOnly: false
88
+ });
89
+ }
90
+ }
91
+ }
92
+ });
93
+ }
94
+ ts.forEachChild(node, visit);
95
+ }
96
+ visit(sourceFile);
97
+ return importMap;
98
+ }
99
+ /**
100
+ * Resolve a call expression to get call information
101
+ */
102
+ export function resolveCallExpression(callExpr, sourceFile, importMap) {
103
+ const expr = callExpr.expression;
104
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(callExpr.getStart());
105
+ let callee;
106
+ let callType = 'direct';
107
+ if (ts.isIdentifier(expr)) {
108
+ // Direct function call: functionName()
109
+ callee = expr.text;
110
+ callType = 'direct';
111
+ }
112
+ else if (ts.isPropertyAccessExpression(expr)) {
113
+ // Method call: object.method()
114
+ callee = resolvePropertyAccess(expr, importMap);
115
+ callType = 'method';
116
+ }
117
+ else if (ts.isElementAccessExpression(expr)) {
118
+ // Dynamic call: object[property]()
119
+ callee = '[dynamic]';
120
+ callType = 'dynamic';
121
+ }
122
+ if (callee) {
123
+ return {
124
+ callee,
125
+ callType,
126
+ line: line + 1, // Convert to 1-based
127
+ column: character + 1,
128
+ arguments: callExpr.arguments.length
129
+ };
130
+ }
131
+ return undefined;
132
+ }
133
+ /**
134
+ * Resolve property access expressions to a string representation
135
+ */
136
+ function resolvePropertyAccess(expr, importMap) {
137
+ const parts = [expr.name.text];
138
+ let current = expr.expression;
139
+ while (ts.isPropertyAccessExpression(current)) {
140
+ parts.unshift(current.name.text);
141
+ current = current.expression;
142
+ }
143
+ if (ts.isIdentifier(current)) {
144
+ const baseName = current.text;
145
+ const importInfo = importMap.get(baseName);
146
+ if (importInfo) {
147
+ // Imported module method call
148
+ parts.unshift(`${importInfo.modulePath}#${baseName}`);
149
+ }
150
+ else {
151
+ // Local object method call
152
+ parts.unshift(baseName);
153
+ }
154
+ }
155
+ return parts.join('.');
156
+ }
157
+ /**
158
+ * Extract identifier usage within a function to determine which imports are actually used
159
+ */
160
+ export function extractIdentifierUsage(node, sourceFile, importMap) {
161
+ const usageMap = new Map();
162
+ function visit(node) {
163
+ if (ts.isIdentifier(node) && !ts.isPropertyAccessExpression(node.parent) &&
164
+ !ts.isPropertyAssignment(node.parent)) {
165
+ const name = node.text;
166
+ if (importMap.has(name)) {
167
+ const { line } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
168
+ const existing = usageMap.get(name) || {
169
+ usageType: 'direct',
170
+ usageCount: 0,
171
+ lineNumbers: []
172
+ };
173
+ existing.usageCount++;
174
+ existing.lineNumbers.push(line + 1);
175
+ // Determine usage type
176
+ if (ts.isTypeNode(node.parent) || ts.isTypeReferenceNode(node.parent)) {
177
+ existing.usageType = 'type';
178
+ }
179
+ else if (ts.isExportSpecifier(node.parent)) {
180
+ existing.usageType = 'reexport';
181
+ }
182
+ usageMap.set(name, existing);
183
+ }
184
+ }
185
+ ts.forEachChild(node, visit);
186
+ }
187
+ visit(node);
188
+ return usageMap;
189
+ }
190
+ /**
191
+ * Get all local function names defined in the file
192
+ */
193
+ export function getLocalFunctionNames(sourceFile) {
194
+ const functionNames = new Set();
195
+ function visit(node) {
196
+ if (ts.isFunctionDeclaration(node) && node.name) {
197
+ functionNames.add(node.name.text);
198
+ }
199
+ else if (ts.isVariableStatement(node)) {
200
+ node.declarationList.declarations.forEach(decl => {
201
+ if (ts.isVariableDeclaration(decl) && ts.isIdentifier(decl.name) &&
202
+ decl.initializer && (ts.isFunctionExpression(decl.initializer) ||
203
+ ts.isArrowFunction(decl.initializer))) {
204
+ functionNames.add(decl.name.text);
205
+ }
206
+ });
207
+ }
208
+ else if (ts.isClassDeclaration(node) && node.name) {
209
+ functionNames.add(node.name.text);
210
+ // Also add class methods
211
+ node.members.forEach(member => {
212
+ if (ts.isMethodDeclaration(member) && ts.isIdentifier(member.name)) {
213
+ functionNames.add(`${node.name.text}.${member.name.text}`);
214
+ }
215
+ });
216
+ }
217
+ ts.forEachChild(node, visit);
218
+ }
219
+ visit(sourceFile);
220
+ return functionNames;
221
+ }
222
+ /**
223
+ * Normalize a function call target for consistent naming
224
+ */
225
+ export function normalizeCallTarget(callee, filePath, localFunctions) {
226
+ // If it's a local function, prefix with file path for uniqueness
227
+ if (localFunctions.has(callee)) {
228
+ return `${filePath}#${callee}`;
229
+ }
230
+ // If it already has a module path, return as-is
231
+ if (callee.includes('#')) {
232
+ return callee;
233
+ }
234
+ // Otherwise, it's an unresolved external call
235
+ return callee;
236
+ }
237
+ //# sourceMappingURL=dependencyExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencyExtractor.js","sourceRoot":"","sources":["../../src/utils/dependencyExtractor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-auditor-mcp",
3
- "version": "1.3.1",
3
+ "version": "1.4.0",
4
4
  "description": "TypeScript/JavaScript code quality auditor with MCP server - Analyze code for SOLID principles, DRY violations, security patterns, and more",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,6 +9,19 @@
9
9
  "code-audit": "./dist/cli.js",
10
10
  "code-auditor-mcp": "./dist/mcp-standalone.js"
11
11
  },
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "watch": "tsc --watch",
15
+ "dev": "tsx src/cli.ts",
16
+ "dev:server": "tsx --watch src/cli.ts start --rest-api",
17
+ "audit": "node dist/cli.js",
18
+ "start": "node dist/mcp-standalone.js",
19
+ "start:rest": "node dist/cli.js start --rest-api",
20
+ "generate": "node dist/cli.js generate-config",
21
+ "prepublishOnly": "npm run build",
22
+ "test": "vitest",
23
+ "test:watch": "vitest watch"
24
+ },
12
25
  "keywords": [
13
26
  "audit",
14
27
  "code-quality",
@@ -66,17 +79,5 @@
66
79
  "bugs": {
67
80
  "url": "https://github.com/code-auditor/code-auditor/issues"
68
81
  },
69
- "homepage": "https://github.com/code-auditor/code-auditor#readme",
70
- "scripts": {
71
- "build": "tsc",
72
- "watch": "tsc --watch",
73
- "dev": "tsx src/cli.ts",
74
- "dev:server": "tsx --watch src/cli.ts start --rest-api",
75
- "audit": "node dist/cli.js",
76
- "start": "node dist/mcp-standalone.js",
77
- "start:rest": "node dist/cli.js start --rest-api",
78
- "generate": "node dist/cli.js generate-config",
79
- "test": "vitest",
80
- "test:watch": "vitest watch"
81
- }
82
+ "homepage": "https://github.com/code-auditor/code-auditor#readme"
82
83
  }