https://github.com/koalaman/shellcheck
https://flake8.pycqa.org/en/latest/
https://mypy.readthedocs.io/en/stable/getting_started.html
https://github.com/terryyin/lizard
shellcheck -f json xxx.sh
flake8 --count --disable-noqa --statistics --exit-zero --output-file="
L
O
G
F
L
A
K
E
8
R
E
P
O
R
T
"
−
−
t
e
e
−
−
m
a
x
−
l
i
n
e
−
l
e
n
g
t
h
=
89
−
−
m
a
x
−
c
o
m
p
l
e
x
i
t
y
=
15
−
−
f
i
l
e
n
a
m
e
=
∗
.
p
y
−
−
e
x
c
l
u
d
e
=
"
{LOG_FLAKE8_REPORT}" --tee --max-line-length=89 --max-complexity=15 --filename=*.py --exclude="
LOGFLAKE8REPORT"−−tee−−max−line−length=89−−max−complexity=15−−filename=∗.py−−exclude="{flake8_exclude_pattern}"
flake8_exclude_pattern=".svn,CVS,.bzr,.hg,.git,pycache,.tox,.eggs,*.egg,cpplint.py,cpplint_mod.py,cpplint_createrules.py"
mypy --strict --show-error-codes --show-column-numbers xx.py
lizard xx.py