Files
TD2_DEV51_Qualite_Algo_aissi/complexite_cyclo_1.md
2025-09-18 20:37:27 +00:00

1.3 KiB

Complexité Cyclomatique - Projet ping-report

ping-report.c

  • main() : 4

daemon.c

  • create_daemon() : 4
  • ping_request() : 2
  • send_check() : 3
  • check_keep_working() : 4
  • daemon_work() : 3

db-sqlite.c

  • db_connect() : 1
  • db_disconnect() : 1
  • insert_hourly_report() : 1

utils.c

  • write_pid_file() : 2
  • remove_file() : 1

stats.c

  • get_ping_from_temp_log() : 143 (refactorisé)
  • write_ping_log() : 4
  • set_stats_ping() : 123 (refactorisé)

Améliorations apportées

Fonctions refactorisées (complexité > 6)

1. get_ping_from_temp_log() : 14 → 3

  • Divisée en 5 fonctions d'aide
  • Chaque fonction fait une seule chose
  • Plus facile à tester et déboguer

2. set_stats_ping() : 12 → 3

  • Divisée en 3 fonctions d'aide
  • Structure PingStats pour clarifier
  • Logique de calcul séparée

Avantages (comme vu en cours)

  • Code plus lisible
  • Maintenance plus simple (si un developpeur veut changer une donnée, il peut le faire à un seul endroit pour que tout puisse changer. Cela évite aussi de copier coller des bouts de codes )
  • Tests unitaires possibles
  • Réutilisabilité des fonctions d'aide

Le calcul de la complexité de chaque fonction modifiée a été mise en commentaire directement.