check_imports
Analyzes code import statements to identify circular dependencies, unused imports, and missing modules for cleaner, more maintainable code.
Instructions
Checks import statements in code for common issues like circular dependencies, unused imports, and missing modules.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code to check imports for | |
| language | Yes | Programming language (javascript, typescript, python) |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"code": {
"description": "The code to check imports for",
"type": "string"
},
"language": {
"description": "Programming language (javascript, typescript, python)",
"type": "string"
}
},
"required": [
"code",
"language"
],
"type": "object"
}
Implementation Reference
- src/tools/linting.ts:16-67 (handler)The core handler function for the 'check_imports' tool. It parses code lines, extracts imports based on language (JavaScript/TypeScript/Python), checks for issues like invalid syntax, deep relative imports, and wildcards, then generates a markdown report with found imports, issues, and recommendations.export function checkImportsHandler(args: any) { const { code, language } = args; const lines = code.split("\n"); const issues: string[] = []; const imports: string[] = []; // Extract imports based on language if (language === "javascript" || language === "typescript") { lines.forEach((line: string, i: number) => { if (line.includes("import ") || line.includes("require(")) { imports.push(line.trim()); // Check for common issues if (line.includes("* as") && !line.includes("from")) { issues.push(`Line ${i + 1}: Invalid wildcard import syntax`); } if (line.includes("..")) { // Potentially deep relative import const depth = (line.match(/\.\.\//g) || []).length; if (depth > 3) { issues.push(`Line ${i + 1}: Deep relative import (${depth} levels) - consider absolute imports`); } } } }); } else if (language === "python") { lines.forEach((line: string, i: number) => { if (line.startsWith("import ") || line.startsWith("from ")) { imports.push(line.trim()); if (line.includes("import *")) { issues.push(`Line ${i + 1}: Wildcard import detected - avoid 'import *'`); } } }); } const result = `# Import Analysis: ${language} ## Imports Found (${imports.length}) ${imports.map(i => `- \`${i}\``).join("\n") || "No imports found"} ## Issues Detected (${issues.length}) ${issues.length > 0 ? issues.map(i => `- ⚠️ ${i}`).join("\n") : "✅ No issues detected"} ## Recommendations - Keep imports organized (external, internal, relative) - Remove unused imports - Prefer named imports over wildcards - Use absolute imports for clarity `; return { content: [{ type: "text", text: result }] }; }
- src/tools/linting.ts:7-14 (schema)The schema definition for the 'check_imports' tool, specifying the tool name, description, and input schema using Zod for validation (code string and language string).export const checkImportsSchema = { name: "check_imports", description: "Checks import statements in code for common issues like circular dependencies, unused imports, and missing modules.", inputSchema: z.object({ code: z.string().describe("The code to check imports for"), language: z.string().describe("Programming language (javascript, typescript, python)") }) };
- src/index.ts:103-103 (registration)Registration of the 'check_imports' tool in the main stdio server toolRegistry Map, linking schema and handler.["check_imports", { schema: checkImportsSchema, handler: checkImportsHandler }],
- src/server.ts:103-103 (registration)Registration of the 'check_imports' tool in the HTTP server toolRegistry Map, linking schema and handler.["check_imports", { schema: checkImportsSchema, handler: checkImportsHandler }],