## 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 # Shéma des deux fonctions ## Get_ping_from_temp_log [Get_ping_from_temp_log (PDF)](pdf/Diagramme_get_ping_from_temp_log.pdf) ## Set_stats_ping [Set_stats_ping (PDF)](pdf/Diagramme_set_stats_ping.pdf) ## Objectif - Découper les fonctions en unités simples et réutilisables. - Réduire l’imbrication 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 : s’occuper uniquement de l’extraction 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 : ```c 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