7.7 KiB
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.goetdata.gocorrigé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.goexiste 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 Instanciated → Instantiated
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 ressource → resource (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 GARANTED → GUARANTEED
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_EXECTUTION → CREATE_EXECUTION
Fichier : tools/nats_caller.go — ligne 34
CREATE_EXECTUTION // faute de frappe dans la constante enum
7.5 PROPALGATION → PROPAGATION
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 |