Files
TD2_DEV51_Qualite_Algo/Compte-rendu.md
2025-09-18 13:25:33 +02:00

1.9 KiB
Raw Blame History

Calculer la complexité

damemon.c

  • Fonction create_daemon: complixité cyclomatique de 4
  • Fonction ping_request: complixité cyclomatique de 1
  • Fonction send_check: complixité cyclomatique de 3
  • Fonction check_keep_working: complixité cyclomatique de 4
  • Fonction daemon_work: complixité cyclomatique de 3

db-sqlite.c

  • Fonction db_connect : complixité cyclonique de 1
  • db_disconnect : 1
  • insert_hourly_report: 1

ping-report.c

  • main : complixité cyclonique de 4

stats.c

  • get_ping_from_temp_log : complixité cyclonique de 15
  • write_ping_log: complixité cyclonique de 4
  • set_stats_ping : complixité cyclonique de 13

utils.c

  • write_pid_file : complixité cyclonique de 2
  • remove_file : complixité cyclonique de 1

Get_ping_from_temp_log

alt text alt text alt text

Set_stats_ping

Objectif

  • Découper les fonctions en unités simples et réutilisables.
  • Réduire limbrication des conditions pour rendre le code plus clair.
  • Sécuriser les calculs (éviter la division par zéro).
  • Faciliter la maintenance et la lecture.

🔹 Découpage de get_ping_from_temp_log

1. extract_ping_from_line

  • Rôle : soccuper uniquement de lextraction via regex.
  • Prend une ligne en entrée.
  • Retourne la valeur du ping si trouvée, sinon erreur.

2. read_ping_from_file

  • Rôle : lecture du fichier et appel à extract_ping_from_line.
  • Parcourt toutes les lignes.
  • Retourne le premier ping trouvé ou NULL.

3. get_ping_from_temp_log

  • Alias avec le chemin en dur :
    return read_ping_from_file("/var/log/ping-report/last-ping.log");
    
    
    

🔹 Inversion des conditions: set_stats_ping

  • Plutot que d'imbriquer des if ... else , on fait if(...){ continue; } quand on veut ignorer une ligne
  • Moins de niveaux de blocs if dans un if
  • Sécurisation : si nb_ping == 0, la moyenne reste 0.0 => evite une division par zéro