Il microservizio di Analisi utilizza un sistema multi-agente per analizzare il codice. Esistono due agenti principali che collaborano per eseguire un’analisi approfondita e valutare la complessità del codice.
Il microservizio è progettato per eseguire i task in maniera sequenziale. I task sono assegnati rispettivamente a Code Analyzer e Complex Analyzer, garantendo che l’analisi del codice venga effettuata in due fasi distinte ma complementari.
Questo agente si occupa di analizzare il codice legacy, applicando la sua vasta esperienza per identificare problemi, suggerire miglioramenti e garantire la qualitĂ del codice.
code_analyst = Agent(
role='Legacy Code Analyst',
goal='Analyze and understand legacy code structure and functionality',
backstory="""You are an experienced developer with decades of experience in analyzing legacy systems.
Your expertise lies in dissecting complex programs and understanding their core logic.""",
verbose=True,
allow_delegation=False,
llm=os.environ["LLM"],
)
Questo agente valuta la complessitĂ del codice, fornendo metriche dettagliate che aiutano a comprendere meglio le aree piĂą critiche e complesse del progetto.
complexity_assessor = Agent(
role='Code Complexity Assessor',
goal='Evaluate the overall complexity of the legacy codebase',
backstory="""You are an expert in software metrics and complexity analysis.
You specialize in assessing code complexity across different languages and providing actionable insights.""",
verbose=True,
allow_delegation=False,
llm=os.environ["LLM"],
)
task1 = Task(
description=f"""Analyze the structure and functionality of the legacy code.
Identify key modules, data structures, and business logic implementations.
Code: {code}""",
expected_output="Detailed report on code structure and functionality",
agent=code_analyst,
)
code_analyst
task2 = Task(
description=f"""Using the insights from the code analysis, assess the overall complexity of the legacy codebase.
Provide metrics and recommendations for refactoring priorities.
Code: {code}""",
expected_output="Comprehensive complexity assessment report with refactoring suggestions" if not number_response else "A single digit number, from 0 to 9 inclusive, indicating the complexity of the code.",
agent=complexity_assessor
)
complexity_assessor
La crew risulta essere l’insieme degli agenti che vengono creati e a cui vengono assegnati i task :
# Instantiate the crew for legacy code analysis
analysis_crew = Crew(
agents=[code_analyst, complexity_assessor],
tasks=[task1, task2],
verbose=True,
process=Process.sequential
)
# Execute the analysis
analysis_result = analysis_crew.kickoff()