Files
oc-lib/UNUSED_AND_ISSUES.md

7.7 KiB
Raw Blame History

Rapport d'audit — Éléments inutilisés et problèmes identifiés

Généré le 2026-02-18 — branche feature/event


1. Bugs critiques corrigés dans cette session

Fichier Ligne Description Statut
entrypoint.go 652, 664, 676, 688 fmt.Errorf(res.Err) → format string non-constant (erreur de build) Corrigé
models/utils/abstracts.go 136 VerifyAuth déréférençait request.Admin avant de vérifier request != nil Corrigé
models/utils/abstracts.go 68-78 DeepCopy() faisait Unmarshal dans un pointeur nil → retournait toujours nil Corrigé
models/resources/resource.go 176 instances = append(instances) — argument manquant, l'instance n'était jamais ajoutée Corrigé
models/resources/priced_resource.go 63-69 Code mort après return true dans IsBooked() Corrigé
tools/remote_caller.go 118 CallDelete vérifiait req.Body == nil (toujours vrai pour DELETE), court-circuitant la lecture de la réponse Corrigé

2. Debug prints à supprimer (fmt.Println en production)

Ces appels fmt.Println polluent stdout et peuvent exposer des informations sensibles.

Fichier Lignes Contenu
models/bill/bill.go ~197 fmt.Println(err)
models/collaborative_area/collaborative_area_mongo_accessor.go ~95, 109, 118, 123 Debug sur res, sharedWorkspace.AllowedPeersGroup, canFound, peerskey
models/peer/peer_cache.go ~44, 55 URL et "Launching peer execution on..."
models/resources/storage.go ~196 fmt.Println("GetPriceHT", ...)
models/workflow/workflow.go ~158, 164, 170, 176 4× fmt.Println(err)
tools/nats_caller.go ~110, 117, 122, 126 4× fmt.Println() divers
tools/remote_caller.go 227 fmt.Println("Error reading the body...") (devrait utiliser le logger)
dbs/dbs.go 47 fmt.Println("Recovered. Error:\n", r, debug.Stack())

Note : priced_resource.go et data.go corrigés dans cette session.


3. Code commenté significatif

3.1 Validation de pricing désactivée (workflow)

Fichier : models/workflow/workflow.go — ~lignes 631-634

// Should be commented once the Pricing selection feature has been implemented
// if priced.SelectPricing() == nil {
//     return resources, priceds, errors.New("no pricings are selected... can't proceed")
// }

Une vérification de sécurité critique est désactivée. Sans elle, des ressources sans pricing peuvent être traitées silencieusement.

3.2 PAY_PER_USE — stratégie supprimée mais traces restantes

Fichier : models/common/pricing/pricing_strategy.go — lignes 47, 61-63

// PAY_PER_USE  // per request. ( unpredictible )
/*case PAY_PER_USE:
    return bs, true*/

La constante PAY_PER_USE a été supprimée mais les commentaires laissés créent de la confusion.

3.3 Vérification d'autorisation peer désactivée

Fichier : models/resources/resource.go — lignes 98-104

/*if ok, _ := utils.IsMySelf(request.PeerID, ...); ok {*/
profile = pricing.GetDefaultPricingProfile()
/*} else {
    return nil, errors.New("no pricing profile found")
}*/

Le profil par défaut est retourné sans vérifier si le pair est bien myself. Sécurité à revoir.


4. Logique erronée non corrigée (à traiter)

4.1 IsTimeStrategy — logique inversée

Fichier : models/common/pricing/pricing_strategy.go — ligne 88

func IsTimeStrategy(i int) bool {
    return len(TimePricingStrategyList()) < i  // BUG: devrait être ">"
}

La condition est inversée. Retourne true pour des valeurs hors de la liste. Fonction actuellement non utilisée (voir §5).

4.2 IsBillingStrategyAllowed — case SUBSCRIPTION sans retour

Fichier : models/common/pricing/pricing_strategy.go — lignes 54-65

case SUBSCRIPTION:
    /*case PAY_PER_USE:
    return bs, true*/
// Aucun return ici → tombe dans le default

Le cas SUBSCRIPTION ne retourne rien explicitement, ce qui est trompeur.


5. Éléments inutilisés

5.1 Fonction jamais appelée

Symbole Fichier Ligne
IsTimeStrategy(i int) bool models/common/pricing/pricing_strategy.go 88

De plus, cette fonction a une logique erronée (voir §4.1).

5.2 Variable singleton inutilisée

Symbole Fichier Ligne
HTTPCallerInstance tools/remote_caller.go 57

Déclarée comme singleton mais jamais utilisée — de nouvelles instances sont créées via NewHTTPCaller().


6. Tests supprimés (couverture perdue)

Les fichiers suivants ont été supprimés sur la branche feature/event et la couverture correspondante n'est plus assurée :

Fichier supprimé Modèles non couverts
models/peer/tests/peer_cache_test.go PeerCache — logique d'exécution distribuée
models/peer/tests/peer_test.go Peer — modèle et accesseur
models/utils/tests/abstracts_test.go AbstractObject — méthodes de base
models/utils/tests/common_test.go GenericStoreOne, GenericDeleteOne, etc.
models/workflow_execution/tests/workflow_test.go WorkflowExecution — modèle et accesseur

models/order/tests/order_test.go existe mais ne contient aucune fonction de test.


7. Fautes d'orthographe dans les identifiants publics

Ces typos sont dans des noms exportés (API publique) — les corriger est un breaking change.

7.1 InstanciatedInstantiated

Apparaît 50+ fois dans les types exportés centraux :

  • AbstractInstanciatedResource[T] (resource.go, compute.go, data.go, storage.go, processing.go, workflow.go)
  • AbstractInstanciatedResource.Instances
  • Tests : resources.AbstractInstanciatedResource[*MockInstance]{...}

7.2 ressourceresource (dans les messages d'erreur)

Fichier : entrypoint.go — messages dans LoadOneStorage, LoadOneComputing, etc.

"Error while loading storage ressource " + storageId  // "ressource" est du français

7.3 GARANTEDGUARANTEED

Fichiers : models/common/pricing/pricing_profile.go, models/resources/storage.go

GARANTED_ON_DELAY        // pricing_profile.go:72
GARANTED                 // pricing_profile.go:73
GARANTED_ON_DELAY_STORAGE // storage.go:106
GARANTED_STORAGE         // storage.go:107

7.4 CREATE_EXECTUTIONCREATE_EXECUTION

Fichier : tools/nats_caller.go — ligne 34

CREATE_EXECTUTION  // faute de frappe dans la constante enum

7.5 PROPALGATIONPROPAGATION

Fichier : tools/nats_caller.go — lignes 29, 45, 56

"propalgation event"  // et PROPALGATION_EVENT

8. Incohérences de nommage mineures

Fichier Problème
models/resources/interfaces.go:19 Paramètre instance_id en snake_case dans une signature Go (devrait être instanceID)
entrypoint.go:505 Message de panique dans CopyOne dit "Panic recovered in UpdateOne"
tools/remote_caller.go:110 Commentaire // CallPut calls the DELETE method (copie-colle incorrect)

9. Résumé

Catégorie Nombre Priorité
Bugs critiques corrigés 6 Fait
Debug fmt.Println restants 15+ 🔴 Haute
Code commenté important 3 🟠 Moyenne
Logique erronée (non corrigée) 2 🟠 Moyenne
Éléments inutilisés 2 🟡 Faible
Tests supprimés (couverture perdue) 5 fichiers 🟠 Moyenne
Typos dans API publique 5 types 🟡 Faible (breaking change)
Incohérences mineures 3 🟢 Très faible