Python-Skripte zum Extrahieren von Daten aus Tools zur Bewertung technischer Schulden (TD), zum Erstellen von Eingabeaufforderungen und zum Ausführen von Chats mit einem Large Language Model (LLM) über die Ollama-API.
Derzeit unterstützt der Prototyp nur Arcan als TD-Bewertungstool. Außerdem werden nur Java-Projekte unterstützt.
Es soll in Zukunft erweitert werden, um Designite- und C#-Projekte zu unterstützen.
pip install -r requirements.txt
Führen Sie eine Einzelversionsanalyse für das Java-Projekt Ihrer Wahl durch.
Führen Sie anhand der Ausgabe der Analyse die Zusammenführung aus, um die Ergebnisse in einer Datei zusammenzuführen.
Hier befindet sich die Arcan-Ausgabe unter ./arcanOutput/myproject
und wir möchten die zusammengeführte Datei unter ./genai4atdOutput/merger-output
. Das Repository mit dem Projekt befindet sich unter ./projects/myproject
.
python merger_run.py ./arcanOutput/myproject ./genai4atdOutput/merger-output JAVA -r ./projects/myproject -e
Wir möchten eine Beispieldatei generieren, die einen Geruch jeder aus den Daten abgerufenen Art enthält, daher verwenden wir die Option --examples
( -e
).
Es ist möglich, dass der Merger mithilfe der Option --loc
( -l
) zusätzlich die vollständigen Codezeilen abruft, in denen jede Abhängigkeit in einer Klasse verwendet wird. Im Moment hat es uns mit dem LLM keine großartigen Ergebnisse gebracht, wir empfehlen es nicht.
Jetzt haben wir die zusammengeführte Datei unter ./genai4atdOutput/merger-output/myproject-merged.csv
und die Beispieldatei unter ./genai4atdOutput/merger-output/myproject-merged-examples.csv.
Als nächstes müssen wir die Eingabeaufforderungsdatei erstellen.
python build_prompt_run.py ./genai4atdOutput/merger-output/myproject-merged-examples.csv ./genai4atdOutput/prompts-output JAVA -dep -def --json
Wir möchten, dass die Abhängigkeiten jeder Komponente in der Eingabeaufforderung sowie Definitionen für Gerüche und Metriken (aus der Arcan-Dokumentation) in den Kontext einbezogen werden, daher verwenden wir die Optionen --dependencies
( -dep
) und --definitions
( -def
).
Wir möchten auch die Geruchsdaten im JSON-Format. Wir können es in natürlicher Sprache schreiben, aber es lieferte uns längere Eingabeaufforderungen und keine besseren Ergebnisse als JSON.
Jetzt haben wir die Eingabeaufforderungsdatei unter ./genai4atdOutput/prompts-output/json/defs/prompt_with_dependencies.json
Schließlich können wir den Chat mit dem LLM durchführen. Die API befindet sich unter http://localhost:11434/api/chat
und wir möchten das Llama 3-Modell verwenden.
python chat_run.py ./genai4atdOutput/prompts-output/json/defs/prompt_with_dependencies.json ./genai4atdOutput/chats-output http://localhost:11434/api/chat llama3 --json -def
Optionen --json
und -def
, um anzugeben, dass die Eingabeaufforderung im JSON-Format vorliegt und Definitionen enthält.
Führen Sie eine Entwicklungsanalyse für das Java-Projekt Ihrer Wahl durch.
Führen Sie anhand der Ergebnisse der Analyse den Geruchstracker aus. Es verfolgt Gerüche in allen Versionen, um zu sehen, ob sie zunehmen, abnehmen oder verschwinden. Wenn es eine Variation oder ein Verschwinden gibt, kann es auch den Diff- und/oder Commit-Verlauf der relevanten Komponenten abrufen.
Hier befindet sich die Arcan-Ausgabe unter ./arcanOutput/myproject-evo
und wir möchten die zusammengeführte Datei unter ./genai4atdOutput/smell-track-output
. Das Repository mit dem Projekt befindet sich unter ./projects/myproject
.
python smell_tracker_run.py ./arcanOutput/myproject ./genai4atdOutput/smell-track-output ./projects/myproject JAVA -diffs -commits -e
Wir möchten die Diffs und Commit-Verläufe der relevanten Komponenten, wenn es eine Variation gibt, sowie eine Beispieldatei, die nur Gerüche enthält, die variierten oder verschwunden sind, also verwenden wir --ATDIVarDiffs
( -diffs
), --ATDIVarCommitHistory
( -commits
) und --examples
( -e
) Optionen.
Jetzt haben wir die Smell-Track-Datei unter ./genai4atdOutput/smell-track-output/smell_track_myproject_evo.json
und die Beispieldatei unter ./genai4atdOutput/smell-track-output/smell_track_myproject_evo_example.json
Als nächstes können wir den Chat mit dem LLM ausführen. Die API befindet sich unter http://localhost:11434/api/chat
und wir möchten das Llama 3-Modell verwenden.
python chat_run.py ./genai4atdOutput/smell-track-output/myproject_evo_smell_track_example.json ./genai4atdOutput/chats-output http://localhost:11434/api/chat llama3 -evo
Wir verwenden die Option --evolution
( -evo
), um anzugeben, dass es sich um eine Evolutionsanalyse handelt.