File size: 3,069 Bytes
38bc0dc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | import argparse
import sys
import os
try:
sys.stdout.reconfigure(encoding='utf-8')
sys.stderr.reconfigure(encoding='utf-8')
except Exception:
pass
from scoring_api import evaluate
from phase2.optimization import IterativeOptimizer
def display_results(initial_code, result):
print("\n" + "="*60)
print(" π AI CODE MAINTAINABILITY ENGINE (Unified Pipeline) π")
print("="*60)
print("\nπ [ORIGINAL CODE]\n")
print(initial_code.strip())
# Phase 1: Evaluate initial code directly
print("\nπ [PHASE 1: INITIAL SCORING]")
initial_score_result = evaluate(initial_code)
print(f"Risk Score: {initial_score_result['risk_score']}")
print(f"Risk Level: {initial_score_result['risk_level']}")
if initial_score_result.get('top_risk_factors'):
print("Details:")
for factor in initial_score_result['top_risk_factors']:
print(f" - {factor}")
# Phase 2: Show Optimization Results
print("\nπ οΈ [PHASE 2: AUTONOMOUS REFACTORING]")
if result['iterations_run'] == 0:
print("No optimization was needed (code already meets target maintainability score).")
else:
print(f"Completed {result['iterations_run']} refinement iteration(s).")
print("\n⨠[REFACTORED CODE]\n")
print(result['final_code'].strip())
print("\nπ [FINAL METRICS]")
print(f"Original Score: {initial_score_result['risk_score']}")
print(f"Final Score: {result['final_score']}")
if result['final_score'] < initial_score_result['risk_score']:
print(f"π Success! Maintainability improved by {initial_score_result['risk_score'] - result['final_score']} points.")
else:
print("β οΈ Code was refactored, maintainability score remained optimal.")
print("\n" + "="*60 + "\n")
def main():
parser = argparse.ArgumentParser(description="AI Code Maintainability Scoring & Refactoring Engine")
parser.add_argument("file", nargs="?", help="Path to the Python file to analyze and refactor.")
args = parser.parse_args()
if args.file:
if not os.path.exists(args.file):
print(f"Error: File '{args.file}' not found.")
sys.exit(1)
with open(args.file, "r", encoding="utf-8") as f:
code = f.read()
else:
# Default fallback example
code = '''
def process_data(data_list):
results = []
for i in range(len(data_list)):
if data_list[i] > 0:
if data_list[i] % 2 == 0:
results.append(data_list[i])
return results
'''
print("Initializing Unified Maintainability Engine...")
try:
optimizer = IterativeOptimizer(target_score=10.0, max_iterations=2)
print("Analyzing and Refactoring code...")
result = optimizer.optimize(code)
display_results(code, result)
except Exception as e:
print(f"\nError during engine execution: {e}")
if __name__ == "__main__":
main()
|