crNormz v1.5.1
crNormz
The most awesome norminette made using Crystal.
Project Description • Installation • How to use • Features • Benchmarks • Credits
Project Description
crNormz is a norm checking program developed using Crystal so that students can check for compliance with the EPITECH standard. This linter is currently the fastest, most reliable and most accurate, see Benchmarks
Installation
To clone and run this application, you'll need Git installed on your computer. From your command line:
# Clone this repository
$ git clone https://github.com/CustomEntity/crNormz
# Go into the repository
$ cd crNormz
# Install the norminette
$ sudo ./crnormz_installer.sh
How to use
# Show help
$ crnormz -h
Usage: crnormz [-fgtlh]
-f, --ignore-file= Ignore file from the checker
-g, --ignore-function= Ignore forbidden functions
-t, --ignore-type= Ignore errors of a specific type
-l, --ignore-level= Ignore errors of a specific level (Major, Minor or Info)
-r, --raw-output Enables easy parsing for applications
-h, --help Show this help
# Run the norminette
$ crnormz
# Run the norminette excludind all .o files
$ crnormz -f "*.o"
# Run the norminette without checking the forbidden functions (printf and scanf)
$ crnormz -g "printf,scanf"
# Run the norminette excluding all O1 rules
$ crnormz -t "O1"
# Run the norminette excluding all info level rules
$ crnormz -l "info"
# Sort files alphabetically
$ crnormz -s
# Run the norminette without text formatting
$ crnormz -r
Features
⚠️ crNormz does not support comments and quotes at the moment
Type | Description | State |
---|---|---|
O1 | Useless file for compilation | ✓ |
O2 | Invalid .c file source code | 🔨 |
O3 | Too many functions in a file (> 5 functions) | ✓ |
O4 | File name not in snake_case | ✓ |
G1 | EPITECH header not found or invalid | ✓ |
G2 | Functions must be separated by a single line | ✓ |
G3 | Preprocessor directives must be indented according to the level of indirection | ✓ |
G4 | Global variable not constant | 🔨 |
G5 | Static global variables and functions | 🔨 |
G6 | Include directive should only include header .h files | ✓ |
G7 | Line endings must be done in UNIX style (with \n) | ✓ |
G8 | No trailing spaces must be present at the end of a line | ✓ |
G9 | No more than 1 trailing empty line must be present | ✓ |
F2 | Function name not in snake_case | ✓ |
F3 | Too many columns (> 80 columns) | ✓ |
F4 | Too many lines in function (> 20 lines) | ✓ |
F5 | Too many parameters in function (> 4 parameters) | ✓ |
F5 | Missing 'void' parameter in case of function without arguments | ✓ |
F6 | Comments within a function | ✓ |
F7 | Nested functions | 🔨 |
L1 | Multiple assignments on the same line | ✓ |
L2 | Bad indentation | ✓ |
L3 | Missing space after a keyword | 🔨 |
L4 | Misplaced bracket | ✓ |
L6 | Line jumps | ✓ |
V1 | The type names defined with typedef should end with _t | ✓ |
V1 | All identifier names should be according to the snake_case convention | ✓ |
V1 | The names of macros should be written in UPPER_CASE | ✓ |
V1 | The content of enums should be written in UPPER_CASE | ✓ |
V3 | Pointer badly positioned | ✓ |
C1 | Too much code depth (> 2 levels) | ✓ |
C3 | Goto keyword | ✓ |
H1 | Source code in header file vice versa | ✓ |
H3 | Macro should match only one statement | ✓ |
A3 | File should end with a line break | ✓ |
Forbidden function | 🔨 |
Benchmarks
These benchmarks were performed on a project in real use with 225 source files, 30 header files and 1 Makefile.
Norminette | Time, s | Major | Minor | Info |
---|---|---|---|---|
Epitech National | N/A | 473 | 59 | 49 |
👑 crNormz | 0.550 | 481 | 84 | 49 |
Abricot | 7.302 | 99 | 228 | 48 |
JankunNorme | 1.274 | 259 | 209 | 48 |
Bubulle | 10.763 | 27 | 22 | 49 |
Credits
Repository
crNormz
Owner
Statistic
- 24
- 0
- 0
- 0
- 0
- over 2 years ago
- May 25, 2022
License
MIT License
Links
Synced at
Sun, 17 Nov 2024 15:08:28 GMT
Languages