Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Just1truc/Abricot-Norminette

Abricot Norminette is meant for EPITECH Projects. [ PROMO 2026 ]
https://github.com/Just1truc/Abricot-Norminette

2026 abricot best coding-style epitech lyon moulinette norme norminette python testing

Last synced: 3 days ago
JSON representation

Abricot Norminette is meant for EPITECH Projects. [ PROMO 2026 ]

Awesome Lists containing this project

README

        



# Abricot Reborn

> During your projects you may be tempted to quickly and intuitively check your style mistakes thanks to a tool called **Automated Beautiful Recursive Integrated Coding Omissions Tracker**, better known as **Abricot**

**More seriously,** the Abricot development team has been thinking for some time about a more modern and more stable implementation of the norminette. This new year for Epitech is an opportunity to make it **compliant with current coding style rules.**

## Installation

Because we wanted to stay simple, there is one and only command to install Abricot:

```properties
curl https://raw.githubusercontent.com/Just1truc/Abricot-Norminette/main/get_abricot.sh | sh
```

_Imagine having to pull a docker image to run a norminette..._ πŸ˜’

## Usage

We wanted to make Abricot usable at any time, without requesting superuser permissions and without creating intermediate files polluting your workspace.

You can launch a deep analysis with Abricot with the following simple command:

```properties
abricot
```

You can also take a look at all the additional features implemented with:

```properties
abricot -h
```

## Updating

Updates are regulary made.

To keep Abricot up-to-date, please use the following command :
```properties
abricot --update
```

## Checked files

Here are the files affected by Abricot's style check:

**C Source Files** _(*.c)_

**C Header Files** _(*.h)_

**Makefiles**

_Abricot also looks for **unwanted files** in the repository..._

## Handled rules

#### Severities:
- **MAJOR**
- **MINOR**
- **INFO**

#

#### Global scope

- **C-G1** Bad file header
- **C-G2** There should be only one line between each fonction
- **C-G3** Preprocessor directive must be indented
- **C-G4** Global Variable must be const
- **C-G5** #include should only contain .h files
- **C-G6** Line endings must be done in UNIX style
- **C-G7** Line should finish only end with a "\n"
- **C-G8** Trailing space
- **C-G9** Constant values

#### Control structure

- **C-C1** There should not be more than 3 depth (conditionnal branching)
- **C-C3** Forbidden goto

#### Advanced

- **C-A3** Missing Line Break

#### Layout inside a function scope

- **C-L1** Coding content
- **C-L2** Bad indentation
- **C-L3** Misplaced spaces
- **C-L4** Misplaced curly bracket
- **C-L5** Bad variable declaration
- **C-L6** Bad line break

#### Files organization

- **C-O1** Check useless file
- **C-O3** Too many fonctions in a file
- **C-O4** Snake case convention

#### Functions

- **C-F3** A line lenght shoud not exceed 80 columns
- **C-F4** A function should not exceed 20 lines
- **C-F5** More than 4 arguments in a function or argumentless function
- **C-F6** Comments inside of functions

#### Header files

- **H2** Header not protected from doucle inclusion

#### Variables and Types

- **V1** Controlling structures and macros
- **V3** Pointers position

## Performances

Another really important point for us is performance.

**Abricot Norminette** uses multi-threading, a smart caching policy and is regularly profiled in search of optimization opportunities.

Here's a small report of what we got as benchmark:

#### On a ~20 files project:
| πŸ‘ Abricot | 🍌 Banana |
| ------- | ------ |
| 0.73s | 2.67s |

#### On a ~30 files project:
| πŸ‘ Abricot | 🍌 Banana |
| ------- | ------ |
| 0.98s | 5,38s |

#### On a ~50 files project:
| πŸ‘ Abricot | 🍌 Banana |
| ------- | ------ |
| 2.09s | 2m01s |

_Banana reported 0 coding style errors on this project_

## Compatibility

Python3+ should be installed on your computer for Abricot to work.

| OS | Compatible ? |
|-------------- |--------------- |
| Debian based | βœ… |
| Fedora based | βœ… |
| macOS | βœ… |
| Windows | ⚠️ WSL advised |

## Credits

#### Lead Developper : Justin Duc

[![linkeding bage](https://img.shields.io/badge/-linkedin-0A66C2?logo=linkedin&style=for-the-badge)](https://www.linkedin.com/in/justin-duc-51b09b225/)
[![git hub bage](https://img.shields.io/badge/-GitHub-181717?logo=GitHub&style=for-the-badge)](https://github.com/Just1truc)
[![mail](https://img.shields.io/badge/-Mail-0078D4?logo=Microsoft-Outlook&style=for-the-badge)](mailto:[email protected])

#### Architecture Designer : Mathias AndrΓ©

[![linkeding bage](https://img.shields.io/badge/-linkedin-0A66C2?logo=linkedin&style=for-the-badge)](https://www.linkedin.com/in/mathias-andrΓ©/)
[![git hub bage](https://img.shields.io/badge/-GitHub-181717?logo=GitHub&style=for-the-badge)](https://github.com/MathiDEV)
[![mail](https://img.shields.io/badge/-Mail-0078D4?logo=Microsoft-Outlook&style=for-the-badge)](mailto:[email protected])

#### Performances Responsible : Valentin Nouri

[![linkeding bage](https://img.shields.io/badge/-linkedin-0A66C2?logo=linkedin&style=for-the-badge)](https://www.linkedin.com/in/valentin-nouri/)
[![git hub bage](https://img.shields.io/badge/-GitHub-181717?logo=GitHub&style=for-the-badge)](https://github.com/vavarier)
[![mail](https://img.shields.io/badge/-Mail-0078D4?logo=Microsoft-Outlook&style=for-the-badge)](mailto:[email protected])

#### Quality Responsible : Thomas Mazaud

[![linkeding bage](https://img.shields.io/badge/-linkedin-0A66C2?logo=linkedin&style=for-the-badge)](https://www.linkedin.com/in/thomasmazaud/)
[![git hub bage](https://img.shields.io/badge/-GitHub-181717?logo=GitHub&style=for-the-badge)](https://github.com/Fyroeo)
[![mail](https://img.shields.io/badge/-Mail-0078D4?logo=Microsoft-Outlook&style=for-the-badge)](mailto:[email protected])

#### Tests Maker : Baptiste Leroyer

[![linkeding bage](https://img.shields.io/badge/-linkedin-0A66C2?logo=linkedin&style=for-the-badge)](https://www.linkedin.com/in/baptiste-leroyer/)
[![git hub bage](https://img.shields.io/badge/-GitHub-181717?logo=GitHub&style=for-the-badge)](https://github.com/ZiplEix)
[![mail](https://img.shields.io/badge/-Mail-0078D4?logo=Microsoft-Outlook&style=for-the-badge)](mailto:[email protected])