Accueil🇫🇷Chercher

Monkey-Patch

Un Monkey-Patch (aussi écrit Monkey Patch, MonkeyPatch) traduit par modification-singe consiste en la modification ou l'extension sans toucher au code source original. Cela est possible dans les langages de programmation dynamiques. Cela peut être appliqué à la modification des logiciels de base d'un système si ce système autorise la gestion de paquets.

La notion se nomme aussi :

  • Guerilla patch ;
  • Extension des classes prĂ©cĂ©demment dĂ©clarĂ©es ;
  • RĂ©ouverture des classes ;
  • Hijacking.

Étymologie

Il s'agissait à l'origine de modification dynamique et furtive de code au moment de son exécution, cela sans sécurité, par des bouts de code extérieurs. Dans certaines applications (comme Zope 2), ces bouts de code interagissent les uns avec les autres avec pour conséquence de créer une compétition à qui modifiera réellement le code. Dans le contexte originel donc, plusieurs bouts de codes entraient en compétition pour la modification du code original, d'où la notion de guérilla et l'utilisation du terme Guerilla Patch.

Mais le côté dangereux de la modification dynamique et le fait que ces codes constituent une menace pour un système, a entraîné l'utilisation fautive du terme Gorilla Patch, du fait de la similarité de consonance entre guerilla (guérilla) et gorilla (gorille) et de la connotation de gorille avec menace.

Les tenants des aspects positifs possibles de la modification dynamique de code, afin de diminuer la connotation de menace, ont commencé à utiliser le terme Monkey-Patch (singe au lieu de gorille) qui est resté le seul en usage.

Applications

La modification-singe est utilisée pour :

  • Remplacer des mĂ©thodes, attributs ou fonctions au moment de l'exĂ©cution, notamment pour les tests ;
  • Modifier ou Ă©tendre le comportement ou l'apparence d'un produit pour une tierce personne, sans maintenir sa propre copie du code source ;
  • Appliquer un patch, au moment de l'exĂ©cution, Ă  un objet en mĂ©moire, sans l'appliquer au code source sur disque ;
  • Corriger un comportement ou un trou de sĂ©curitĂ© existant dans le code source original (c'est le cas de la distribution de corrections par ajout dans la plate-forme Ruby on Rails).

Pièges

L'utilisation de la modification-singe comporte les problèmes suivants :

  • Si le produit ou le paquet modifiĂ© est remplacĂ© par une nouvelle version, celle-ci dĂ©truira sans doute le patch ;
  • Si deux modules essaient de faire une modification-singe sur une mĂŞme mĂ©thode, seule la dernière gagnera la compĂ©tition et l'autre n'aura aucun effet ;
  • Si la modification-singe crĂ©e une diffĂ©rence entre le code source original et celui qui s'exĂ©cute, la rĂ©solution de conflits et de bogues devient très difficile, en particulier lorsque l'on n'est pas l'auteur du patch ;
  • L'utilisation de modifications-singe peut conduire Ă  des problèmes de mise Ă  jour car les modifications faites sur le code peuvent se fonder sur des postulats Ă  l'origine exacts mais peu Ă  peu invalidĂ©s par l'Ă©volution du code.

Articles connexes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.