warfactoryracine/docs/03-implementation/ADVANCED_TESTING.md
StillHammer f6c3b3430d Add comprehensive IDataTree configuration system
- Create modular IDataNode interface with tree navigation, pattern matching, and typed access
- Implement IDataTree container with manual hot-reload capabilities
- Add DataTreeFactory for flexible data source management
- Support hierarchical data with per-node blobs and children
- Enable pattern matching search (*wildcards) across entire subtrees
- Provide type-safe property access (getString, getInt, getBool, getDouble)
- Include hash system for validation and synchronization (getDataHash, getTreeHash)
- Add property-based queries with lambda predicates for gameplay data filtering
- Fix window positioning system to eliminate UI overlaps
- Enforce explicit type declarations (ban auto keyword) in CLAUDE.md coding standards

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 10:42:35 +08:00

8.6 KiB

🛡️ Warfactory Advanced Testing & Verification System

Ce document décrit le système de test et vérification avancé intégré dans Warfactory, conçu pour détecter automatiquement les bugs, vulnerabilités et problèmes de performance sans intervention constante.

🎯 Vue d'ensemble

Le système combine 8 couches de défense automatisées :

  1. Compilation stricte - Flags "No Trust" avec zéro tolérance
  2. Static Analysis - Détection de bugs avant exécution
  3. Fuzzing automatique - Test d'inputs malformés
  4. Formal Verification - Preuve mathématique de propriétés
  5. Concurrency Analysis - Détection de race conditions
  6. Coverage-guided testing - Feedback de couverture de code
  7. ABI/Interface validation - Compatibilité entre versions
  8. Contract-based programming - Assertions partout dans le code

🚀 Installation rapide

# 1. Installer tous les outils automatiquement
./scripts/setup_advanced_tools.sh

# 2. Configurer le projet avec tous les outils
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_ADVANCED_TOOLS=ON ..

# 3. Compiler avec toutes les défenses
make all-engines

# 4. Lancer tous les tests avancés
make test-everything

🔧 Configuration par couches

⚙️ Niveau 1 : Compilation "No Trust"

Activé automatiquement sur tous les engines :

# Erreurs critiques = compilation échoue
-Werror=null-dereference -Werror=array-bounds -Werror=use-after-free
-Werror=uninitialized -Werror=return-type -Werror=format-security

# Sanitizers complets (mode Debug)
-fsanitize=address,undefined,leak,memory,thread,cfi

# Protection runtime maximale
-fstack-protector-all -fstack-clash-protection -D_FORTIFY_SOURCE=3

🔍 Niveau 2 : Static Analysis

# Cppcheck - analyse statique C++
make economy-engine_cppcheck

# Clang Static Analyzer
cmake -DENABLE_STATIC_ANALYSIS=ON ..
make economy-engine

# PVS-Studio (si installé)
make economy-engine_pvs

🎯 Niveau 3 : Fuzzing automatique

libFuzzer (Clang intégré)

make economy-engine_fuzz_run    # 5 minutes de fuzzing

AFL++ (coverage-guided)

make economy-engine_afl_run     # Fuzzing avec feedback

honggfuzz (feedback hardware)

make economy-engine_honggfuzz_run

Fuzzing de tous les engines

make fuzz-all-engines          # Fuzzing massif parallèle

🔬 Niveau 4 : Formal Verification

CBMC - Model Checking

make economy-engine_cbmc       # Vérification mathématique

KLEE - Symbolic Execution

make economy-engine_klee       # Exploration symbolique

🧵 Niveau 5 : Concurrency Analysis

Valgrind Helgrind

make economy-engine_helgrind   # Détection race conditions

Valgrind DRD

make economy-engine_drd        # Détection data races

Intel Inspector (si disponible)

make economy-engine_inspector  # Analyse threading avancée

📊 Niveau 6 : Coverage Analysis

# Génération rapport de couverture
make economy-engine_coverage_run

# Rapport HTML dans economy-engine_coverage_report/
open economy-engine_coverage_report/index.html

🔗 Niveau 7 : ABI Validation

# Créer baseline ABI
make economy-engine_abi_dump
cp economy-engine_current.abi.tar.gz ../abi_baselines/economy-engine_baseline.abi.tar.gz

# Vérifier compatibilité après changements
make economy-engine_abi_check
open economy-engine_abi_report.html

📋 Niveau 8 : Contract Programming

Utilisation dans le code C++ :

#include <warfactory/contracts.hpp>
#include <warfactory/gsl_contracts.hpp>

void process_market_data(gsl::not_null<const double*> price, double volume) {
    // Préconditions automatiques
    WARFACTORY_REQUIRE(std::isfinite(*price));
    WARFACTORY_REQUIRE(volume > 0.0);

    double result = calculate_value(*price, volume);

    // Postconditions automatiques
    WARFACTORY_ENSURE(std::isfinite(result));
    WARFACTORY_PROPERTY_FINITE_VALUES(result);
}

🎮 Modes d'utilisation

🚀 Mode Développement

cmake -DCMAKE_BUILD_TYPE=Debug ..
make economy-engine
# → Tous les sanitizers + assertions activés

Mode Production

cmake -DCMAKE_BUILD_TYPE=Release ..
make economy-engine
# → CFI uniquement, performance optimisée

🔬 Mode Test Complet

cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_ADVANCED_TOOLS=ON ..
make test-everything
# → Tous les outils activés, test marathon

🎯 Mode Fuzzing Intensif

cmake -DENABLE_FUZZING=ON ..
make fuzz-all-engines
# → Fuzzing 24/7 sur tous les engines

📈 Targets disponibles

Par engine (exemple : economy-engine)

# Compilation
make economy-engine

# Static Analysis
make economy-engine_cppcheck
make economy-engine_pvs

# Fuzzing
make economy-engine_fuzz_run      # libFuzzer
make economy-engine_afl_run       # AFL++
make economy-engine_honggfuzz_run # honggfuzz
make economy-engine_fuzz_all      # Tous les fuzzers

# Formal Verification
make economy-engine_cbmc          # Model checking
make economy-engine_klee          # Symbolic execution

# Concurrency
make economy-engine_helgrind      # Race conditions
make economy-engine_drd           # Data races
make economy-engine_inspector     # Intel Inspector

# Coverage
make economy-engine_coverage_run  # Rapport HTML

# ABI
make economy-engine_abi_dump      # Créer baseline
make economy-engine_abi_check     # Vérifier compatibilité

Globaux (tous les engines)

make all-engines                 # Build tout
make fuzz-all-engines            # Fuzzing massif
make analyze-all-engines         # Static analysis
make coverage-all-engines        # Coverage reports
make concurrency-all-engines     # Concurrency analysis
make abi-all-engines             # ABI validation
make test-everything             # TOUT en parallèle

🔧 Configuration avancée

Variables CMake importantes

-DENABLE_ADVANCED_TOOLS=ON       # Active tous les outils
-DENABLE_STATIC_ANALYSIS=ON      # Clang Static Analyzer
-DENABLE_FUZZING=ON             # Support fuzzing
-DCMAKE_BUILD_TYPE=Debug        # Tous les sanitizers

Personnalisation par engine

# Dans engines/Mon-Engine/CMakeLists.txt
warfactory_add_defenses(mon-engine)           # Défenses de base
warfactory_add_fuzzing(mon-engine)            # Fuzzing
warfactory_add_formal_verification(mon-engine) # Vérification formelle
warfactory_add_concurrency_analysis(mon-engine) # Concurrence
warfactory_add_coverage_analysis(mon-engine)   # Coverage
warfactory_add_abi_validation(mon-engine)      # ABI
warfactory_add_gsl_support(mon-engine)         # Guidelines Support Library

🎯 Intégration CI/CD

GitHub Actions exemple

- name: Setup Advanced Tools
  run: ./scripts/setup_advanced_tools.sh

- name: Build with all defenses
  run: |
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_ADVANCED_TOOLS=ON ..
    make all-engines    

- name: Run comprehensive testing
  run: cd build && make test-everything

Détection automatique de régressions

  • ABI changes détectés automatiquement
  • Coverage regressions bloquent les merges
  • Fuzzing crashes remontés immédiatement
  • Contract violations = build failure

🚨 Résolution de problèmes

Si la compilation échoue

# 1. Vérifier les outils installés
./scripts/setup_advanced_tools.sh

# 2. Mode minimal pour débugger
cmake -DCMAKE_BUILD_TYPE=Release ..

# 3. Désactiver temporairement les défenses strictes
cmake -DENABLE_ADVANCED_TOOLS=OFF ..

Si le fuzzing ne trouve rien

# Augmenter la durée
make economy-engine_fuzz_run ARGS="-max_total_time=3600"

# Vérifier les seeds d'entrée
ls build/fuzzing/economy-engine/input/

Si les tests de concurrence échouent

# Analyser les rapports détaillés
cat economy-engine_helgrind.xml
cat economy-engine_drd.xml

📚 Références


💡 Philosophie Warfactory : "Zéro bug en production grâce à la détection automatique exhaustive en développement"