✅ All 10 engines now build successfully: - Designer, Economy, Event, Factory, Intelligence - Logistic, MacroEntity, Map, Operation, War 🚀 Features implemented: - FAST_BUILD vs FULL_BUILD presets for efficient development - Comprehensive defensive programming (sanitizers, contracts) - 16 C++ libraries integrated via FetchContent - GCC-compatible configuration with stack protection - Unified CMake system across all engines 🛠️ Build commands: - Fast: cmake -DFAST_BUILD=ON .. && make claude-workflow-fast - Full: cmake .. && make (all sanitizers + validation) - Single engine: make economy-engine 🔧 Development workflow optimized for daily iteration. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
8.6 KiB
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 :
- Compilation stricte - Flags "No Trust" avec zéro tolérance
- Static Analysis - Détection de bugs avant exécution
- Fuzzing automatique - Test d'inputs malformés
- Formal Verification - Preuve mathématique de propriétés
- Concurrency Analysis - Détection de race conditions
- Coverage-guided testing - Feedback de couverture de code
- ABI/Interface validation - Compatibilité entre versions
- 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"