Scripts de Python para extraer datos de herramientas de evaluación de deuda técnica (TD), crear mensajes y ejecutar chats con un modelo de lenguaje grande (LLM) a través de la API de Ollama.
Actualmente, el prototipo solo admite Arcan como herramienta de evaluación de TD. Además, solo admite proyectos Java.
En el futuro debería ampliarse para admitir proyectos Designite y C#.
pip install -r requirements.txt
Ejecute un análisis de una versión en el proyecto Java de su elección.
Utilizando el resultado del análisis, ejecute la fusión para fusionar los resultados en un archivo.
Aquí la salida de Arcan se encuentra en ./arcanOutput/myproject
y queremos el archivo combinado en ./genai4atdOutput/merger-output
. El repositorio que contiene el proyecto se encuentra en ./projects/myproject
.
python merger_run.py ./arcanOutput/myproject ./genai4atdOutput/merger-output JAVA -r ./projects/myproject -e
Queremos generar un archivo de ejemplos, que es un archivo que contiene un olor de cada tipo recuperado de los datos, por lo que usaremos la opción --examples
( -e
).
Es posible que la fusión recupere adicionalmente las líneas completas de códigos donde se usa cada dependencia en una clase, usando la opción --loc
( -l
). Por ahora no nos ha dado grandes resultados con el LLM, no lo recomendamos.
Ahora tenemos el archivo combinado en ./genai4atdOutput/merger-output/myproject-merged.csv
y el archivo de ejemplo en ./genai4atdOutput/merger-output/myproject-merged-examples.csv.
A continuación, necesitamos crear el archivo de solicitud.
python build_prompt_run.py ./genai4atdOutput/merger-output/myproject-merged-examples.csv ./genai4atdOutput/prompts-output JAVA -dep -def --json
Queremos que las dependencias de cada componente en el mensaje, así como las definiciones de olores y métricas (de la documentación de Arcan) se incluyan en el contexto, por lo que usamos las opciones --dependencies
( -dep
) y --definitions
( -def
).
También queremos los datos del olor en formato JSON. Podemos escribirlo en lenguaje natural, pero nos dio indicaciones más largas y no mejores resultados que JSON.
Ahora tenemos el archivo de solicitud en ./genai4atdOutput/prompts-output/json/defs/prompt_with_dependencies.json
Finalmente, podemos ejecutar el chat con el LLM. La API está en http://localhost:11434/api/chat
y queremos usar el modelo Llama 3.
python chat_run.py ./genai4atdOutput/prompts-output/json/defs/prompt_with_dependencies.json ./genai4atdOutput/chats-output http://localhost:11434/api/chat llama3 --json -def
Opciones --json
y -def
para especificar que el mensaje está en formato JSON y contiene definiciones.
Ejecute un análisis de evolución del proyecto Java de su elección.
Utilizando el resultado del análisis, ejecute el rastreador de olores. Realizará un seguimiento de los olores en todas las versiones para ver si aumentan, disminuyen o desaparecen. Cuando hay una variación o una desaparición, también puede recuperar el historial de diferencias y/o confirmaciones de los componentes relevantes.
Aquí la salida de Arcan se encuentra en ./arcanOutput/myproject-evo
y queremos el archivo combinado en ./genai4atdOutput/smell-track-output
. El repositorio que contiene el proyecto se encuentra en ./projects/myproject
.
python smell_tracker_run.py ./arcanOutput/myproject ./genai4atdOutput/smell-track-output ./projects/myproject JAVA -diffs -commits -e
Queremos las diferencias y los historiales de confirmación de los componentes relevantes cuando hay una variación, y también un archivo de ejemplos que contenga solo los olores que variaron o desaparecieron, por lo que usamos --ATDIVarDiffs
( -diffs
), --ATDIVarCommitHistory
( -commits
) y --examples
( -e
) opciones.
Ahora tenemos el archivo de seguimiento de olores en ./genai4atdOutput/smell-track-output/smell_track_myproject_evo.json
y el archivo de ejemplo en ./genai4atdOutput/smell-track-output/smell_track_myproject_evo_example.json
A continuación podemos ejecutar el chat con el LLM. La API está en http://localhost:11434/api/chat
y queremos usar el modelo Llama 3.
python chat_run.py ./genai4atdOutput/smell-track-output/myproject_evo_smell_track_example.json ./genai4atdOutput/chats-output http://localhost:11434/api/chat llama3 -evo
Usamos la opción --evolution
( -evo
) para especificar que se trata de un análisis de evolución.