ShellMetrics is Cyclomatic Complexity Analyzer for shell script.
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/shellmetricsor
wget https://git.io/shellmetrics -O ~/bin/shellmetrics chmod +x ~/bin/shellmetricsUsage: 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.