Éradiquer le code mort.

Pour de bon.

Hugo Duprat - 22 novembre 2022

🔥

Qui suis-je ?

Hugo Duprat

Tech Lead chez

@req__ (avec deux _)

Hugo Duprat

coming soon...

hduprat

hugod@bam.tech

Pour commencer...

Le code vit.

import { displaySignUpModal } from 'src/modules/AnonymousUser/view.ts';
import { useUserStatus } from 'src/modules/User/business.ts';
import { redirectToDashboard } from 'src/modules/User/navigation.ts';

export const DashboardButton = () => {
  const { isAnonymous } = useUserStatus();
  return (
    <Button onPress={ isAnonymous ? displaySignUpModal : redirectToDashboard } />
  )
}

Mais que devient ce code inutilisé ?

Le code mort.

import { displaySignUpModal } from 'src/modules/AnonymousUser/view.ts';
import { useUserStatus } from 'src/modules/User/business.ts';
import { redirectToDashboard } from 'src/modules/User/navigation.ts';

export const DashboardButton = () => {
    const { isAnonymous } = useUserStatus();
    return (
    	<Button onPress={ isAnonymous ? displaySignUpModal : redirectToDashboard } />
    )
}

Source de gaspillage

Les exports inutilisés ne sont pas détectés par Typescript ou ESLint a priori

Le code mort, c'est du gaspillage.

Gaspillage de temps ⏱

Gaspillage d'espace 📦

Gaspillage de qualité 📉

Détecter le code mort ?

Permet de lister les exports inutilisés dans le code

Peut renvoyer ou non une erreur en cas de code mort

Possibilité d'ignorer des fichiers dans la recherche de code mort

Pour de bon ?

yarn ts-prune -e

Retirer le code mort progressivement

#!/bin/sh
OUTPUT=`yarn --silent ts-prune | wc -l`;
MAX_DEAD_CODE_LINES="20";

echo "$OUTPUT lines remaining, maximum set to $MAX_DEAD_CODE_LINES"

if [ "$OUTPUT" -gt "$MAX_DEAD_CODE_LINES" ];
then
echo "Error, you added dead code, please remove some."
exit 1
fi

Retirer le code mort progressivement

Mise en place de ts-prune pour l'indicateur

Réaction ! Mise en place du script de CI avec seuil

Vacances de fin d'année

Reprise

yarn ts-prune -e

En résumé :

  1. Installer ts-prune
  2. L'utiliser avec sa CI
  3. Ne plus s'en soucier ! 🔥

Ce n'est pas fini...

Le code mort testé unitairement ?

ts-prune -s '.*\.test\.tsx?'

OK mais mes mocks deviennent du code mort !

ts-prune -s '.*\.test\.tsx?' -i '.*/mocks\.tsx?'

Les pages inutilisées dans la navigation ?

🤷🏼‍♂️

Merci de votre attention !

Des questions ?

@req__ (avec deux _)

Hugo Duprat

coming soon...

hduprat

hugod@bam.tech

Eradiquer le code mort

By Hugo Duprat

Eradiquer le code mort

  • 243