/Bubulle-Norminette

Norminette EPITECH 2025.

Primary LanguagePythonMIT LicenseMIT

Norme EPITECH

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."

Menu

Bubulle

Dépendances

Pour utiliser la norminette Bubulle, vous devez avoir Python 3.x sur votre ordinateur.
Le script d'installation installe automatiquement les dépendances.

  • Python
  • Pycparser : 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.

Installation

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)"

Utilisation

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 :

Norminette

Vérifications de norme

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

Options

  • -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)
    Exemple: l1,l2 permet d'ignorer le test L1 et L2
  • -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 MAJOR

Rapports HTML

Bubulle 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).

Rapport HTML


Norme EPITECH

Vérifier les fautes de norme automatiquement

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.

  • Créez un dossier .github/workflows/ à la racine de votre projet.
  • Créez un fichier nommé 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
  • commit, push, et Bubulle se lancera à chaque push!

Problèmes connus

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.

  • Certaines lib en C (comme la CSFML) empêchent Bubulle de vérifier les fautes de norme sur certains de vos fichiers. Cela va vous informer du problème avec l'erreur "Unable to compile the file".

Contributeurs

  • aureliancnx : Développeur de la Bubulle
  • Payne : idée du nom & soutien moral
  • toutes les personnes qui testent la norminette et qui me donnent un feedback pour améliorer Bubulle. <3

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.


English

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).

Menu

Bubulle

Dependencies

In order to use Bubulle, you must have Python 3.x installed. The installation script automatically installs the related dependencies.

  • Python
  • Pycparser : 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.

Installation

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)"

Usage

Simply type the following command in your terminal, in the folder where the code you want to check is located: bubulle

Output example:

Norme check

Checks

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

Options (en)

  • -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)
    Example: l1,l2 ignores the L1 and L2 test.
  • -ii or --ignore-info: ignore INFO standard problems
  • -imin or --ignore-minor: ignore MINOR norme issues
  • -imaj or --ignore-major: ignore MAJOR norme issues

HTML Reports

Bubble 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).

Rapport HTML


Norme EPITECH

Automatically check your norm issues

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.

  • Create a folder named .github/workflows/ in the parent folder of your repository.
  • Create a file named 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
  • commit, push, and Bubulle will check norm issues on every push!

Known issues

Bubulle is updated regularly in order to fix issues. Feel free to create a issue if you find one.

  • Some C libraries (like CSFML) prevent Bubble from checking for norm issues on some of your files. It will notify you with "Unable to compile the file".

Contributors

  • aureliancnx : Bubble developer
  • Payne : name idea & moral support
  • everyone who test the norminette and give me feedback to improve Bubble. <3

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.