É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 -eRetirer 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
fiRetirer 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 -eEn résumé :
- Installer
ts-prune - L'utiliser avec sa CI
- 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