Norminette EPITECH 2025.
Bubulle est un programme de vérification de norme développé pour que les étudiants puissent vérifier le bon respect de la norme EPITECH. La norminette cherche les erreurs de norme d'Epitech dans le code source des fichiers. La norminette est la plus complète à ce jour et a un système de versioning, permettant des mises à jour régulières.
"Le but aussi, c'est d'apprendre à développer à la norme, pas à la corriger à la fin."
Pour utiliser la norminette Bubulle, vous devez avoir Python 3.x sur votre ordinateur.
Le script d'installation installe automatiquement les dépendances.
python3 -m pip install pycparser pyparsing pycparser-fake-libc --user
La norminette Bubulle utilise un préprocesseur C écrit en Python permettant le fonctionnement de plusieurs tests de norme.
L'installation peut s'effectuer directement avec le script d'installation. Le script supprime l'ancienne version et télécharge la nouvelle. C'est la façon la plus facile d'installer la norminette sous Linux. Fonctionne également sur MacOS.
sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/aureliancnx/Bubulle-Norminette/master/install_bubulle.sh)"
Ecrivez simplement la commande suivante dans votre terminal, dans le dossier où se situe le code que vous souhaitez vérifier :
bubulle
Exemple de retour :
ID Norme | Description | Géré par Bubulle |
---|---|---|
O1 | Fichier inutile pour la compilation | ✓ |
O2 | Fichier source vide | ✓ |
O3 | Trop de fonctions dans un fichier (> 5 fonctions) | ✓ |
O4 | Nom du fichier pas en snake case | ✓ |
O4 | Nom du fichier ambigü | ✓ |
G1 | Header EPITECH manquant/mal placé dans le fichier | ✓ |
G2 | Fonctions devant être séparées par une seule ligne | ✓ |
G4 | Variable modifiable en dehors d'une fonction | ✓ |
G5 | Mot-clé 'static' en début de fonction | ✓ (agressif) |
F2 | Fonction pas en snake case | ✓ |
F3 | Ligne trop longue (> 80 caractères) | ✓ |
F4 | Fonction trop longue (> 20 lignes) | ✓ |
F5 | Maximum 4 paramètres par fonction | ✓ |
F5 | Paramètre 'void' manquant en cas de fonction sans arguments | ✓ |
F6 | Commentaires à l'intérieur d'une fonction | ✓ |
F7 | Fonctions 'nested' | ✓ |
L1 | Plusieurs assignements sur une même ligne | ✓ |
L2 | Mauvaise indentation d'une ligne/partie de code | ✓ |
L2 | Les TABS ne doivent pas être utilisés pour l'indentation | ✓ |
L3 | Espace manquant après un mot clé | ✓ |
L3 | Espaces en trop à la fin d'une ligne | ✓ |
L3 | Espace manquant avant un opérateur/mot clé | ✓ |
L4 | Crochets mal positionnés | ✓ |
L6 | Lignes vides en trop | ✓ |
V1 | Nom de variable pas au format snake_case | ✓ |
V2 | Les typedef doivent se terminer par _t | ✓ |
V3 | Pointeur mal positionné | ✓ |
C1 | Trop de niveaux de code (> 2 niveaux) | ✓ |
C3 | Mot clé goto interdit | ✓ |
H1 | Mauvaise séparation entre fichier source/header | ✓ |
H3 | Les macros ne doivent pas être utilisées pour des constantes | ✓ |
-42 | Fonctions interdites | ✓ |
A3 | Saut de ligne manquant à la fin d'un fichier | ✓ |
T010 | Nom de variable ambigü | ✓ |
F002 | Nom du fichier ou dossier trop long | ✓ |
F002 | Nom du fichier ne commençant pas par une lettre | ✓ |
-h
ou --help
: obtenir des informations sur Bubulle (arguments)-p
ou --path
: lancer la norminette dans un dossier ou fichier précis-r
ou --report
: générer un rapport au format HTML-a
ou --aggressive
: mode agressif (ajoute des vérifications de norme supplémentaires)-f
ou --no-forbidden
: ne pas considérer les fonctions interdites-e
ou --exclude
: ignorer un fichier/dossier-u
ou --update
: mettre à jour la norminette Bubulle-c
ou --config
: afficher/modifier la configuration de Bubulle (expérimental)-verbose
ou --verbose
: verbose, afficher les erreurs de compilation précises
-v
ou --version
: afficher la version locale de Bubulle-ic
ou --ignore-compilation
: ignorer les erreurs de compilation-i
ou --ignore
: ignorer des erreurs de norme précises (séparés par une virgule)-ii
ou --ignore-info
: ignorer les problèmes de norme INFO-imin
ou --ignore-minor
: ignorer les problèmes de norme MINOR-imaj
ou --ignore-major
: ignorer les problèmes de norme MAJORBubulle permet de générer un rapport au format HTML (avec -r
ou --report
) avec des informations visuelles sur le code et les erreurs de norme directement depuis votre navigateur Internet (ne fonctionne pas en TTy).
Github vous permet d'ajouter des tests automatiques lorsque vous effectuez un push. Vous pouvez tester les fautes de norme dans votre repository.
Vous receverez un mail si Bubulle détecte des fautes de norme.
.github/workflows/
à la racine de votre projet.coding_style.yml
dans le dossier .github/workflows/
et placez le contenu suivant à l'intérieur du fichier :name: Coding style check
on: push
jobs:
codingstyle:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: installing pycparser
run: python -m pip install pycparser
- name: installing coding style
run: sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/aureliancnx/Bubulle-Norminette/master/install_bubulle.sh)"
- name: check coding style
run: bubulle
Bubulle est modifié régulièrement afin de corriger les problèmes qui peuvent être remontés. N'hésitez pas à créer une issue si vous en trouvez un.
Vous souhaitez également participer au développement et à l'amélioration de la norminette ? N'hésitez pas à ouvrir une issue en cas de problème ou à soumettre un pull request pour une idée de modification.
EPITECH norme check developed with the features of the latest update of the EPITECH norme for the 2025 promotion. Available for all students. The norminette looks for Epitech "norme" errors in the source code of the files. The norminette is the most complete to date and has a versioning system, allowing regular updates.
The goal is to keep a complete norminette in less than 3000 lines (assets/excluded).
In order to use Bubulle, you must have Python 3.x installed. The installation script automatically installs the related dependencies.
python3 -m pip install pycparser pyparsing pycparser-fake-libc --user
The Bubble norme check uses a C preprocessor written in Python allowing the operation of several standard tests.
The installation can be done directly with the installation script. The script removes the old version and downloads the new one. This is the easiest way to install the norme checker under Linux. Also works on MacOS.
sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/aureliancnx/Bubulle-Norminette/master/install_bubulle.sh)"
Simply type the following command in your terminal, in the folder where the code you want to check is located:
bubulle
Output example:
ID Norme | Description | Handled by Bubulle? |
---|---|---|
O1 | Useless file for compilation | ✓ |
O2 | Empty source file | ✓ |
O3 | Too many functions in file (> 5 functions) | ✓ |
O4 | File name not in snake case | ✓ |
O4 | Ambiguous file name | ✓ |
G1 | Missing or misplaced EPITECH header | ✓ |
G2 | Functions must be separated by a single line | ✓ |
G4 | Editable function outside a function | ✓ |
G5 | Static keyword in function storage | ✓ (aggressive) |
F2 | Function not in snake case | ✓ |
F3 | Too long line (> 80 characters) | ✓ |
F4 | Too long function (> 20 lines) | ✓ |
F5 | More than 4 parameters in a function | ✓ |
F5 | 'void' parameter is missing if the function is without parameters | ✓ |
F6 | Comments inside a function | ✓ |
F7 | Nested functions | ✓ |
L1 | Several assignements in the same line | ✓ |
L2 | Bad indentation | ✓ |
L2 | Tabs shouldn't be used for indentation | ✓ |
L3 | Missing space after a keyword | ✓ |
L3 | Extra space in line end | ✓ |
L3 | Missing space before keyword/variable | ✓ |
L4 | Misplaced brackets | ✓ |
L6 | Useless empty line | ✓ |
V1 | Variable name not in snake_case | ✓ |
V2 | Typedef should ends with _t | ✓ |
V3 | Misplaced pointer | ✓ |
C1 | Too many codes branches (> 2 levels) | ✓ |
C3 | Forbidden goto keyword | ✓ |
H1 | Bad separation between header/source file | ✓ |
H3 | Macro should not be used as const | ✓ |
-42 | Forbidden functions | ✓ |
A3 | Missing line break at end of file | ✓ |
T010 | Ambiguous variable name | ✓ |
F002 | Too long file/folder name | ✓ |
F002 | File name should starts with a letter | ✓ |
-h
or --help
: get information about Bubble (arguments)-p
or --path
: run the norminette in a specific directory or file-r
or --report
: generate a report in HTML format-f
ou --no-forbidden
: don't take into account forbidden functions-a
ou --aggressive
: aggressive mode (add more norm checks)-e
or --exclude
: ignore a file/folder-u
or --update
: update the Bubble Normette-c
or --config
: display/modify Bubble configuration (experimental)-verbose
or --verbose
: verbose, display compilation errors precise
-v
or --version
: display the local version of Bubble-ic
or --ignore-compilation
: ignore compilation errors-i
or --ignore
: ignore specific standard errors (comma-separated)-ii
or --ignore-info
: ignore INFO standard problems-imin
or --ignore-minor
: ignore MINOR norme issues-imaj
or --ignore-major
: ignore MAJOR norme issuesBubble allows you to generate a report in HTML format (with -r
or --report
) with visual information about the code and norme issues directly from your web browser (does not work in TTy).
Github allows you to make automatic tests every time you push. You can test your norm issues in your repository.
You will receive an email every time Bubulle detects a norm issue.
.github/workflows/
in the parent folder of your repository.coding_style.yml
in the following folder: .github/workflows/
. Then, put the following content in the file:name: Coding style check
on: push
jobs:
codingstyle:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: installing pycparser
run: python -m pip install pycparser
- name: installing coding style
run: sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/aureliancnx/Bubulle-Norminette/master/install_bubulle.sh)"
- name: check coding style
run: bubulle
Bubulle is updated regularly in order to fix issues. Feel free to create a issue if you find one.
Would you also like to participate in the development and improvement of Bubulle? Feel free to open a issue in case of problem or to submit a pull request for a modification idea.