The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Perl::Metrics::Halstead - Compute Halstead complexity metrics

VERSION

version 0.0500

SYNOPSIS

  use Perl::Metrics::Halstead;

  my $pmh = Perl::Metrics::Halstead->new(file => '/some/perl/code.pl');

  my $metrics = $pmh->dump;

  $pmh->report;

DESCRIPTION

Perl::Metrics::Halstead computes Halstead complexity metrics.

Please see the explanatory links in the "SEE ALSO" section for descriptions of what these attributes mean and how they are computed.

ATTRIBUTES

file

  $file = $pmh->file;

The file to analyze. This is a required attribute.

n_operators

  $n_operators = $pmh->n_operators;

The total number of operators. This is a computed attribute.

n_operands

  $n_operands = $pmh->n_operands;

The total number of operands. This is a computed attribute.

n_distinct_operators

  $n_distinct_operators = $pmh->n_distinct_operators;

The number of distinct operators. This is a computed attribute.

n_distinct_operands

  $n_distinct_operands = $pmh->n_distinct_operands;

The number of distinct operands. This is a computed attribute.

prog_vocab

  $prog_vocab = $pmh->prog_vocab;

The program vocabulary. This is a computed attribute.

prog_length

  $prog_length = $pmh->prog_length;

The program length. This is a computed attribute.

est_prog_length

  $est_prog_length = $pmh->est_prog_length;

The estimated program length. This is a computed attribute.

volume

  $volume = $pmh->volume;

The program volume. This is a computed attribute.

difficulty

  $difficulty = $pmh->difficulty;

The program difficulty. This is a computed attribute.

level

  $level = $pmh->level;

The program level. This is a computed attribute.

lang_level

  $lang_level = $pmh->lang_level;

The programming language level. This is a computed attribute.

intel_content

  $intel_content = $pmh->intel_content;

Amount of intelligence presented in the program. This is a computed attribute.

effort

  $effort = $pmh->effort;

The program effort. This is a computed attribute.

time_to_program

  $time_to_program = $pmh->time_to_program;

The time to program. This is a computed attribute.

delivered_bugs

  $delivered_bugs = $pmh->delivered_bugs;

Delivered bugs. This is a computed attribute.

METHODS

new()

  $pmh = Perl::Metrics::Halstead->new(file => $file);

Create a new Perl::Metrics::Halstead object given the file argument.

BUILD()

Process the given file into the computed metrics.

report()

  $pmh->report();

Print the computed metrics to STDOUT.

dump()

  $metrics = $pmh->dump();

Return a hashref of the metrics and their computed values.

SEE ALSO

The t/01-methods.t file in this distribution.

Moo

PPI::Document

PPI::Dumper

https://en.wikipedia.org/wiki/Halstead_complexity_measures

https://www.verifysoft.com/en_halstead_metrics.html

https://www.geeksforgeeks.org/software-engineering-halsteads-software-metrics/

AUTHOR

Gene Boggs <gene@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by Gene Boggs.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.