compare_code_versions
Compare two Python code versions to analyze improvements, regressions, and security changes. Identify quality and vulnerability differences to enhance code integrity and maintainability.
Instructions
Compare two versions of Python code to identify improvements or regressions in quality and security.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Name of the file (optional) | unknown.py |
| originalCode | Yes | Original version of the Python code | |
| revisedCode | Yes | Revised version of the Python code |
Implementation Reference
- src/index.ts:320-336 (handler)Main handler function that executes the compare_code_versions tool: validates input with CompareCodeSchema, analyzes original and revised code using PythonAnalyzer, generates comparison report using generateComparisonReport, and returns formatted response.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 required originalCode and revisedCode strings, 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:155-176 (registration)Tool registration in ListToolsRequestSchema response, specifying name 'compare_code_versions', description, and inputSchema matching 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, and remaining issues for the revised code.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'); }