xruben136x / SZZ_unisannio

Implementation of SZZ Algorithm
Mozilla Public License 2.0
4 stars 0 forks source link

Tool-unification #17

Closed nik200122 closed 10 months ago

nik200122 commented 10 months ago

This issue has been opened to integrate the functionality of the two separated version into a single one. Here are reported the questions given to chatGPT.

Question: Io vorrei che il mio codice chiamasse due funzioni diverse in base ad una flag da specificare come ad esempio"-i". In particolare se viene specificata allora l'utente deve passare anche il parametro --issue con il path del documento JSON contenente le issue, altrimenti può invocare lo script passando solo il parametro repo_path. Come posso fare?

Answer: Puoi implementare questa logica verificando la presenza dell'opzione -i e, se presente, richiamare una funzione specifica che richiede il parametro --issue. Altrimenti, richiami una funzione diversa che non richiede il parametro. Ecco un esempio di come potrebbe essere implementato:

import argparse import json

def szz_issue(repo_path, issue_data):

Implementazione della funzione szz_issue

pass

def alternative_function(repo_path):

Implementazione della funzione alternativa

pass

if name == 'main': parser = argparse.ArgumentParser(description="""Insert repository name""") parser.add_argument('--repo-path', type=str, help="The absolute path to a local copy of the git repository from where the git log is taken.")

# Aggiungi l'opzione -i e specifica il parametro --issue
parser.add_argument('-i', '--issue', type=str, help="The absolute path to a local copy of a JSON file containing the issue bug report of the repository")

args = parser.parse_args()
path_to_repo = args.repo_path

if args.issue:
    # Se -i è presente, richiama la funzione szz_issue con il parametro --issue
    try:
        with open(args.issue) as issue_path_file:
            issue_data = json.load(issue_path_file)
        szz_issue(path_to_repo, issue_data)
    except json.JSONDecodeError as e:
        print(f"Error decoding JSON content: {e}")
else:
    # Altrimenti, richiama la funzione alternativa senza il parametro --issue
    alternative_function(path_to_repo)

In questo esempio, se l'opzione -i è presente nella riga di comando, la funzione szz_issue viene chiamata con il parametro --issue. Altrimenti, la funzione alternativa viene chiamata senza il parametro --issue.