suggest_fixes
Generate prioritized fix recommendations from TwinCAT 3 XML validation results to resolve code quality and IEC 61131-3 compliance issues.
Instructions
Generate prioritized fix recommendations from validation results.
Args: validation_result: JSON string from validate_file()
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| validation_result | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- The core logic for the suggest_fixes tool. It takes a validation result string, parses it, and generates prioritized fix recommendations.
def suggest_fixes(validation_result: str) -> str: """Generate prioritized fix recommendations from validation results. Args: validation_result: JSON string from validate_file() """ _t0 = time.monotonic() try: result = json.loads(validation_result) if not result.get("success"): return _tool_error("Invalid validation result provided", start_time=_t0) issues = result.get("issues", []) fixes = [] auto_fixable = 0 manual_required = 0 for issue in issues: priority = ( "high" if issue["type"] == "error" else "medium" if issue["type"] == "warning" else "low" ) fix_type = "auto" if issue["auto_fixable"] else "manual" if fix_type == "auto": auto_fixable += 1 else: manual_required += 1 if fix_type == "auto": effort = "< 1 second (automatic)" elif issue["category"] in ["GUID", "XML"]: effort = "5-10 minutes (requires regeneration)" elif issue["category"] in ["Naming", "Order"]: effort = "2-5 minutes (refactoring)" else: effort = "1-2 minutes (simple edit)" fix_suggestion = { "priority": priority, "type": fix_type, "category": issue["category"], "issue": issue["message"], "solution": issue.get("fix_suggestion", "Manual correction required"), "code_example": None, "estimated_effort": effort, } fixes.append(fix_suggestion) priority_order = {"high": 0, "medium": 1, "low": 2} fixes.sort(key=lambda x: priority_order[x["priority"]]) result = { "success": True, "fixes": fixes, "auto_fixable_count": auto_fixable, "manual_fixes_required": manual_required, } return _with_meta(result, _t0) except json.JSONDecodeError: return _tool_error("Invalid JSON in validation_result", start_time=_t0) except Exception as e: return _tool_error(str(e), start_time=_t0) - twincat_validator/server.py:156-156 (registration)The registration of the suggest_fixes tool within the MCP server.
suggest_fixes = _get_tool_fn("suggest_fixes")