Skip to content

Latest commit

 

History

History
273 lines (193 loc) · 5.77 KB

File metadata and controls

273 lines (193 loc) · 5.77 KB

Guide de contribution à CLF09

Merci de votre intérêt pour contribuer à CLF09 !

Ce document fournit les lignes directrices pour contribuer au projet. Ce sont principalement des recommandations, pas des règles strictes.

Table des matières


Code de conduite

Ce projet s'engage à fournir un environnement accueillant et inclusif. En participant, vous vous engagez à respecter ce code.

Nos standards

  • Être respectueux et inclusif
  • Accepter les critiques constructives avec grâce
  • Se concentrer sur ce qui est le mieux pour la communauté
  • Faire preuve d'empathie envers les autres membres

Comment contribuer ?

Signaler des bugs

Avant de créer un rapport de bug, vérifiez que le problème n'a pas déjà été signalé.

Modèle de rapport de bug :

**Description :**
Description claire du bug.

**Étapes pour reproduire :**
1. Aller sur '...'
2. Cliquer sur '...'
3. Voir l'erreur

**Comportement attendu :**
Ce qui devrait se passer.

**Comportement observé :**
Ce qui se passe réellement.

**Environnement :**
- OS : [ex: Ubuntu 22.04]
- Version Python : [ex: 3.11.5]
- Version CLF09 : [ex: v1.0.0]

Proposer des améliorations

Les suggestions d'amélioration sont suivies via les Issues GitHub. Incluez :

  • Un titre et une description clairs
  • Une description étape par étape de l'amélioration proposée
  • Pourquoi cette amélioration serait utile
  • Les alternatives que vous avez considérées

Soumettre du code

  1. Forkez le dépôt
  2. Créez une nouvelle branche depuis main
  3. Faites vos modifications
  4. Écrivez ou mettez à jour les tests
  5. Assurez-vous que tous les tests passent
  6. Mettez à jour la documentation
  7. Soumettez une Pull Request

Configuration de l'environnement

Prérequis

  • Python 3.11+
  • Docker
  • AWS CLI
  • Git

Configuration locale

  1. Cloner votre fork :
git clone https://github.com/VOTRE-NOM/malware_classification.git
cd malware_classification
  1. Créer un environnement virtuel :
python -m venv venv
source venv/bin/activate  # Sur Windows : venv\Scripts\activate
  1. Installer les dépendances :
pip install -r requirements.txt
pip install -r requirements-dev.txt  # Dépendances de développement
  1. Exécuter les tests :
pytest tests/ -v

Processus de Pull Request

Avant de soumettre

  • Le code suit les standards du projet
  • Tous les tests passent localement
  • Nouveaux tests ajoutés pour les nouvelles fonctionnalités
  • Documentation mise à jour
  • Messages de commit conformes aux guidelines
  • Pas de conflits de merge avec la branche cible

Processus de revue

  1. Les vérifications automatiques doivent passer
  2. Revue de code par au moins un mainteneur
  3. Tests sur l'environnement de staging
  4. Approbation d'un mainteneur
  5. Merge dans la branche cible

Standards de code

Guide de style Python

Nous suivons PEP 8 avec quelques modifications :

Longueur de ligne : Maximum 100 caractères

Imports :

# Bibliothèque standard
import os
import sys

# Bibliothèques tierces
import numpy as np
import pandas as pd

# Modules locaux
from src.models import WindowsClassifier

Docstrings :

def extract_features(file_path: str) -> np.ndarray:
    """
    Extrait les caractéristiques d'un fichier binaire.

    Args:
        file_path (str): Chemin vers le fichier binaire

    Returns:
        np.ndarray: Vecteur de caractéristiques de forme (1615,)

    Raises:
        FileNotFoundError: Si le fichier n'existe pas
        ValueError: Si le format du fichier est invalide
    """
    pass

Type hints : Utilisez toujours les annotations de type :

def predict(self, features: np.ndarray) -> Dict[str, Any]:
    pass

Outils de qualité de code

  • black - Formatage du code
  • isort - Tri des imports
  • flake8 - Linting
  • mypy - Vérification des types
  • pytest - Tests

Messages de commit

Format

<type>(<scope>): <sujet>

<corps>

<footer>

Types

  • feat : Nouvelle fonctionnalité
  • fix : Correction de bug
  • docs : Changements de documentation
  • style : Changements de style de code
  • refactor : Refactoring de code
  • test : Ajout/mise à jour de tests
  • chore : Tâches de maintenance

Exemples

Fonctionnalité :

feat(windows): ajouter calcul d'entropie

- Implémenter l'entropie de Shannon pour l'analyse des bytes
- Ajouter les tests unitaires
- Mettre à jour le pipeline d'extraction

Ferme #123

Correction de bug :

fix(pdf): gérer les fichiers PDF corrompus

Les PDFs corrompus causaient des crashs. Maintenant, les erreurs
sont gérées proprement avec un message approprié.

Corrige #456

Portée (Scope)

  • windows - Détecteur Windows PE
  • pdf - Détecteur PDF
  • url - Détecteur URL
  • office - Détecteur Office/VBA
  • api - API Gateway
  • lambda - Fonctions Lambda
  • frontend - Frontend React
  • tests - Tests
  • docs - Documentation

Questions ?

  • Questions générales : Ouvrez une Discussion GitHub
  • Rapports de bugs : Créez une Issue
  • Demandes de fonctionnalités : Créez une Issue avec le label enhancement

Reconnaissance

Les contributeurs seront ajoutés à :

  • La section auteurs du README.md
  • Le fichier CONTRIBUTORS.md
  • Les notes de version

Merci de contribuer à CLF09 !


Dernière mise à jour : Février 2025