diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/ HTML_specifie_chemin.png b/ift3913_tp2/Tester_des_metriques_3913TP2/ HTML_specifie_chemin.png deleted file mode 100644 index b4651fb..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/ HTML_specifie_chemin.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/3913tp2.py b/ift3913_tp2/Tester_des_metriques_3913TP2/3913tp2.py deleted file mode 100644 index 81f1858..0000000 --- a/ift3913_tp2/Tester_des_metriques_3913TP2/3913tp2.py +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin.env python -import os -from trace import CoverageResults - -def count_lines(directory, suffix=".java"): - "Compter le nombre de lignes dans le fichier de suffixe spécifié" - total = 0 - for root, _, files in os.walk(directory): - for file in files: - if file.endswith(suffix): - with open(os.path.join(root, file), "r", encoding="utf-8") as f: - total += len(f.readlines()) - return total - -# 1. Testez le rapport code/code principal -src_directory = "/Users/yalin/Desktop/jfreechart-master/src/main" -test_directory = "/Users/yalin/Desktop/jfreechart-master/src/test" -src_lines = count_lines(src_directory) -test_lines = count_lines(test_directory, "Test.java") #calculer tous les fichiers qui doivent être testés -ratio = test_lines / src_lines if src_lines != 0 else 0 -print(f"1: Rapport entre le code de test et le code principal: {ratio:.2f}") - -# 2. Taux de défauts -def run_tests_and_count_failures(): - "Exécutez des tests et comptez les échecs" - result = os.popen("mvn test").read() - failures = result.count("FAILED") - total_tests = result.count("Tests run:") - return failures, total_tests - -failures, total_tests = run_tests_and_count_failures() -defect_rate = failures / total_tests if total_tests != 0 else 0 -print(f"2:Taux de défauts: {defect_rate:.2f}") - -# 3. Nombre moyen de lignes de cas de test -def average_test_case_length(directory): - "Calculer la longueur moyenne du cas de test" - total_lines = 0 - total_files = 0 - for root, _, files in os.walk(directory): - for file in files: - if file.endswith("Test.java"): - with open(os.path.join(root, file), "r", encoding="utf-8") as f: - total_files += 1 - total_lines += len(f.readlines()) - return total_lines / total_files if total_files != 0 else 0 - -avg_length = average_test_case_length(test_directory) -print(f"3:Nombre moyen de lignes de cas de test: {avg_length:.2f}") - -# 4.Calculer la couverture du document de test -# Fonction pour compter les fichiers de test -def count_test_files(directory): - """ - Compte tous les fichiers se terminant par 'Test.java' dans le répertoire spécifié. - """ - test_files_count = 0 - - for foldername, subfolders, filenames in os.walk(directory): - for filename in filenames: - if filename.endswith('Test.java'): - test_files_count += 1 - - return test_files_count - -# Fonction pour calculer la couverture -def calculate_coverage(total_requirements, total_test_files): - - coverage_percentage = (total_test_files / total_requirements) * 100 - return coverage_percentage # retourner le valeur de la couverture - -total_test_files_count = count_test_files(test_directory) -coverage_percentage = calculate_coverage(src_lines, total_test_files_count) -print(f"4:Couverture du document de test: {coverage_percentage:.2f}%") - - # Déterminer le répertoire de sortie et le nom du fichier -output_directory = '/Users/yalin/Desktop/Tester_des_metriques_3913TP2' -output_file_path = os.path.join(output_directory, 'tache2_results.html') - -html_document = """ - - - - Tache2 Results - - -

Tache2 Results

-

1: Rapport code de test/code principal: {}

-

2: Taux de defauts: {:.2f}

-

3: Nombre moyen de lignes de cas de test: {:.2f}

-

4: Couverture du document de test: {:.2f}%

- - -""".format(ratio, defect_rate, avg_length, coverage_percentage) - - -#Écrire un document HTML dans un fichier -with open(output_file_path, 'w', encoding='utf-8') as html_file: - html_file.write(html_document) - -print("Les résultats HTML sont écrits dans le fichier tache2_results.html") - - - - - diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/HTML_page.png b/ift3913_tp2/Tester_des_metriques_3913TP2/HTML_page.png deleted file mode 100644 index 37216cd..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/HTML_page.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/README.md b/ift3913_tp2/Tester_des_metriques_3913TP2/README.md deleted file mode 100644 index 2fe989d..0000000 --- a/ift3913_tp2/Tester_des_metriques_3913TP2/README.md +++ /dev/null @@ -1,101 +0,0 @@ -README.md -# Outil de Mesure Tache2 - -Ce projet utilise un script Python pour analyser les tests du projet JFreeChart, en particulier en testant le rapport code de test/code principal, le taux de défauts des tests et la longueur moyenne des cas de test. - -## Prérequis - -Avant d'utiliser cet outil, assurez-vous d'avoir les prérequis suivants installés sur votre système : -- Python 3.x.x -- Apache Maven -- Un dépôt git cloné localement - -## Description -1. Le script “3913tp2.py” réalise les analyses suivantes : - -Rapport entre le code de test et le code principal : Il détermine combien de lignes sont dédiées aux tests par rapport au code source principal. -Taux de défauts : Il exécute les tests en utilisant Maven et compte combien d'entre eux échouent. -Nombre moyen de lignes de cas de test : Il calcule la longueur moyenne de chaque fichier de test. - -2. Le script “Temps_moyen_reparation.py” réalise un analyse suivante : - -Ce script Python est conçu pour calculer le temps moyen nécessaire pour apporter des modifications à un projet git en analysant les logs git. -Elle ne peut calculer qu'approximativement le décalage horaire entre le moment où un fichier a été créé et le moment où il a été modifié pour la dernière fois. - - -## Comment utiliser -1. Assurez-vous d'avoir Python installé - 1.1 Vous pouvez utiliser la commande "python --version" dans votre terminal pour vérifier s'il est déja installé. - - 1.2 Sinon, vous pouvez l'installer dans ce lien : https://www.python.org/ - -2. Assurez-vous qu'Apache Maven est correctement installé et configuré sur votre système avant d'exécuter le script - 2.1 Vous pouvez exécuter la commande "mvn --version" dans votre terminal. - - 2.2 Si la commande Not found s'affiche après avoir exécuté "mvn --version" dans le terminal, cela est généralement dû au fait que Maven n'a pas été ajouté à la variable d'environnement PATH de votre système. - - 2.3 Les méthodes suivantes peuvent nous aider à résoudre ce problème. - - 2.4 Vérifiez si Maven est installé : confirmez d'abord que vous avez bien installé Maven et que vous pouvez y accéder via le chemin absolu dans le terminal. - Vous peuvez exécuter la commande "ind / -name mvn 2>/dev/null" dans votre terminal pour trouver son chemin absolu. - - Si c'est trouvé: - (1)Ajoutez ensuite le chemin absolu à la variable PATH. On peut utiliser la commande : - -- utilisez Bash comme shell par défaut: - "echo 'export PATH=/path/to/maven/bin:$PATH' >> ~/.bash_profile" - -- utilisez Zsh comme comme shell par défaut: - "echo 'export PATH=/path/to/maven/bin:$PATH' >> ~/.zshrc" - - (2)Redémarrez votre terminal ou exécutez la commande suivant pour que les modifications prennent effet - -- utilisez Bash comme shell par défaut: - "source ~/.bash_profile" - -- utilisez Zsh comme shell par défaut: - "source ~/.zshrc" - Si non, téléchargez sur ce lien "https://maven.apache.org/". Suivez ensuite les étapes ci-dessus - - 2.5 Après cela, vous devriez pouvoir exécuter la commande mvn --version et voir les informations sur la version Maven. - -3. Assurez-vous d'avoir cloné votre dépôt git localement - 3.1 Si vous souhaitez cloner cette ressource dans un répertoire spécifié, executez la commande "cd path/to/your/project". - Sinon, la ressource sera clonée dans le répertoire dans lequel vous vous trouvez actuellement - - 3.2 Utilisez la command "git clone https://github.com/jfree/jfreechart.git" pour cloner cette ressource localement - Le resource du projet JFreeChart disponible à https://github.com/jfree/jfreechart. - - -4. Telecharge les des scripts sur ton ordinateur. Le script ”Temps_moyen_reparation.py“ doit être placé dans le répertoire cloné car - nous devons utiliser git pour rechercher la date du chaque fichier, afin que le programme puisse mieux être exécuté. - Le lien ver le script :https://github.com/mildshield14/IFT3913/tree/main/ift3913_tp2/Tester_des_metriques_3913TP2 - -5. Entrez le réperatoire où se trouve le script dans le terminal - "cd path/to/your/script" - Example:"/Users/yalin/Desktop/Tester_des_metriques_3913TP2" - -6. Modifiez les autorisations des fichiers avec la commande " chmod a+x 3913tp2.py" dans votre terminal - -7. Exécutez le script avec la commande : python .py - -8. Le résultat est imprimé sous la forme suivante - “1: Rapport entre le code de test et le code principal: folat” - “2:Taux de défauts: float” - “3:Nombre moyen de lignes de cas de test: float” - -9. Un fichier "tache2_results.html" est généré et les résultats seront enregistrés dans ce fichier aussi. - -10. Vous pouvez ouvrir ce fichier dans un navigateur web pour afficher les métriques. C'est une option, parce que le résultat a été imprimé sur la console. - - -11. Pour exécuter le script "Temps_moyen_reparation.py", vouz devez vous assurer que votre répertoire de travail actuel est le répertoire racine de jfreechart. - -Example:"(base) yalin@YalindeMacBook-Air jfreechart % " -Sinon, executez la command "cd /path/to/directory/" pour y aller - - 11.1 exécuter la commande "python git.py" pour exécuter le script -12. Le résultat est imprimé sous la forme suivante - "Le temps moyen de réparation est: float heur/s" - -## Dépendances -1. Le script suppose que Maven est installé et est accessible depuis le terminal (i.e., dans le PATH). -2. Le projet JFreeChart doit avoir une structure de répertoire standard avec src/main et src/test. -3. Cet outil suppose que le projet JFreeChart est situé à /Users/yalin/Desktop/jfreechart. Vous pouvez modifier les variables src_directory et test_directory dans le script pour pointer vers votre répertoire de projet JFreeChart. -4. Le html généré final se trouve dans le repertoire '/Users/yalin/Desktop/Tester_des_metriques_3913TP2'. Vous pouvez changer les variables output_directory et output_file_path dans le script afin de pouvoir retrouver le fichier plus facilement. diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat0.png b/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat0.png deleted file mode 100644 index c597ad6..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat0.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat1.png b/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat1.png deleted file mode 100644 index 8b97b90..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat1.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat2.png b/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat2.png deleted file mode 100644 index 4dfa4bb..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat2.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat3.png b/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat3.png deleted file mode 100644 index 9c19efb..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat3.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat4.png b/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat4.png deleted file mode 100644 index 1864cd8..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat4.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat_terminal.png b/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat_terminal.png deleted file mode 100644 index d0fdfb7..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/SonarQube_Resultat_terminal.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/Temps_moyen_reparation.py b/ift3913_tp2/Tester_des_metriques_3913TP2/Temps_moyen_reparation.py deleted file mode 100644 index 23dafcf..0000000 --- a/ift3913_tp2/Tester_des_metriques_3913TP2/Temps_moyen_reparation.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin.env python -import os -import subprocess -from datetime import datetime, timedelta - -# Obtenez l'heure de création du fichier et de la dernière modification à partir du -# journal git pour calculer le décalage horaire, ajoutez la somme de tous les décalages horaires et divisez-la par le nombre de décalages horaires. -# Nous pouvons obtenir approximativement une heure pour réparer le fichier. - -def calculate_average_fix_time(repoPath): - os.chdir(repoPath) # Passer au chemin d'accès à l'entrepôt - - # Extraire les informations de date des journaux git - log = subprocess.check_output(['git', 'log', '--pretty=format:%cd'], universal_newlines=True) - dates = [datetime.strptime(date, '%c %z') for date in log.splitlines()] # Convertir les informations récupérées au format de date - - if len(dates) <= 1: - return None # S'il n'y a qu'une seule date ou aucune date, retourner rien - - timeDiffs = [] # Créer une liste pour stocker le décalage horaire - - # Parcourer chaque elemenys dans liste de dates et calculer le décalage horaire entre deux dates - for i in range(1, len(dates)): - dateCurrent = dates[i - 1] - datePrevious = dates[i] - diff = dateCurrent - datePrevious - hoursDiff = diff.total_seconds() / 3600 # Convertir les données de temps en heures - timeDiffs.append(hoursDiff) - - return sum(timeDiffs) / len(timeDiffs) # Calculer les heures moyennes - -average_fix_time = calculate_average_fix_time("jfreechart") # Votre chemin du répertoire JFreeCHart - -print(f"Le temps moyen de réparation est: {average_fix_time:.2f} heur/s") - - - - - diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/Temps_moyen_reparation_resultat.png b/ift3913_tp2/Tester_des_metriques_3913TP2/Temps_moyen_reparation_resultat.png deleted file mode 100644 index aa72f5b..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/Temps_moyen_reparation_resultat.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat1.png b/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat1.png deleted file mode 100644 index cc0ffea..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat1.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat3.png b/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat3.png deleted file mode 100644 index 2905804..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat3.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat4.png b/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat4.png deleted file mode 100644 index 8f830b6..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat4.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat5.png b/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat5.png deleted file mode 100644 index caaecba..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat5.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat6.png b/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat6.png deleted file mode 100644 index 1e446fe..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat6.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat7.png b/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat7.png deleted file mode 100644 index 1847e74..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/mvn_test-resultat7.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/quatre_metriques_test_resultat.png b/ift3913_tp2/Tester_des_metriques_3913TP2/quatre_metriques_test_resultat.png deleted file mode 100644 index 01876c1..0000000 Binary files a/ift3913_tp2/Tester_des_metriques_3913TP2/quatre_metriques_test_resultat.png and /dev/null differ diff --git a/ift3913_tp2/Tester_des_metriques_3913TP2/tache2_results.html b/ift3913_tp2/Tester_des_metriques_3913TP2/tache2_results.html deleted file mode 100644 index cfc003f..0000000 --- a/ift3913_tp2/Tester_des_metriques_3913TP2/tache2_results.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Tache2 Results - - -

Tache2 Results

-

1: Rapport code de test/code principal: 0.34114634157951607

-

2: Taux de defauts: 0.00

-

3: Nombre moyen de lignes de cas de test: 204.76

-

4: Couverture du document de test: 0.17%

- -