Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
f0b5484
Docs : Mise à jour du README.md
AnthonyGuillauma Mar 21, 2025
eb55843
Chore : Ajout du gitignore et d'éléments à ignorer
AnthonyGuillauma Mar 21, 2025
1c89f08
Feat : Ajout du fichier main.py
AnthonyGuillauma Mar 21, 2025
d03b836
Refractor : Ajout de la docstring du module main
AnthonyGuillauma Mar 22, 2025
0e5819b
Feat : Ajout du logo de l'application au lancement
AnthonyGuillauma Mar 22, 2025
c89df0f
Feat: Ajout de l'analyse des arguments en CLI
AnthonyGuillauma Mar 22, 2025
9f5f5da
Fix: Ajout de l'analyse des arguments CLI au lancement
AnthonyGuillauma Mar 22, 2025
a883618
Feat: Vérification des chemins passés en argument dans la CLI
AnthonyGuillauma Mar 22, 2025
b5e2635
Fix: Modifiation de la vérification des chemins (#5)
AnthonyGuillauma Mar 22, 2025
be1a888
Test: Ajout des tests unitaires pour ParseurArgumentsCLI (#6)
AnthonyGuillauma Mar 22, 2025
5d9e98f
Test: Ajout du fichier pytest.ini (#7)
AnthonyGuillauma Mar 22, 2025
414293c
Chore: Modification du .gitignore pour les tests unitaires (#8)
AnthonyGuillauma Mar 22, 2025
6cbc77b
Feat: Ajout d'un message en cas d'argument invalide (#9)
AnthonyGuillauma Mar 22, 2025
d667997
Fix: Suppression d'une vérification incorrecte (#10)
AnthonyGuillauma Mar 22, 2025
01d3287
Test: Ajout d'un test unitaire pour ParseurArgumentsCLI (#11)
AnthonyGuillauma Mar 22, 2025
63c8223
Feat: Ajout du parseur pour les logs Apache (#12)
AnthonyGuillauma Mar 22, 2025
d409680
Feat: Ajout de la classe FichierLogApache
AnthonyGuillauma Mar 22, 2025
087f4e3
Feat: Ajout de EntreeLogApache
AnthonyGuillauma Mar 22, 2025
9e28779
Feat: Ajout de ClientInformations
AnthonyGuillauma Mar 22, 2025
c3f7d0b
Feat: Ajout de RequeteInformations
AnthonyGuillauma Mar 22, 2025
1404345
Feat: Ajout de ReponseInformations
AnthonyGuillauma Mar 22, 2025
5058f4c
Feat: Ajout de l'analyse syntaxique de fichier log
AnthonyGuillauma Mar 22, 2025
9cbe38f
Fix: Amélioration du regex pour les entrées des logs Apache (#14)
AnthonyGuillauma Mar 24, 2025
d54e9f7
Chore: Modification .gitignore (#15)
AnthonyGuillauma Mar 24, 2025
75da8ed
Test: Ajout des tests unitaires pour ParseurLogApache (#16)
AnthonyGuillauma Mar 25, 2025
4870023
Fix: Correction du regex de log Apache pour l'horodatage (#17)
AnthonyGuillauma Mar 25, 2025
1c5576b
Feat: Amélioration des classes de données et du parseur (#19)
AnthonyGuillauma Mar 26, 2025
b11265d
Docs: Initialisation de la documentation du projet (#20)
AnthonyGuillauma Mar 26, 2025
86067d6
CI: Documentation (#21)
AnthonyGuillauma Mar 27, 2025
29b6996
CI: Ajout des tests unitaires automatiques (#22)
AnthonyGuillauma Mar 27, 2025
c30d2f8
Fix: Interdiction des booléens dans la classe ReponseInformations (#23)
AnthonyGuillauma Mar 28, 2025
614520a
Test: Ajout des tests unitaires pour les classes des données (#24)
AnthonyGuillauma Mar 28, 2025
8aa62d8
Feat: Ajout de l'analyse statistique de fichier de log Apache (#25)
AnthonyGuillauma Mar 29, 2025
a974b23
Test: Ajout des tests unitaires pour AnalyseurLogApache (#26)
AnthonyGuillauma Mar 29, 2025
9973aa1
Docs: Ajout de la documentation de la classe AnalyseurLogApache (#27)
AnthonyGuillauma Mar 29, 2025
7a87933
Test: Amélioration de la couverture des tests unitaires (#28)
AnthonyGuillauma Mar 29, 2025
9a74e6c
Fix: Ajout de colorama pour corriger l'import dans les tests unitaire…
AnthonyGuillauma Mar 29, 2025
df52607
Feat: Ajout de l'exportation des données (#30)
AnthonyGuillauma Mar 30, 2025
b6c84ab
Feat: Afficheur CLI
AnthonyGuillauma Apr 3, 2025
a2f805a
Chore: Ajout du fichier généré par l'application dans .gitignore (#33)
AnthonyGuillauma Apr 3, 2025
54f5d27
Refactor: Mise en conformité avec PEP8
AnthonyGuillauma Apr 5, 2025
154089c
CI: Qualité du code
AnthonyGuillauma Apr 5, 2025
2005900
Chore: Amélioration du README.md (#35)
AnthonyGuillauma Apr 5, 2025
bf428a3
Chore: Ajout de requirements.txt (#36)
AnthonyGuillauma Apr 5, 2025
c773d50
Chore: Ajout de la précaution d'affichage dans le README.md (#37)
AnthonyGuillauma Apr 5, 2025
82677b8
Docs: Amélioration de la page d'accueil de la documentation (#38)
AnthonyGuillauma Apr 5, 2025
c9cf0ac
CI: Mise en place des workflows sur des pull requests (#39)
AnthonyGuillauma Apr 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions .github/workflows/documentation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Documentation - LogBuster

on:
push:
branches:
- main

# Permissions (lecture et écriture sur la GitHub Page)
permissions:
contents: read
pages: write
id-token: write

jobs:
build:
runs-on: ubuntu-latest

steps:
# Etape 1: Cloner le dépôt
- name: Positionnement sur le dépôt
uses: actions/checkout@v4

# Étape 2 : Installer Python
- name: Mis en place de Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

# Étape 3 : Installer les dépendances
- name: Installation des dépendances
run: |
python -m pip install --upgrade pip
pip install sphinx
pip install sphinx_rtd_theme --break-system-packages
pip install colorama

# Étape 4 : Générer la documentation
- name: Construction de la documentation (avec Sphinx)
run: |
sphinx-build -b html docs/source docs/build/html

# Étape 5 : Sauvegarder l'artefact (pour la GitHub Page)
- name: Sauvegarder la documentation
uses: actions/upload-pages-artifact@v3
with:
path: docs/build/html

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
# Déploiement de la documentation
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
48 changes: 48 additions & 0 deletions .github/workflows/qualite.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Qualité code - LogBuster

on:
pull_request:
branches:
- main
- develop

jobs:
lint:
runs-on: ubuntu-latest

steps:
# Étape 1 : Cloner le dépôt
- name: Checkout du code
uses: actions/checkout@v4

# Étape 2 : Installer Python
- name: Configuration de Python
uses: actions/setup-python@v4
with:
python-version: '3.x'

# Étape 3 : Installer les dépendances
- name: Installation des dépendances
run: |
python -m pip install --upgrade pip
pip install pylint
pip install colorama

# Étape 4 : Lancement de l'analyse
- name: Analyse avec Pylint (note >= 9.0 requise)
run: |
pylint app > tests-resultats-qualite.txt || true
SCORE=$(grep "Your code has been rated at" tests-resultats-qualite.txt | awk '{print $7}' | cut -d"/" -f1)
echo "Le score du code dans le dossier app est de $SCORE"
SCORE_VALIDE=$(echo "$SCORE >= 9.0" | bc)
if [ "$SCORE_VALIDE" -ne 1 ]; then
echo "Erreur: La note du code est inférieur à 9."
exit 1
fi

# Sauvegarder l'artefact
- name: Upload du rapport Pylint
uses: actions/upload-artifact@v4
with:
name: rapport-qualite-code
path: tests-resultats-qualite.txt
53 changes: 53 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Tests unitaires - LogBuster

on:
pull_request:
branches:
- main
- develop

# Permissions (lecture uniquement)
permissions:
contents: read

jobs:
pytest:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] # Liste des versions de Python à tester

steps:
# Étape 1 : Cloner le dépôt
- name: Cloner le dépôt
uses: actions/checkout@v4

# Étape 2 : Installer Python
- name: Installer Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

# Étape 3 : Installer les dépendances
- name: Installer les dépendances
run: |
python -m pip install --upgrade pip
pip install colorama
pip install pytest
pip install pytest-cov
pip install pytest-mock

# Étape 4 : Lancer les tests unitaires
- name: Lancer les tests unitaires
run: |
cd tests
pytest --basetemp=resultats_pytest --verbose --cov=../app --cov-report=term-missing --cov-report=xml:resultats_pytest/tests-couverture.xml --junitxml=resultats_pytest/tests-rapport.xml

# Étape 5 : Sauvegarder les artefacts
- name: Sauvegarder les résultats de test
if: always() # Sauvegarde même si les tests échouent
uses: actions/upload-artifact@v4
with:
if-no-files-found: error
name: rapport-tests-unitaires-python-${{ matrix.python-version }} # Nom de l'artefact
path: tests/resultats_pytest # Eléments à sauvegarder
23 changes: 23 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Environnement virtuel
.venv/

# Fichiers propres à Python
*.pyc
__pycache__/

# Fichiers propres à VisualStudioCode
.vscode/
.idea/

# Fichiers propres à Pytest
.pytest_cache/

# Fichiers propres à Coverage
.coverage
htmlcov/

# Fichiers de la documentation sphinx
docs/build/

# Fichier de tests durant le développement
analyse-log-apache.json
119 changes: 117 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,117 @@
# code_source
C - Analysateur de fichiers logs
# LogBuster

```
.-. .-') .-') .-') _ ('-. _ .-') ,---.
\ ( OO ) ( OO ). ( OO) ) _( OO)( \( -O ) | |
,--. .-'),-----. ,----. ;-----.\ ,--. ,--. (_)---\_)/ '._(,------.,------. | |
| |.-') ( OO' .-. ' ' .-./-') | .-. | | | | | / _ | |'--...__)| .---'| /`. '| |
| | OO )/ | | | | | |_( O- )| '-' /_) | | | .-') \ :` `. '--. .--'| | | / | || |
| |`-' |\_) | |\| | | | .--, \| .-. `. | |_|( OO ) '..`''.) | | (| '--. | |_.' || .'
(| '---.' \ | | | |(| | '. (_/| | \ | | | | `-' /.-._) \ | | | .--' | . '.'`--'
| | `' '-' ' | '--' | | '--' /(' '-'(_.-' \ / | | | `---.| |\ \ .--.
`------' `-----' `------' `------' `-----' `-----' `--' `------'`--' '--''--'
```

Bienvenue dans le monde de LogBuster, l'outil ultime pour analyser, décortiquer et sauver vos logs Apache des griffes du chaos. Vous avez des logs qui traînent, qui sont indéchiffrables ou tout simplement encombrants ? Pas de panique, LogBuster est là pour les attraper, les analyser et vous offrir des statistiques claires et précises, comme jamais auparavant !

## 📋 Table des matières

- [👻 Fonctionnalités](#-fonctionnalités)
- [📦 Installation](#-installation)
- [🛠️ Utilisation de base](#️-utilisation-de-base)
- [⚠️ Précautions](#️-précautions)
- [📖 Documentation](#-documentation)
- [🧪 Lancer les tests](#-lancer-les-tests)
- [📜 Licence](#-licence)

## 👻 Fonctionnalités

- 📄 Parsing avancé de logs Apache.
- 📉 Extraire des statistiques clés.
- 🗂️ Ranger les données par catégorie.
- 🧹 Indiquer les erreurs de format avec précision.
- 🚚 Exporter les données en JSON.

## 📦 Installation

### Bash (linux/macOS)
```bash
git clone https://github.com/AnthonyGuillauma/code_source
cd code_source
python -m venv .venv
source .venv/bin/activate # Activation de l'environnement virtuel sous Bash
pip install -r requirements.txt
```

### Windows (cmd)
```bash
git clone https://github.com/AnthonyGuillauma/code_source
cd code_source
python -m venv .venv
.venv\Scripts\activate # Activation de l'environnement virtuel sous Windows
pip install -r requirements.txt
```

## 🛠️ Utilisation de base

```
python app/main.py chemin_log [-s SORTIE]
```
- `chemin_log` : Le chemin vers le fichier de log Apache à analyser.
- `-s SORTIE` (optionnel) : Le chemin où sauvegarder les résultats de l'analyse. Si non spécifié, les résultats seront sauvegardés dans un fichier `analyse-log-apache.json`.

## ⚠️ Précautions

Le projet LogBuster utilise des caractères Unicode, tels que des symboles spéciaux, dans le terminal pour rendre l'affichage plus plaisant. Assurez-vous que votre terminal est configuré pour prendre en charge l'affichage de caractères Unicode afin de profiter pleinement de l'expérience utilisateur.

Si vous rencontrez des problèmes d'affichage (comme des symboles manquants ou mal rendus), vous pouvez essayer les solutions suivantes :

- Utiliser un terminal compatible avec Unicode (par exemple, Terminal sous macOS, Windows Terminal sous Windows, ou des terminaux comme GNOME Terminal ou Konsole sous Linux).
- Vérifier que votre terminal utilise une police qui prend en charge les caractères Unicode (par exemple, DejaVu Sans Mono ou Consolas).

## 📖 Documentation

La documentation complète du code du projet se situe [ici](https://anthonyguillauma.github.io/code_source/
).

Si vous souhaitez la générer vous même, suivez ces étapes :

Tout d'abord, placez-vous dans le dossier `docs` qui contient les fichiers sources de la documentation :

```bash
cd docs
```

Puis, générez la documentation via la commande suivante :

```bash
./make html
```

Enfin, ouvrez le fichier html `build/html/index.html` généré dans un navigateur.

## 🧪 Lancer les tests

Les tests unitaires du projet peuvent être exécutés avec pytest. Pour lancer les tests, assurez-vous d'avoir activé l'environnement virtuel et installé les dépendances.

Premièrement, placez-vous dans le dossier `tests` qui contient les fichiers de configuration pour les tests unitaires :

```bash
cd tests
```

Ensuite, exécutez les tests avec la commande suivante :

```bash
pytest
```

Enfin, si vous souhaitez également afficher la couverture des tests unitaires, utilisez la commande suivante :

```bash
pytest --cov=../app --cov-report=term-missing
```

# 📜 Licence

Ce projet est sous licence MIT.
Loading