기술 부채(TD) 평가 도구에서 데이터를 추출하고 Ollama API를 통해 LLM(대형 언어 모델)을 사용하여 프롬프트를 구축하고 채팅을 실행하는 Python 스크립트입니다.
현재 프로토타입은 TD 평가 도구로 Arcan만 지원합니다. 또한 Java 프로젝트만 지원합니다.
향후에는 Designite 및 C# 프로젝트를 지원하도록 확장되어야 합니다.
pip install -r requirements.txt
선택한 Java 프로젝트에 대해 단일 버전 분석을 실행하세요.
분석 결과를 사용하여 병합을 실행하여 결과를 하나의 파일로 병합합니다.
여기서 Arcan 출력은 ./arcanOutput/myproject
에 있으며 병합된 파일은 ./genai4atdOutput/merger-output
에 있어야 합니다. 프로젝트가 포함된 저장소는 ./projects/myproject
에 있습니다.
python merger_run.py ./arcanOutput/myproject ./genai4atdOutput/merger-output JAVA -r ./projects/myproject -e
데이터에서 검색된 각 종류의 냄새 하나를 포함하는 파일인 예제 파일을 생성하려고 하므로 --examples
( -e
) 옵션을 사용합니다.
--loc
( -l
) 옵션을 사용하면 병합기가 클래스에서 각 종속성이 사용되는 전체 코드 줄을 추가로 검색할 수 있습니다. 현재로서는 LLM을 통해 좋은 결과를 얻지 못했기 때문에 권장하지 않습니다.
이제 ./genai4atdOutput/merger-output/myproject-merged.csv
에 병합된 파일이 있고 ./genai4atdOutput/merger-output/myproject-merged-examples.csv.
다음으로 프롬프트 파일을 빌드해야 합니다.
python build_prompt_run.py ./genai4atdOutput/merger-output/myproject-merged-examples.csv ./genai4atdOutput/prompts-output JAVA -dep -def --json
우리는 프롬프트에 있는 각 구성 요소의 종속성과 컨텍스트에 포함된 냄새 및 메트릭에 대한 정의(Arcan 문서에서 제공)를 원하므로 --dependencies
( -dep
) 및 --definitions
( -def
) 옵션을 사용합니다.
또한 JSON 형식의 냄새 데이터가 필요합니다. 자연어로 작성할 수 있지만 JSON보다 더 긴 프롬프트와 더 나은 결과를 제공하지 않습니다.
이제 ./genai4atdOutput/prompts-output/json/defs/prompt_with_dependencies.json
에 프롬프트 파일이 있습니다.
마지막으로 LLM과 채팅을 실행할 수 있습니다. API는 http://localhost:11434/api/chat
에 있으며 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
--json
및 -def
옵션을 사용하여 프롬프트가 JSON 형식이고 정의가 포함되도록 지정합니다.
선택한 Java 프로젝트에 대한 진화 분석을 실행하세요.
분석 결과를 사용하여 냄새 추적기를 실행합니다. 버전 전반에 걸쳐 냄새를 추적하여 냄새가 증가, 감소 또는 사라지는지 확인합니다. 변형이나 누락이 있는 경우 관련 구성 요소의 차이점 및/또는 커밋 기록을 검색할 수도 있습니다.
여기서 Arcan 출력은 ./arcanOutput/myproject-evo
에 있으며 병합된 파일은 ./genai4atdOutput/smell-track-output
에 있습니다. 프로젝트가 포함된 저장소는 ./projects/myproject
에 있습니다.
python smell_tracker_run.py ./arcanOutput/myproject ./genai4atdOutput/smell-track-output ./projects/myproject JAVA -diffs -commits -e
변형이 있는 경우 관련 구성 요소의 diff 및 커밋 기록과 다양하거나 사라진 냄새만 포함하는 예제 파일이 필요하므로 --ATDIVarDiffs
( -diffs
), --ATDIVarCommitHistory
( -commits
) 및 --examples
( -e
) 옵션.
이제 ./genai4atdOutput/smell-track-output/smell_track_myproject_evo.json
에 냄새 추적 파일이 있고 ./genai4atdOutput/smell-track-output/smell_track_myproject_evo_example.json
에 예제 파일이 있습니다.
다음으로 LLM과의 채팅을 실행할 수 있습니다. API는 http://localhost:11434/api/chat
에 있으며 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
--evolution
( -evo
) 옵션을 사용하여 이것이 진화 분석임을 지정합니다.