Skip to content

Conversation

@AnthonyGuillauma
Copy link
Owner

  • Ajout des fonctionnalités de base pour l'analyse de logs Apache.
  • Gestion des erreurs de parsing.
  • Exportation en JSON.
  • Documentation initiale et mise en place des tests unitaires.

AnthonyGuillauma and others added 30 commits March 21, 2025 20:44
- Mise à jour du titre du projet
- Ajout d'une courte description du projet
- Ignore l'environnement virtuel
- Ignore les fichiers propres à Python
- Ignore les fichiers propres aux IDE
- Initialisation du fichier principal de l'applicatin
- Ajout de la docstring du module main.py
- Ecriture du logo (format ASCII) de l'application dans la CLI depuis le fichier main.py au lancement de l'application
- Utilisation de la bibliothèque argparse
- Création du fichier parseur_arguments_cli.py pour gérer les arguments en CLI
- Implémentation de la classe ParseurArgumentsCLI pour analyser les arguments en CLI
- Ajout de l'exception ArgumentCLIException pour capturer et gérer les erreurs de parsing des arguments en CLI
- Mise à jour de main.py pour intégrer l'analyse des arguments en CLI
- Mise à jour du fichier main.py pour intégrer l'analyse des arguments CLI qui a été oubliée lors de la précédente PR
- Utilisation de la bibliothèque re
- Vérification que le chemin du fichier log Apache ne contient que les
caractères autorisés
- Vérification que le chemin du fichier de sortie ne contient que les
caractères autorisés
- Ajout du caractère ':' dans les caractères autorisés dans les chemins
fournis par la CLI afin d'autoriser les chemins commençant par C: ou D:
- Création du dossier tests où seront rangés les tests unitaires
- Ajout des tests unitaires pour ParseurArgumentsCLI afin de vérifier
que l'objet parse, vérifie et retourne les arguments correctement
- Mise en place du fichier pytest.ini afin de faciliter les imports des
modules du dossier /app depuis les tests du dossier /test
- Ignore les fichiers propres à Pytest
- Ignore les fichiers propres à Coverage
- Prise en compte de l'exception SystemExit dans la méthode parse_args
  afin de renvoyé une exception ArgumentCLIException pour afficher un
  message personnalisé
- Suppression d'un except Exception dans parse_args de
  ParseurArgumentsCLI qui était inutile car l'exception ne peut pas être
  levé puisque la méthode ne lève que des exceptions de type SystemExit
- Ajout d'une fonction afin de tester qu'un exception est bien renvoyée
dans le cas où un argument est passé par la CLI mais qu'il
n'est pas reconnu par le parseur.
- Ajout de la classe ParseurLogApache
- Vérification que le fichier log existe lors de
l'initialisation de l'objet ParseurLogApache
- Affichage d'un message lorsque le fichier log
n'existe pas
- Ajout de la classe FichierLogApache qui est une classe qui représente
  un fichier de log Apache
- Ajout de EntreeLogApache qui est une classe qui représente une entrée
  dans un fichier de log Apache
- Ajout de ClientInformations qui est une classe qui représente les
  informations du client dans une entrée d'un fichier de log Apache
- Ajout de RequeteInformations qui est une classe qui représente les
  informations propres à la requête dans une entrée d'un fichier de log
  Apache
- Ajout de ReponseInformations qui est une classe qui représente les
  informations de la réponse dans une entrée d'un fichier de log Apache
- Ajout de la méthode parse_fichier de ParseurLogApache qui permet de
 parser un fichier de log Apache
- Ajout de la méthode parse_entree de ParseurLogApache qui permet de
parser une entrée d'un fichier de log Apache
- Ajout de get_information_entree de ParseurLogApache qui permet de
  récupérer la valeur d'une information dans une entrée
- Ajout de FormatLogApacheInvalideException qui représente une erreur
  lors de l'analyse syntaxique d'un fichier log
- Modification du fichier main.py pour appeller la fonction parse_entree
  et pour afficher un message en cas d'erreur dans l'analyse
- Amélioration du regex en séparent les groupes ancienne_url et
  agent_utilisateur afin de permettre à une entrée d'avoir une ancienne
  url mais pas un agent utilisateur (ou inversement), tandis que ce
  n'était pas possible dans les versios précédentes
- Modification de l'erreur .coverage/ en .coverage puisque .coverage est un
  fichier et non un dossier
- Ajout des tests unitaires pour la classe ParseurLogApache afin de
  vérifier que la classe parvient à faire une analyse syntaxique
  correcte d'un fichier de log Apache
- Modification du regex qui représente une entrée d'un fichier de log
  Apache afin qu'il vérifie également que la date dans une entrée est
  dans un format valide
- Utilisation de la bibliothèque typing et dataclasses
- Simplification de la classe en dataclass
- Ajout de vérification des types des attributs
- Modifiation du test unitaire test_parsage_entree_valide suite à une erreur due aux précédents commits qui ont
  modifié le nom de l'attribut code_statut_http
- Ajout de commentaires et de sauts de ligne aux méthodes de ParseurLogApache afin de rendre le fichier plus lisible
- Suppression de la méthode __fichier_existe dans ParseurLogApache qui était utilisée qu'une
  seule fois en déplacant son contenu directement dans le __init__
- Ajout d'un except pour les Exceptions qui affiche un message en
  indiquant qu'une erreur interne s'est produite
- Utilisation de la bibliothèque Sphinx
- Ajout du dossier 'docs' contenant toute la documentation du projet
- Ajout des fichiers .rst pour ajouter une page d'accueil ainsi que les modules dans la documentation
- Modification des docstrings des classes dans le dossier donnees ( modification mot-clé Attributes en Args) afin d'éviter des erreurs de génération avec Sphinx
- Ajout du dossier .github et workflows
- Ajout du fichier documentation.yaml qui contient l'action pour générer
  la documentation
- Ajout de l'action sur chaque push vers la branche develop
- Ajout des tests unitaires automatiques incluant un test de couverture
- Ajout des tests sur les push de la branche develop
- Les tests seront effectuées sur plusieurs versions de Python
- Création d'un artéfact pour chaque version Python
- Les artefacts contiennent les rapports de tests et de couverture
AnthonyGuillauma and others added 17 commits March 28, 2025 22:09
- Ajout d'une vérification pour interdire les booléens dans les
attributs de la classe ReponseInformations
- Ajout des tests unitaires pour les classes ClientInformations,
  RequeteInformations et ReponseInformations
- Ajout de la classe AnalyseurLogApache qui retourne des statistiques
  sur un fichier de log Apache
- Modification de main.py pour récupérer l'analyse complète du fichier
- Création d'un fichier conftest.py qui contient toutes les fixtures et
  les données générales
- Ajout des tests unitaires pour la classe AnalyseurLogApache
- Ajout des fichiers .rst pour ajouter la classe AnalyseurLogApache dans la documentation
- Amélioration des docstrings de la classe AnalyseurLogApache pour correspondre au format Google et Sphinx
- Ajout de tests unitaires afin d'augmenter la couverture des tests
  unitaires sur le code
- Amélioration de la docstring des fonctions de test unitaire
- Ajout de la nouvelle dépendance 'pytest-mock' qui est nécessaire pour
  les tests unitaires du module main.py
- Ajout d'une fonction main dans main.py pour faciliter les tests
  unitaires
- Suppression d'une vérification de type dans parseur_log_apache.py qui
  ne pouvait jamais être atteinte grâce au regex
…s dans le workflow (#29)

- Ajout de la dépendance colorama dans le workflow tests.yaml qui était nécessaire dans les tests unitaires du module main.py
- Création du dossier export
- Création de la classe Exporteur dans le module exporteur.py
- Ajout de l'exception ExportationException
- Utilisation de l'exportation dans le module main.py
- Ajout des tests unitaires pour la classe Exporteur
- Ajout de la documentation pour la classe Exporteur
- Ajout de la classe AfficheurCLI qui contient les méthodes pour intéragir avec la CLI
- Ajout des tests unitaires d'AfficheurCLI
- Ajout de la documentation d'AfficheurCLI
- Ajout du dossier assets qui contient les éléments visuels de l'application
- Ajout de animations.json dans assets qui contient les ASCIIs des animations
- Ajout du fichier généré par l'application dans le .gitignore afin de faciliter le
  développement
- Modification de certains commentaires erronés
- Mise en conformité du code avec PEP8
- Déplacement de la classe EntreeLogApache vers le fichier entree_log_apache.py
- Mise à jour de la documentation suite à ces modifications
- Mise à jour des tests unitaires suite à ces modifications
- Ajout d'un workflows pour tester que la note du code dans le dossier
  app est supérieure ou égale à 9
- Ajout de la description du projet
- Ajout d'une table des matières
- Ajout de la partie des  fonctionnalités
- Ajout de la partie de l'utilisation de base
- Ajout de la partie de la documentation
- Ajout de la partie des tests unitaires
- Ajout de la licence
- Ajout du fichier requirements.txt qui contient les dépendances du
 projet
 - Ajout de la dépendance colorama dans requirements.txt
 - Ajout de la dépendance sphinx et de ses dépendances dans
 requirements.txt
 - Ajout de la dépendance pytest et de ses dépendances dans
 requirements.txt
- Ajout d'une précaution concernant l'affichage de caractères unicodes
  par l'application dans le terminal
- Ajout de la partie utilisation
- Ajout de la partie du format de log Apache
- Ajout de la partie prévention de l'affichage d'unicode
- Mise en place du workflow de la documentation sur une pull request
  vers la branche main
- Mise en place du workflow des tests unitaires sur une pull request
  vers la branche main ou develop
- Mise en place du workflow de la qualite du code sur une pull request
  vers la branche main ou develop
- Ajout de commentaires sur les workflows
@AnthonyGuillauma AnthonyGuillauma merged commit 2789670 into main Apr 5, 2025
6 checks passed
@AnthonyGuillauma AnthonyGuillauma deleted the develop branch April 5, 2025 17:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants