.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Analizo::Metric::AverageCycloComplexity 3pm" .TH Analizo::Metric::AverageCycloComplexity 3pm "2022-10-15" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Analizo::Metric::AverageCycloComplexity \- Average Cyclomatic Complexity per Method (ACCM) metric .SH "DESCRIPTION" .IX Header "DESCRIPTION" The metric calculation is based on the following article and calculates the cyclomatic complexity of the program. .PP Article: \&\fIMcCabe, Thomas J. \*(L"A complexity measure.\*(R" \s-1IEEE\s0 Transactions on software Engineering 4 (1976): 308\-320\fR. .PP The Average Cyclomatic Complexity per Method is calculated counting the predicates (i.e., decision points, or conditional paths) on each method plus one, then a mean of all methods is returned as the final value of \s-1ACCM.\s0 .PP The cyclomatic complexity of a program represented as a graph can be calculated using a formula of graph theory: .PP .Vb 1 \& v(G) = e \- n + 2 .Ve .PP Where \f(CW\*(C`e\*(C'\fR is the number of edges and \f(CW\*(C`n\*(C'\fR is the number of nodes of the graph. .PP Another good reference is: \&\fIWoodward, Martin R., Michael A. Hennell, and David Hedley. \*(L"A measure of control flow complexity in program text.\*(R" \s-1IEEE\s0 Transactions on Software Engineering 1 (1979): 45\-50\fR.