Files
TD2_DEV51_Qualite_Algo/Compte-rendu.md

75 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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 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