forked from menault/TD2_DEV51_Qualite_Algo
1.9 KiB
1.9 KiB
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
Set_stats_ping
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 :
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