Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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 ]
- Host: GitHub
- URL: https://github.com/Just1truc/Abricot-Norminette
- Owner: Just1truc
- License: mit
- Created: 2021-12-19T16:22:33.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-15T22:52:57.000Z (almost 2 years ago)
- Last Synced: 2023-12-06T23:33:35.200Z (about 1 year ago)
- Topics: 2026, abricot, best, coding-style, epitech, lyon, moulinette, norme, norminette, python, testing
- Language: Python
- Homepage:
- Size: 339 KB
- Stars: 48
- Watchers: 2
- Forks: 6
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-epitech - Abricot - A norminette for C projects. (Epitech Tools / Language related)
- awesome-epitech - Abricot - A norminette for C projects. (Epitech Tools / Language related)
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])