compare_code_versions
Identify improvements or regressions in Python code quality and security by comparing two versions to track changes effectively.
Instructions
Compare two versions of Python code to identify improvements or regressions in quality and security.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| originalCode | Yes | Original version of the Python code | |
| revisedCode | Yes | Revised version of the Python code | |
| filename | No | Name of the file (optional) | unknown.py |
Implementation Reference
- src/index.ts:320-336 (handler)Handler function for the compare_code_versions tool. Parses input using CompareCodeSchema, analyzes both original and revised code using the PythonAnalyzer, generates comparison report using generateComparisonReport helper, and returns it as MCP content.private async handleCompareCode(args: unknown) { const { originalCode, revisedCode, filename } = CompareCodeSchema.parse(args); const originalResult = this.analyzer.analyzePythonCode(originalCode, `${filename} (original)`); const revisedResult = this.analyzer.analyzePythonCode(revisedCode, `${filename} (revised)`); const comparisonReport = this.generateComparisonReport(originalResult, revisedResult); return { content: [ { type: 'text', text: comparisonReport } ] }; }
- src/index.ts:44-48 (schema)Zod input validation schema for the compare_code_versions tool, defining originalCode, revisedCode, and optional filename.const CompareCodeSchema = z.object({ originalCode: z.string().min(1, "Original code cannot be empty"), revisedCode: z.string().min(1, "Revised code cannot be empty"), filename: z.string().optional().default("unknown.py") });
- src/index.ts:154-176 (registration)Tool registration in the ListTools response, including name, description, and inputSchema matching the CompareCodeSchema.{ name: 'compare_code_versions', description: 'Compare two versions of Python code to identify improvements or regressions in quality and security.', inputSchema: { type: 'object', properties: { originalCode: { type: 'string', description: 'Original version of the Python code' }, revisedCode: { type: 'string', description: 'Revised version of the Python code' }, filename: { type: 'string', description: 'Name of the file (optional)', default: 'unknown.py' } }, required: ['originalCode', 'revisedCode'] } },
- src/index.ts:408-432 (helper)Helper function that generates the detailed markdown comparison report, including metrics table, summary of improvements/regressions, and remaining issues.private generateComparisonReport(original: AnalysisResult, revised: AnalysisResult): string { const improvementScore = revised.codeQualityScore - original.codeQualityScore; const securityImprovement = revised.securityScore - original.securityScore; const issueImprovement = original.totalIssues - revised.totalIssues; const sections = [ 'π **CODE COMPARISON REPORT**', '=' + '='.repeat(50), '', '## π **IMPROVEMENT METRICS**', '', `| Metric | Original | Revised | Change |`, `|--------|----------|---------|--------|`, `| Quality Score | ${original.codeQualityScore}/100 | ${revised.codeQualityScore}/100 | ${this.formatChange(improvementScore)} |`, `| Security Score | ${original.securityScore}/100 | ${revised.securityScore}/100 | ${this.formatChange(securityImprovement)} |`, `| Total Issues | ${original.totalIssues} | ${revised.totalIssues} | ${this.formatChange(issueImprovement)} |`, `| Critical Issues | ${original.criticalIssues} | ${revised.criticalIssues} | ${this.formatChange(original.criticalIssues - revised.criticalIssues)} |`, '', this.generateComparisonSummary(improvementScore, securityImprovement, issueImprovement), '', this.generateRemainingIssues(revised) ]; return sections.join('\n'); }