The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

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

VERSION

version 0.0600

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

All attributes are calculated except for file, which is required to be given in the constructor.

file

  $file = $pmh->file;

The file to analyze.

n_operators

  $n_operators = $pmh->n_operators;

The total number of operators.

n_operands

  $n_operands = $pmh->n_operands;

The total number of operands.

n_distinct_operators

  $n_distinct_operators = $pmh->n_distinct_operators;

The number of distinct operators.

n_distinct_operands

  $n_distinct_operands = $pmh->n_distinct_operands;

The number of distinct operands.

prog_vocab

  $prog_vocab = $pmh->prog_vocab;

The program vocabulary.

prog_length

  $prog_length = $pmh->prog_length;

The program length.

est_prog_length

  $est_prog_length = $pmh->est_prog_length;

The estimated program length.

volume

  $volume = $pmh->volume;

The program volume.

difficulty

  $difficulty = $pmh->difficulty;

The program difficulty.

level

  $level = $pmh->level;

The program level.

lang_level

  $lang_level = $pmh->lang_level;

The programming language level.

intel_content

  $intel_content = $pmh->intel_content;

Measure of the information content of a program.

effort

  $effort = $pmh->effort;

The program effort.

time_to_program

  $time_to_program = $pmh->time_to_program;

The time to program (in seconds).

delivered_bugs

  $delivered_bugs = $pmh->delivered_bugs;

Delivered bugs.

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/

https://www.compuware.com/hard-can-find-halstead-maintenance-effort-metric/

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.