NorMatrix
check some norm for you
install
with pipy
With Pipy
1
- if you want some "stable" version:
pip install normatrix
- if you want the most update to date version:
pip install git+https://github.com/Saverio976/NorMatrix.git
Now you can use it with python3 -m normatrix
in your terminal
2
And if you want to just write normatrix
:
echo $SHELL
if you are using bash shell (the echo
print /something/bash
):
echo alias normatrix=\"python3 -m normatrix\" >> $HOME/.bashrc
else if you are using zsh shell (the echo
print /something/like/zsh
):
echo alias normatrix=\"python3 -m normatrix\" >> $HOME/.zshrc
else if you are using fish shell (the echo
print /something/like/fish
):
abbr --add 'normatrix' 'python3 -m normatrix'
else handle this yourself bruh;
3
to update it, you just have to run
pip install -U normatrix
4
to uninstall it (sad), run
pip uninstall normatrix
from source
From source
1
git clone https://github.com/Saverio976/NorMatrix.git
cd NorMatrix
Now you can use it with ./path/to/folder/NorMatrix/main.py
in your terminal
2
And if you want to just write normatrix
:
echo $SHELL
if you are using bash shell (the echo
print /something/bash
):
echo alias normatrix=\"$PWD/main.py\" >> $HOME/.bashrc
else if you are using zsh shell (the echo
print /something/like/zsh
):
echo alias normatrix=\"$PWD/main.py\" >> $HOME/.zshrc
else handle this yourself bruh;
3
to update it, just go where you have cloned normatrix
run
git pull
4
to uninstall it (sad)
Delete the folder
Current Checks
doc
(if you use pipy) python -m normatrix
(if you use pipy) python -m normatrix
usage: python -m normatrix [-h] [--no-operators-pluggin] [--preview] [--conf] [--only-errors] [--no-fclean] [--link-line] [--tests-run]
[--output format]
[paths ...]
The C Epitech Coding Style Norm Checker
positional arguments:
paths list of path to check (default: the current working directory)
options:
-h, --help show this help message and exit
--no-operators-pluggin
remove the operators pluggin (because it print some false positiv for now)
--preview add some plugin that are added recently
--conf [deprecated][now it check always for the file] tells if you have a .normatrix config file
--only-errors print only bad files with errors
--no-fclean if you want normatrix dont do a "make fclean" at the end
--link-line to have the "link" to the file (in vscode terminal you can click it and it will open the file at the line of the error)
--tests-run run the unit tests for normatrix
--output format tell which output format to use [html, md, term_color, term_rich]; for html the file is normatrix-result.htlm; for md the
file is normatrix-result.md
(only from source) main.py
(only from source) main.py
usage: ./main.py [-h] [--no-operators-pluggin] [--preview] [--conf] [--only-errors] [--no-fclean] [--link-line] [--tests-run]
[--output format]
[paths ...]
The C Epitech Coding Style Norm Checker
positional arguments:
paths list of path to check (default: the current working directory)
options:
-h, --help show this help message and exit
--no-operators-pluggin
remove the operators pluggin (because it print some false positiv for now)
--preview add some plugin that are added recently
--conf [deprecated][now it check always for the file] tells if you have a .normatrix config file
--only-errors print only bad files with errors
--no-fclean if you want normatrix dont do a "make fclean" at the end
--link-line to have the "link" to the file (in vscode terminal you can click it and it will open the file at the line of the error)
--tests-run run the unit tests for normatrix
--output format tell which output format to use [html, md, term_color, term_rich]; for html the file is normatrix-result.htlm; for md the
file is normatrix-result.md
(only from source) exec.sh
(only from source) exec.sh
(this file exists only to keep compatibility to older version)
usage: ./main.py [-h] [--no-operators-pluggin] [--preview] [--conf] [--only-errors] [--no-fclean] [--link-line] [--tests-run]
[--output format]
[paths ...]
The C Epitech Coding Style Norm Checker
positional arguments:
paths list of path to check (default: the current working directory)
options:
-h, --help show this help message and exit
--no-operators-pluggin
remove the operators pluggin (because it print some false positiv for now)
--preview add some plugin that are added recently
--conf [deprecated][now it check always for the file] tells if you have a .normatrix config file
--only-errors print only bad files with errors
--no-fclean if you want normatrix dont do a "make fclean" at the end
--link-line to have the "link" to the file (in vscode terminal you can click it and it will open the file at the line of the error)
--tests-run run the unit tests for normatrix
--output format tell which output format to use [html, md, term_color, term_rich]; for html the file is normatrix-result.htlm; for md the
file is normatrix-result.md
(only from source) Makefile
(only from source) Makefile (deprecated)
(this file exists only to keep compatibility to older version)
(if you can, move to another choice)
USAGE:
make -C path/to/NorMatrix PATH_CHECK=$PWD
DESCRIPTION:
check the norm! in the current working directory
(call main.py)
ARGS:
-C path/to/NorMatrix run the makefile that is in path/to/NorMatrix
instead of the one where you are
PATH_CHECK=$PWD check the norm in your current working
directory
configuration
you can now configure what functions are banned, and what are not,
you can now configure what extension file are banned, and what are not,
all you have to do is put a file .normatrix.json
where you execute normatrix
example with nothing banned and no preview (preview = not stable check) check
.normatrix.json
{
"banned": [],
"no-banned": [],
"extension": [],
"no-extension": [],
"enable-preview": false
}
just add inside []
the string of what you want
other explanation with example
other explanation with example
- to no-banne memset (because you can use it)
{
"no-banned": ["memset"]
}
- to ban my_printf (because you dont want to use it)
{
"banned": ["my_printf"]
}
- to no-banne *.o file (because you dont need this warning)
{
"no-extension": ["*.o"]
}
- to banne *.c file (because you want c file banned)
{
"extension": ["*.c"]
}
- to enable preview check by default
{
"enable-preview": true
}
by default there are somthing like this:
{
"banned": ["printf", "memset", "strcpy", "strcat", "calloc"],
"no-banned": [],
"extension": ["*.a", "*.o", "*.so", ".gch", "*~", "*#", "*.d"],
"no-extension": [],
"enable-preview": false
}
this configuration will be added even if you add a .normatrix.json
file
but if you want to remove *.o
, just add it to the no-extension
or you can put *.o
in a .gitignore
it will remove it from the default
Run as a github workflow
this is not the latest normatrix but :
link : link
state :
(N.B. : this workflow pass well, but it will not if you copy the code below)
- in the repo root :
mkdir .github
mkdir .github/workflows
echo '
name: NorMatrix Check
on: [push]
jobs:
norm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up python
uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: clone NorMatrix
run: pip install git+https://github.com/Saverio976/NorMatrix.git
- name: NorMatrix
run: python3 -m normatrix --only-errors
' > .github/workflows/normatrix_check.yml
- you can push the modification to github
Contribute
[more information on CONTRIBUTNG.md]
Alternatives
Thanks
- chempa for his sample of file that dont follow the epitech norm
- and invisble testers that says "bha baah normatrix have a bug"
Contributors