ShellMetrics is Cyclomatic Complexity Analyzer for shell script.
Travis CI Coveralls CodeFactor Grade GitHub top language License
ShellMetrics is written by shell script.
One of the following shells is required: bash
, mksh
, yash
, zsh
curl -fsSL https://git.io/shellmetrics > ~/bin/shellmetrics chmod +x ~/bin/shellmetrics
or
wget https://git.io/shellmetrics -O ~/bin/shellmetrics chmod +x ~/bin/shellmetrics
Usage: shellmetrics [options] files...
-s, --shell The path of shell to use as parser [default: bash]
Supported shells: bash, mksh, yash, zsh
--[no-]color Enable / Disable color [default: enabled]
--csv Generate CSV output
-p, --pretty Format pretty with wrapper function(s)
-d, --debug Display parsed data for debug instead of report
-v, --version Display the version
-h, --help You're looking at it
Metric values vary slightly depending on the shell used.
ShellMetrics self metrics.
- NLOC - Non-comment Lines of Code
- LLOC - Logical Lines of Code
- CCN - Cyclomatic Complexity number
$ shellmetrics ./shellmetrics ============================================================================== LLOC CCN Location ------------------------------------------------------------------------------ 1 1 usage:9 shellmetrics 1 1 proxy:35 shellmetrics 1 1 putsn:40 shellmetrics 1 1 putsn:44 shellmetrics 4 2 putsn:39 shellmetrics 9 2 count:51 shellmetrics 2 1 is_comment_line:64 shellmetrics 2 2 is_blank_line:69 shellmetrics 3 1 repeat_string:73 shellmetrics 3 2 array:79 shellmetrics 2 1 array_is_empty:86 shellmetrics 7 2 push_array:91 shellmetrics 11 3 pop_array:102 shellmetrics 11 3 shift_array:119 shellmetrics 8 3 peel:136 shellmetrics 7 3 pretty:149 shellmetrics 2 1 process:162 shellmetrics 65 27 parse:167 shellmetrics 21 8 analyze:238 shellmetrics 56 6 default_report:274 shellmetrics 10 4 csv_report:372 shellmetrics 3 1 title:389 shellmetrics 9 5 init_mode:395 shellmetrics 9 2 main:412 shellmetrics 4 2 error:426 shellmetrics 2 1 abort:435 shellmetrics 1 1 unknown:440 shellmetrics 1 1 required:441 shellmetrics 1 1 param:442 shellmetrics 1 1 params:443 shellmetrics 2 1 params_:444 shellmetrics 20 12 parse_options:446 shellmetrics 52 2 <main> shellmetrics ------------------------------------------------------------------------------ 1 file(s), 33 function(s) analyzed. [bash 4.4.20(1)-release] ============================================================================== NLOC NLOC LLOC LLOC CCN Func File (lines:comment:blank) total avg total avg avg cnt ------------------------------------------------------------------------------ 412 12.48 332 10.06 3.18 33 shellmetrics (479:5:62) ------------------------------------------------------------------------------ ============================================================================== NLOC NLOC LLOC LLOC CCN Func File lines comment blank total avg total avg avg cnt cnt total total total ------------------------------------------------------------------------------ 412 12.48 332 10.06 3.18 33 1 479 5 62 ------------------------------------------------------------------------------
ShellMetrics tested by ShellSpec.
To test, install ShellSpec and run spellspec
on the project root directory.