-
Détecter du code mort
Bonjour,
Je reprends la gestion d'un site avec quelques bouts d'application javacript.
L'outil a quelques années, basé à l'époque sur ce que je pense être un template.
J'ai beaucoup de code inutile, qui charge l'application pour rien.
J'aimerai essayer d'automatiser un peu cette détection, comme cela se fait avec des outils comme lui https://unused-css.com qui parse les pages à la recherche de CSS inutilisées.
Connaissez vous de tels outils ?
Merci.
-
Quel type de modules utilises-tu ? IIFE ? CommonJS ? AMD ? Modules ES6 ?
Si tu n'utilises pas de modules ou si tu utilises les ersatz de modules sous forme de IIFE ça va être compliqué.
-
rollup et tree shaking
tu pourrais utiliser rollup + buble pour préparer tes bundles. C'est plus rapide que WebPack + Babel, plus simple aussi.
Et pour ce qui se rapporte à ta question,, Rollup fait du "tree shaking" : c'est à dire qu'au moment de la compilation, l'arbre des syntaxe abstrait du programme est "secoué" pour ne garder que ce qui sera effectivement gardé dans l'exécutable final.
Rollup gère bien les modules UMD et IIFE et supporte les variables globales assez bien.
Pour ce qui est du nettoyage du code à proprement parler... à part un examen minutieux (et automatique) du code résultat du bundle, pour détecter tous lles "function X()" et les "var Y = function()" du code afin d'établir la liste X + Y de ce qui sert vraiment à la fin... et dégraisser manuellement lors de vastes opérations de refactoring !!!
Bon courage !
-
La question laisse quelques zones d’ombre. S’il s’agit de code au sein d’un fichier donné, par exemple du code PHP, on peut recourir à des outils d’analyse de flot de contrôle (en anglais CFG pour Control Flow Graph), j’ai trouvé par exemple php-cfg. Il y a aussi cette question StackOverflow qui a une réponse intéressante et détaillée.
S’il s’agit de trouver les routes ou pages qui ne sont plus utilisées, wget a une fonction « aspirateur de site » qui peut (plus ou moins bien) cartographier un site, à la manière des robots de moteurs de recherche. Ensuite, il ne doit pas être difficile de bricoler un script avec find ou grep pour déterminer les routes / pages qui n’ont pas été atteintes.
-
avec chrome (je ne sais pas pour firefox) tu as l'onglet "coverage"
qui, pour le CSS et le JS t'indique tout le code utilise du code non-utilise.
=> seul bemole : ca ne conserne que la page consultee. (du CSS ou du JS peut n'etre utilise que dans des pages et des cas specifiques)