Files
TD2_DEV51_Qualite_Algo/Compte-rendu.md

78 lines
1.9 KiB
Markdown
Raw Normal View History

2025-09-15 17:41:11 +02:00
## 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
2025-09-18 13:19:43 +02:00
## Get_ping_from_temp_log
![alt text](image.png)
![alt text](image-1.png)
![alt text](image-2.png)
## 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 :
```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
2025-09-15 17:41:11 +02:00